Mysql 一主多从的部署


Posted in MySQL onMay 20, 2022

1.下载地址

https://dev.mysql.com/downloads/mysql/

2.下载tar.gz包

选择redhat版本

Mysql 一主多从的部署

Mysql 一主多从的部署

3.安装

1.linux系统上创建mysql1用户

useradd mysql1

2.将tar.gz包上传到服务器上并且解压

tar -zxvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

3.将mysql-5.7.31-el7-x86_64目录下的文件mv到 /home/mysql1下

4.mkdir -p /home/mysql1/data 文件存储mysql1数据目录

mkdir -p /home/mysql1/data

5.将/etc/my.cfg文件复制到mysql家目录下

cp /etc/my.cnf /home/mysql1/

6.对/home/mysql1下赋权

chmod -R 755 /home/mysq1l
chown mysql:mysql -R /home/mysql1/data
chmod 777 /home/mysql1/data

7.修改mysql配置文件

vi /home/mysql1/my.cnf

[mysqld]
user                            = 
port                            = 3307
basedir                         = /home/mysql1
datadir                         = /home/mysql1/data
socket                          = /home/mysql1/mysql.sock
pid_file                        = /home/mysql1/mysql.pid
log_error                       = /home/mysql1/data/error.log
#binlog日志文件
log_bin                         = /home/mysql1/data/mysql-bin
relay_log                       = /home/mysql1/data/relay-bin
slow_query_log_file             = /home/mysql1/data/slow.log
#binlog过期清理时间
expire_logs_days                = 15
log-slave-updates               = 1
log_bin_trust_function_creators = 1
lower_case_table_names          = 1
max_connections                 = 3000
max_connect_errors              = 1000000 
# 每个实例的id都设置成不一样的,比如a主机,3307 b主机设置成23307,c主机设置成33307,后面1主2从会用到
server-id                       = 3307                              
autocommit                      = 1
# pool_size根据实际情况进行更新
innodb_buffer_pool_size         = 40G
innodb_buffer_pool_instances    = 8
innodb_write_io_threads         = 16
innodb_read_io_threads          = 16
#mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。对应的,binlog的格式也有三种:STATEMENT,ROW,MIXED
binlog_format                   = ROW
gtid_mode                       = on
enforce_gtid_consistency        = 1
innodb_flush_log_at_trx_commit  = 1  
#add 2                          
innodb_thread_concurrency       = 20
innodb_print_all_deadlocks      = 1
innodb_flush_method             = O_DIRECT
innodb_io_capacity              = 8000
innodb_io_capacity_max          = 15000
enforce_gtid_consistency        = 1
binlog_rows_query_log_events    = 1
character_set_server            = utf8mb4
default-storage-engine          = INNODB
transaction_isolation           = READ-COMMITTED
max_allowed_packet              = 67108864
event_scheduler                 = 1
slow_query_log                  = on
explicit_defaults_for_timestamp = 1   
master_info_repository          = TABLE
relay_log_info_repository       = TABLE
relay_log_recovery              = 1
relay_log_purge                 = 0  
slave_rows_search_algorithms    = 'INDEX_SCAN,HASH_SCAN'
slave_parallel_type             = LOGICAL_CLOCK
slave_parallel_workers          = 16
slave_preserve_commit_order     = 1
slave_transaction_retries       = 64
sync_relay_log                  = 0
sync_relay_log_info             = 0
sync_master_info                = 0
sync_binlog                     = 1
collation_server                = utf8mb4_bin
skip_name_resolve               = 1 
plugin-load                     = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled    = 1
rpl-semi-sync-slave-enabled     = 1

8.数据文件初始化

1.初始化

./mysqld --defaults-file=/home/mysql1/my.cnf --initialize --basedir=/home/mysql1 --datadir=/home/mysql1/data --user=mysql1

2.启动

./mysqld_safe --defaults-file=/home/mysql1/my.cnf --user=mysql1 &

查看mysql进程已经起来,并且监听3307接口

Mysql 一主多从的部署

