文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL5.7的AB复制以及 GTID多线程复制 配置

2024-04-02 19:55

关注

mysql AB复制

 

三台主机:MASTER IP:172.25.35.21

          SLAVE1 IP:172.25.35.22

          SLAVE2 IP:172.25.35.19

MYSQL版本:mysql5.7

 

下载安装包

mysql-community-client-5.7.11-1.el6.x86_64.rpm

mysql-community-common-5.7.11-1.el6.x86_64.rpm

mysql-community-libs-5.7.11-1.el6.x86_64.rpm

mysql-community-libs-compat-5.7.11-1.el6.x86_64.rpm

mysql-community-server-5.7.11-1.el6.x86_64.rpm

 

安装

yum install * -y    安装所有

启动 mysql    5.7版本启动时会随机生成root初始密码

cat /var/log/mysqld.log  | grep password    过滤出初始密码

 

 

初始密码为:wy+egrCeB1Ul

 

mysql_secure_installation    初始化数据库

更改数据库root密码  5.7版本要求密码包括大写和小写字母、特殊符号、数字

 

Mysql  -uroot   -p   用新更改的密码登陆

 

在master主机上

 

vim  /etc/my.cnf

添加:

server-id=1

log-bin=mysql-bin                           

binlog-do-db=moto                         同步的数据库为moto

binlog-ignore-db=mysql                      不同步 mysql

 

/etc/init.d/mysqld   restart                     每次更改完my.cnf 文件要重起mysqld

 

登陆mysql

 

mysql> CREATE DATABASE moto;    添加数据库

MySQL5.7的AB复制以及 GTID多线程复制  配置

mysql> SHOW DATABASES;      查看数据库

MySQL5.7的AB复制以及 GTID多线程复制  配置

mysql> GRANT REPLICATION SLAVE  ON *.* TO  pop@'172.25.35.22' IDENTIFIED BY 'Poiu@123';      给slave1 主机172.25.35.22 授权 可以用pop用户 登陆  

 

Mysql> SHOW MASTER STATUS;    查看MASTER 状态

MySQL5.7的AB复制以及 GTID多线程复制  配置


记下file名与position号

 

在slave1主机上

 

用pop用户登陆验证授权是否成功

[root@mysql2 mysql]# mysql -h 172.25.35.21 -u pop -p

Enter password:       输入pop用户密码

mysql> SHOW DATABASES;

MySQL5.7的AB复制以及 GTID多线程复制  配置

 

vim  /etc/my.cnf

添加:

server-id=2

/etc/init.d/mysqld   restart     重起数据库

 

登陆slave1主机的mysql

mysql> CREATE DATABASE moto;   同步之前要保证master与slave主机的数据库信息一致所以为slave1创建moto数据库

mysql>CHANGE MASTER TO MASTER_HOST=’172.25.35.21’,MASTER_USER=’pop’,

MASTER_PASSWORD=’Poiu@123’,MASTER_LOG_FILE=‘mysql-bin.000002’,MASTER_LOG_POS=1817;

mysql> START SLAVE;

mysql> SHOW SLAVE STATUS\G;   查看slave状态

MySQL5.7的AB复制以及 GTID多线程复制  配置

看到的信息与刚才设置的相同;

看到IO/SQL  为yes  表示正常

 

测试:

在master主机数据库中

 

mysql>USE moto;

mysql>CREATE TABLE GP( NUM VARCHAR(15) NOT NULL,TEAM VARCHAR(25) NOT NULL);                 创建表GP

mysql> INSERT INTO GP VALUES('93','HONDA');    给表中添加信息

mysql> INSERT INTO GP VALUES('46','YAMAHA');


MySQL5.7的AB复制以及 GTID多线程复制  配置


在slave1主机上

登陆数据库

mysql>USE moto;

mysql> SELECT * FROM GP;

MySQL5.7的AB复制以及 GTID多线程复制  配置

可以看到master刚才添加的信息已经同步到了slave主机上

