Mysql5.7配置主从同步

写在最前面:首先两个服务器master和slave,都按照好mysql
在这里插入图片描述

一、主从同步配置

  1. master配置
    1)配置my.cnf文件

    cd /etc
    vim my.cnf
    

    新增

    log_bin=mysql-bin
    server-id=1
    sync-binlog=1
    binlog-ignore-db=performance_schema
    binlog-ignore-db=information_schema
    binlog-ignore-db=sys
    

    在这里插入图片描述
    配置完后重启mysql

    service mysql restart
    

    2)授权

    mysql -uroot -p
    mysql> grant replication slave on *.* to 'root'@'%' identified by 'root';
    mysql> grant all privileges on *.* to 'root'@'%' identified by 'root';
    mysql> flush privileges;
    

    查看:

    mysql> show master status;
    

    在这里插入图片描述
    FILE和Position后续配置要用到

  2. slave配置
    1)配置my.cnf文件

    cd /etc
    vim my.cnf
    

    新增

    server-id=2
    relay_log=mysql-relay-bin
    read_only=1
    

    配置完后重启mysql

    service mysql restart
    

    确认:

    mysql -uroot -p
    mysql> show slave status;
    

    返回无即可,已存在要停止
    在这里插入图片描述
    2)初始化

    mysql> change master to master_host='192.168.200.128',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=869;
    mysql> start slave;
    

    其中master_log_file和master_log_pos就是master status里的FILE和Position
    检查:

    mysql> show slave status \G;
    

    在这里插入图片描述
    这样主从同步就配置好了

二、半同步复制

为了提升数据安全,MySQL让Master在某一个时间点等待Slave节点的 ACK(Acknowledge character)消息,接收到ACK消息后才进行事务提交,这也是半同步复制的基础,MySQL从5.5版本开 始引入了半同步复制机制来降低数据丢失的概率。
在这里插入图片描述

  1. master安装插件SEMI
    1)查看是否支持插件

    mysql -uroot -p
    

    查看是否支持插件安装

    mysql> select @@have_dynamic_loading;
    

    在这里插入图片描述
    2)查看当前插件

    mysql> show plugins;
    

    在这里插入图片描述
    3)安装

    mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
    

    查看:

    mysql> show variables like '%semi%';
    

    在这里插入图片描述
    4)开启

    mysql> set global rpl_semi_sync_master_enabled=1;
    mysql> set global rpl_semi_sync_master_timeout=1000;
    

    查看:mysql> show variables like ‘%semi%’;

    在这里插入图片描述

  2. slave安装插件SEMI
    1)安装

    mysql -uroot -p
    mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
    

    查看:

    show variables like '%semi%';
    

    在这里插入图片描述
    2)开启

    mysql> set global rpl_semi_sync_slave_enabled=1;
    

    在这里插入图片描述

三、并行复制

MySQL的主从复制延迟一直是受开发者最为关注的问题之一,MySQL从5.6版本开始追加了并行复制功能,目的就是为了改善复制延迟问题,并行复制称为enhanced multi-threaded slave(简称MTS)

在从库中有两个线程IO Thread和SQL Thread,都是单线程模式工作,因此有了延迟问题,可以采用多线程机制来加强,减少从库复制延迟。(IO Thread多线程意义不大,主要指的是SQL Thread多线 程)

在MySQL的5.6、5.7、8.0版本上,都是基于上述SQL Thread多线程思想,不断优化,减少复制延迟

为了兼容MySQL 5.6基于库的并行复制,5.7引入了新的变量slave-parallel-type,其可以配置的值有: DATABASE(默认值,基于库的并行复制方式)、LOGICAL_CLOCK(基于组提交的并行复制方式)

  1. master配置
    1)查看binlog_group

    mysql -uroot -p
    mysql> show variables like '%binlog_group%';
    

    在这里插入图片描述
    2)参数设置

    mysql> set global binlog_group_commit_sync_delay=1000;
    mysql> set global binlog_group_commit_sync_no_delay_count=100;
    

    查看:

    mysql> show variables like '%binlog_group%';
    

    在这里插入图片描述

  2. slave配置
    1)查看slave_parallel_type和relay_log

    mysql -uroot -p
    mysql> show variables like '%slave_para%';
    mysql> show variables like '%relay_log%';
    

    在这里插入图片描述
    在这里插入图片描述
    2)修改slave_parallel_type和relay_log

    mysql> set global relay_log_recovery=1;
    

    提示:ERROR 1238 (HY000): Variable ‘relay_log_recovery’ is a read only variable
    所以直接在配置文件里修改

    vim /etc/my.cnf
    

    进入配置文件,添加:

    slave-parallel-type=LOGICAL_CLOCK
    slave-parallel-workers=8
    master_info_repository=TABLE
    relay_log_recovery=1
    relay_log_info_repository=TABLE
    

    重启

    service mysql restart
    

    查看

    在这里插入图片描述
    在这里插入图片描述
    这样就完成配置了
    验证的话可以在master新建库和表及数据,在slave观察同步情况,以及在日志里查看采用了那种同步。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值