Mysql的主从复制,基于gtid的主从复制与半同步复制

mysql的主从复制
mysqldump --all-databases --master-data > dbdump.db

主机名(ip) 用途
server1(172.25.42.1) master(主机)
server2(172.25.42.2) slave(从机)
  • server1端的配置(master端)

  • 安装包解压并删除不需要的安装后安装

    [[email protected] ~]# ls
    mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
    mysql-community-client-5.7.24-1.el7.x86_64.rpm
    mysql-community-common-5.7.24-1.el7.x86_64.rpm
    mysql-community-libs-5.7.24-1.el7.x86_64.rpm
    mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm
    mysql-community-server-5.7.24-1.el7.x86_64.rpm
    留下五个rpm包即可,其余包可删除
    [[email protected] ~]# yum install *.rpm ##开始安装
    [[email protected] ~]# scp mysql-community-libs-5.7.24-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm mysql-community-client-5.7.24-1.el7.x86_64.rpm mysql-community-common-5.7.24-1.el7.x86_64.rpm mysql-community-server-5.7.24-1.el7.x86_64.rpm [email protected]:/root ##将安装包发给slave端

  • 数据库的开启与初始化

[[email protected] ~]# systemctl start mysqld##开启数据库
[[email protected] ~]# cat /var/log/mysqld.log | grep password##查找密码

Mysql的主从复制,基于gtid的主从复制与半同步复制
"[email protected]:"后的内容为数据库的初始密码
[[email protected] ~]# mysql_secure_installation ##初始化数据库
“Enter password for user root”后输入查找的初始密码就可以进行初始化,设置的新密码必须含有大写字母,小写字母,特殊符号与数字
选择“Change the password for root ? ((Press y|Y for Yes, any other key for No) :”为n
其余选项都选择“y”
Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 登陆查看并修改配置文件
    [[email protected] ~]# mysql -uroot -pWsp+123ld
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    [[email protected] ~]# vim /etc/my.cnf##修改配置文件
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    [[email protected] ~]# systemctl restart mysqld##重启服务

  • 创建用户授权
    grant replication slave on . to [email protected]‘172.25.42.%’ identified by ‘Wsp+123ld’;
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    show variables like ‘log_%’;##查看二进制日志是否打开
    Mysql的主从复制,基于gtid的主从复制与半同步复制

    show master status;查看主库状态

Mysql的主从复制,基于gtid的主从复制与半同步复制

  • server2端配置(slave端)

  • 安装mysql的rpm包
    [[email protected] ~]# yum install *.rpm -y
    Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 数据库初始化;
    1.开启数据库查看密码
    [[email protected] ~]# systemctl start mysqld
    [[email protected] ~]# cat /var/log/mysqld.log | grep password
    2019-07-27T05:24:20.081544Z 1 [Note] A temporary password is generated for [email protected]: !uOuaRHka8LF
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    2.初始化
    [[email protected] ~]# mysql_secure_installation
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    初始化的选项与主备相同
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    3.登陆查看
    [[email protected] ~]# mysql -uroot -pWsp+123ld
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    查看授权是否成功
    Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 编写配置文件并重启mysqld服务
    [[email protected] ~]# vim /etc/my.cnf
    [[email protected] ~]# systemctl restart mysqld
    Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 从设备同步主设备的数据配置
    change master to master_host=‘172.25.42.1’,master_user=‘repl’,master_password=‘Wsp+123ld’,master_log_file=‘mysql=bin.000002’,master_log_pos=447;
    Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 开启从设备查看其状态
    start slave;##开启从设备
    show slave status \G;##查看状态

只有当显示为黑色的两行都为yes说明同步成功,否则失败。

Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 测试
  • 在主库中建立数据库并插入数据
    create database westos;
    use westos;
    Mysql的主从复制,基于gtid的主从复制与半同步复制
  • 在从库中查看数据是否同步
    Mysql的主从复制,基于gtid的主从复制与半同步复制

基于gtid的异步复制

  • 主端配置

添加配置文件如下
[[email protected] mysql]# vim /etc/my.cnf
Mysql的主从复制,基于gtid的主从复制与半同步复制
重启服务
[[email protected] ~]# systemctl restart mysqld

查看主端的uuid
[[email protected] ~]# cd /var/lib/mysql
[[email protected] mysql]# cat auto.cnf
[auto]
server-uuid=00e50136-b022-11e9-8bf5-52540062d8e1

  • 从端配置
    1.添加配置文件
    [[email protected] mysql]# vim /etc/my.cnf
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    2.重启服务
    [[email protected] ~]# systemctl restart mysqld

    3.停止slave,添加新的模式同步并开启slave
    Mysql的主从复制,基于gtid的主从复制与半同步复制

    Mysql的主从复制,基于gtid的主从复制与半同步复制
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    Master_UUID为主端的uuid

  • 测试

主库中插入数据:
Mysql的主从复制,基于gtid的主从复制与半同步复制
从库中查看:

Mysql的主从复制,基于gtid的主从复制与半同步复制

基于git的半同步复制

  • 主端的配置

  • 安装服务插件
    Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 开启半同步复制并查看响应变量
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    查看环境变量:
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    查看状态变量:
    Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 从端的配置

  • 安装服务插件并开启半同步复制
    Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 查看环境变量
    Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 重启io线程使得同步方式变为半同步复制,若不重启,则默认方式依旧为异步复制
    Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 测试

  • 从端关闭io线程
    Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 在主端插入数据
    第一次在默认10s后确认slave挂掉后,会自动转变默认方式为异步复制,所以第二次插入数据的时间壁第一次插入时间要少10s左右,第一次插数据多余的10s左右的时间就是默认以半同步方式连接的时间,10s内若依旧无法连接则会改变备份方式为异步复制。
    Mysql的主从复制,基于gtid的主从复制与半同步复制

  • 在主端查看半同步复制的情况
    Mysql的主从复制,基于gtid的主从复制与半同步复制
    Rpl_semi_sync_master_no_tx | 2 表示没有成功接受到slave的次数,若以半同步方式连接,其大小应该为0
    Rpl_semi_sync_master_yes_tx | 0 表示成功接受到slave的次数,若大与0则表示以半同步方式连接。

  • 在从端查看数据

Mysql的主从复制,基于gtid的主从复制与半同步复制
这些数据都是以异步复制所同步的数据。若不开启io线程,这些数据也无法同步。当io线程开启的时候会以半同步复制的方式进行同步。