单向同步完成


单向master> slave1>slave2

原理:master 作为slave1的master,slave1又作为slave2的master,逐级同步 slave2只同步slave1上的 数据而不是直接去master上取数据

 

配置:

保持master不变、添加slave2 172.25.35.19 主机

 

在slave2上安装需要的软件,启动,并更改数据库root用户密码

vim /etc/my.cnf

添加:

server-id=3      每台主机的server-id都是唯一的、开启美表一个文件功能

 

重启mysqld

####不要忘记,作同步的主机、初始的数据库状态必须保持一致,在配置slave2之前先将master上的数据库数据先复制一份给slave2并导入数据库中

 

在master上

mysqldump -u root -p  moto > moto.back     将moto数据库的信息备份一份出来

scp moto.back 172.25.35.19:/mnt        拷贝一份到slave2上

 

在slave2上

mysql -uroot -p moto < /mnt/moto.back     将备份的导入数据库中   注意slave2本地数据库重要先创建moto数据库    这时slave2与master数据库信息一致

 

在slave1上

vim /etc/my.cnf

添加:

log-bin=mysql-bin          定义二进制日志

binlog-do-db=moto      

binlog-ignore-db=mysql    

log-slave-updates

 

保存后重启mysqld服务

登陆数据库

授权:

mysql> GRANT REPLICATION SLAVE  ON *.* TO  pop@'172.25.35.19' IDENTIFIED BY 'Poiu@123';                              给slave2 主机授权

 

mysql>SHOW MASTER STATUS;

MySQL5.7的AB复制以及 GTID多线程复制  配置

在slave2主机上

进入数据库:

mysql> CHANGE MASTER TO MASTER_HOST='172.25.35.21',MASTER_USER='pop',MASTER_PASSWORD='Poiu@123',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=447;     指定同步数据的master主机是172.25.35.21   

mysql>START SLAVE;

mysql>SHOW SLAVE STATUS\G;

MySQL5.7的AB复制以及 GTID多线程复制  配置

看到IO/SQL  为yes 并且没有报错说明成功

 

当在master端改变数据库信息时、可以看到slave1和slave2主机信息都在发生改变

 

 

GTID AB复制:

 

使用master跟slave1

在master上:

Vim /etc/my.cnf

添加:

gtid-mode=on                  打开gtid模块

Enforc e-gtid-consistency=on

 

在slave1上

Vim /etc/my.cnf

注释掉刚才作为master时添加的:

#log-bin=mysql-bin

#binlog-do-db=westos

#binlog-ignore-db=mysql

#log-slave-updates

添加:

gtid-mode=on                  打开gtid模块

Enforc e-gtid-consistency=on         设置强行同步,保证主从数据的一致性

 

两台主机上重启mysqld

 

用GTID的AB复制需要重新做change master操作

 

在slave1上

进入数据库执行

mysql> change master to master_host='172.25.35.21',master_user='pop',master_password='Poiu@123',master_auto_position=1;    

 

在master上

进入数据库给共享数据库的表中做两次添加操作后可以看到slave1上

MySQL5.7的AB复制以及 GTID多线程复制  配置


GTID 多线程复制:

 

在slave1上:

Vim /etc/my.cnf

 

添加:

slave-parallel-type=LOGICAL_CLOCK      

slave-parallel-workers=16       指定线程数  官方推荐为16  0表示不使用多线程而是使用AB复制

master_info_repository=TABLE

relay_log_info_repository=TABLE

 

/etc/init.d/mysqld restart    每次更改文件后要重启数据库

 

登陆数据库

mysql> show processlist


MySQL5.7的AB复制以及 GTID多线程复制  配置




会看到有十六个线程。mysql5.7的多线程并行复制、解决了mysql以前为人诟病的复制延迟的问题,使从机的复制效率大大提升。

 

 

 

****当同步做好后slave主机上的数据不能更改、只能更改master的数据




阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