3.本机登陆,root的初始密码可以在errorlog中找到

cat error.log | grep "temporary password"

Mysql 一主多从的部署

4.本机登录指定sock文件以及指定端口及输入临时密码

./mysql -uroot -P3307 -S /home/mysql1/mysql.sock -p

5. 登录后修改root密码

set password=password('XXXXXXXX'); 修改密码
flush privileges;

6. 赋予权限

grant all privileges on *.* to 'root'@'%' identified by 'XXXXXXX' with grant option;
flush privileges;

7. 停止服务

./mysqladmin shutdown -uroot -p******** -S /home/mysql1/mysql.sock

4.使用mysql客户端datagrip连接mysql成功

Mysql 一主多从的部署

5.通过如上相同操作安装从库,只修改配置文件相关信息,并且初始化,并且客户端连接

Mysql 一主多从的部署

6.在master数据库上执行

1.创建repl用户并且赋予同步权限

CREATE USER 'repl' IDENTIFIED BY 'slavepass';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by 'slavepass';
flush privileges;

Mysql 一主多从的部署

2.查看master状态

SHOW MASTER STATUS\G;

Mysql 一主多从的部署

7.在slave上面执行

1.配置slave从节点的master节点以及binlog偏移位置等

CHANGE MASTER TO MASTER_HOST='master地址',
MASTER_USER='repl',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000003', #为master的log_file
MASTER_LOG_POS=1597,       #master的POS
MASTER_PORT=3307;

Mysql 一主多从的部署

2.启动slave同步进程以及查看slave状态

start slave;  #启动slave同步进程
show slave status\G;

Mysql 一主多从的部署

8.测试

在mysql1中创建testdb,使用datagrip在mysql2中即可查看从mysql1中同步的新增的库以及数据,不过datagrip需要刷新下客户端。

Mysql 一主多从的部署

9.总结主从部署

注意主从mysql的my.cnf配置文件的server-id必须配置不一样

到此这篇关于Mysql一主多从部署的实现步骤的文章就介绍到这了!

MySQL 相关文章推荐
MySQL InnoDB ReplicaSet(副本集)简单介绍
Apr 24 MySQL
MySQL安装后默认自带数据库的作用详解
Apr 27 MySQL
MySQL 覆盖索引的优点
May 19 MySQL
Mysql 如何实现多张无关联表查询数据并分页
Jun 05 MySQL
MySQL 亿级数据导入导出及迁移笔记
Jun 18 MySQL
Node-Red实现MySQL数据库连接的方法
Aug 07 MySQL
MySQL数据库必备之条件查询语句
Oct 15 MySQL
SQL语法CONSTRAINT约束操作详情
Jan 18 MySQL
MySQL创建表操作命令分享
Mar 25 MySQL
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
Apr 09 MySQL
MySQL创建管理KEY分区
Apr 13 MySQL
MySQL的prepare使用以及遇到的bug
May 11 MySQL
mysql 排序失效
May 20 #MySQL
MySQL 自动填充 create_time 和 update_time
May 20 #MySQL
MySQL数据库 任意ip连接方法
May 20 #MySQL
MySQL GTID复制的具体使用
May 20 #MySQL
单机多实例部署 MySQL8.0.20
May 15 #MySQL
MySQL中的全表扫描和索引树扫描
MySQL sql模式设置引起的问题
May 15 #MySQL
You might like
实现php加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
php防止伪造的数据从URL提交方法
2014/06/27 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
Laravel 队列使用的实现
2019/01/08 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
javascript取消文本选定的实现代码
2010/11/14 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
jquery实现自定义图片裁剪功能【推荐】
2017/03/08 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
Python适配器模式代码实现解析
2019/08/02 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
python求解汉诺塔游戏
2020/07/09 Python
python ssh 执行shell命令的示例
2020/09/29 Python
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
出纳岗位职责模板
2013/11/27 职场文书
《狐假虎威》教学反思
2014/02/07 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
走进科学观后感
2015/06/18 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
MongoDB数据库的安装步骤
2021/06/18 MongoDB
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技