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端)

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

    [root@server1 ~]# 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包即可,其余包可删除
    [root@server1 ~]# yum install *.rpm ##开始安装
    [root@server1 ~]# 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 root@172.25.42.2:/root ##将安装包发给slave端

  • 数据库的开启与初始化

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

在这里插入图片描述
"root@localhost:"后的内容为数据库的初始密码
[root@server1 ~]# 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”
在这里插入图片描述

  • 登陆查看并修改配置文件
    [root@server1 ~]# mysql -uroot -pWsp+123ld
    在这里插入图片描述
    [root@server1 ~]# vim /etc/my.cnf##修改配置文件
    在这里插入图片描述
    [root@server1 ~]# systemctl restart mysqld##重启服务

  • 创建用户授权
    grant replication slave on . to repl@‘172.25.42.%’ identified by ‘Wsp+123ld’;
    在这里插入图片描述
    show variables like ‘log_%’;##查看二进制日志是否打开
    在这里插入图片描述

    show master status;查看主库状态

在这里插入图片描述

  • server2端配置(slave端)

  • 安装mysql的rpm包
    [root@server2 ~]# yum install *.rpm -y
    在这里插入图片描述

  • 数据库初始化;
    1.开启数据库查看密码
    [root@server2 ~]# systemctl start mysqld
    [root@server2 ~]# cat /var/log/mysqld.log | grep password
    2019-07-27T05:24:20.081544Z 1 [Note] A temporary password is generated for root@localhost: !uOuaRHka8LF
    在这里插入图片描述
    2.初始化
    [root@server2 ~]# mysql_secure_installation
    在这里插入图片描述
    初始化的选项与主备相同
    在这里插入图片描述
    3.登陆查看
    [root@server2 ~]# mysql -uroot -pWsp+123ld
    在这里插入图片描述
    查看授权是否成功
    在这里插入图片描述

  • 编写配置文件并重启mysqld服务
    [root@server2 ~]# vim /etc/my.cnf
    [root@server2 ~]# systemctl restart mysqld
    在这里插入图片描述

  • 从设备同步主设备的数据配置
    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;
    在这里插入图片描述

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

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

在这里插入图片描述

  • 测试
  • 在主库中建立数据库并插入数据
    create database westos;
    use westos;
    在这里插入图片描述
  • 在从库中查看数据是否同步
    在这里插入图片描述

基于gtid的异步复制

  • 主端配置

添加配置文件如下
[root@server1 mysql]# vim /etc/my.cnf
在这里插入图片描述
重启服务
[root@server1 ~]# systemctl restart mysqld

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

  • 从端配置
    1.添加配置文件
    [root@server1 mysql]# vim /etc/my.cnf
    在这里插入图片描述
    2.重启服务
    [root@server2 ~]# systemctl restart mysqld

    3.停止slave,添加新的模式同步并开启slave
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    Master_UUID为主端的uuid

  • 测试

主库中插入数据:
在这里插入图片描述
从库中查看:

在这里插入图片描述

基于git的半同步复制

  • 主端的配置

  • 安装服务插件
    在这里插入图片描述

  • 开启半同步复制并查看响应变量
    在这里插入图片描述
    查看环境变量:
    在这里插入图片描述
    查看状态变量:
    在这里插入图片描述

  • 从端的配置

  • 安装服务插件并开启半同步复制
    在这里插入图片描述

  • 查看环境变量
    在这里插入图片描述

  • 重启io线程使得同步方式变为半同步复制,若不重启,则默认方式依旧为异步复制
    在这里插入图片描述

  • 测试

  • 从端关闭io线程
    在这里插入图片描述

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

  • 在主端查看半同步复制的情况
    在这里插入图片描述
    Rpl_semi_sync_master_no_tx | 2 表示没有成功接受到slave的次数,若以半同步方式连接,其大小应该为0
    Rpl_semi_sync_master_yes_tx | 0 表示成功接受到slave的次数,若大与0则表示以半同步方式连接。

  • 在从端查看数据

在这里插入图片描述
这些数据都是以异步复制所同步的数据。若不开启io线程,这些数据也无法同步。当io线程开启的时候会以半同步复制的方式进行同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值