古道长亭

Contact me with ixiaoqiang0011@gmail.com


  • 首页

  • 归档

  • 分类

  • 关于

  • Book

  • 搜索

mysql 主从同步实战

时间: 2022-12-16   |   分类: mysql高级   | 字数: 737 字 | 阅读约: 2分钟 | 阅读次数:

mysql 主从同步实战

主从同步

1. Master配置

  • vim /etc/my.cnf 添加以下bin_log配置

    #bin_log配置 
    log_bin=mysql-bin 
    server-id=1 
    sync-binlog=1 
    binlog-ignore-db=information_schema 
    binlog-ignore-db=mysql 
    binlog-ignore-db=performance_schema 
    binlog-ignore-db=sys
    #relay_log配置 
    relay_log=mysql-relay-bin 
    log_slave_updates=1 
    relay_log_purge=0
    
  • 重启服务 systemctl restart mysqld

  • 主库给从库授权

    grant replication slave on *.* to root@'%' identified by '123456'; 
    grant all privileges on *.* to root@'%' identified by '123456';
    flush privileges;
    
    //查看主库状态信息,例如master_log_file='mysql-bin.000007',master_log_pos=154 
    show master status;
    

2. Slave配置

  • 修改Slave的MySQL配置文件my.cnf,两台Slave的server-id分别设置为2和3

    #bin_log配置 
    log_bin=mysql-bin 
    #服务器ID,从库1是2,从库2是3 
    server-id=2 
    sync-binlog=1 
    binlog-ignore-db=information_schema 
    binlog-ignore-db=mysql 
    binlog-ignore-db=performance_schema 
    binlog-ignore-db=sys 
    #relay_log配置 
    relay_log=mysql-relay-bin 
    log_slave_updates=1 
    relay_log_purge=0 
    read_only=1
    
  • 重启服务 systemctl restart mysqld

  • 开启同步

    登录MySQL,在Slave节点的MySQL命令行执行同步操作,例如下面命令(注意参数与上面show master status操作显示的参数一致)

    change master to master_host='192.168.31.199',master_port=3306,master_user='root',master_password ='123456',master_log_file='mysql-bin.000007',master_log_pos=154; 
    # master_log_file 和 master_log_pos都是从 show master status取
    
    start slave; // 开启同步
    

接下来就可以测试了

半同步复制配置

1. master节点

  • 登录mysql 安装插件

    install plugin rpl_semi_sync_master soname 'semisync_master.so'; 
    show variables like '%semi%';
    
  • vim /etc/my.cnf

    # 自动开启半同步复制 
    set global rpl_semi_sync_master_enabled = ON;
    
    # 开启以后在配置文件中添加 每次重启就默认开启
    rpl_semi_sync_master_enabled=ON 
    rpl_semi_sync_master_timeout=1000
    
  • 重启服务 systemctl restart mysqld

2. Slave配置

  • 登录mysql, 执行以下命令

    install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
    
  • vim /etc/my.cnf

    # 自动开启半同步复制 
    rpl_semi_sync_slave_enabled=ON 
    
  • 重启服务

3. 测试半同步

  • show variables like ‘%semi%’;

  • cat /var/log/mysqld.log

  • 可以看到日志中已经启动半同步

    Start semi-sync binlog_dump to slave (server_id: 2), pos(mysql-bin.000005, 154)
    

并行复制配置

1. Master

  • show variables like ‘%binlog_group%’;

  • 设置参数

    set global binlog_group_commit_sync_delay=1000;
    set global binlog_group_commit_sync_no_delay_count=10;
    

2. Slave

  • 设置参数1

    show variables like '%slave_parallel%';
    
    #先停止
    stop slave;
    
    set global slave_parallel_type='LOGICAL_CLOCK';
    set global slave_parallel_workers=8;
    
    start slave;
    
    #最好写到配置文件, 因为重启后就失效了, 配置完要重启
    slave_parallel_type=LOGICAL_CLOCK
    slave_parallel_workers=8
    relay_log_info_repository=TABLE
    
  • 设置参数2

    show variables like '%relay_log%';
    
    #以下需要到my.cnf配置
    relay_log_recovery=1
    
  • 查看

    select * from performance_schema.replication_applier_status_by_worker;
    #可以查看到worker_id等
    

注意: 参数生效最好配置到my.conf中, 这样在重启的时候,可以继续生效

#mysql# #主从同步#
QQ扫一扫交流

标题:mysql 主从同步实战

作者:古道长亭

声明: 欢迎加群交流!

如有帮助,欢迎多多交流 ^_^

微信打赏

支付宝打赏

mysql 读写分离实战
mysql 集群架构
  • 文章目录
  • 站点概览
古道长亭

古道长亭

Always remember that your present situation is not your final destination. The best is yet to come.

226 日志
57 分类
104 标签
GitHub Gitee
友情链接
  • 古道长亭的BOOK
  • JAVA学习
标签云
  • Mysql
  • 搜索引擎
  • Mybatis
  • 容器
  • 架构
  • 消息队列
  • Flink
  • Sharding sphere
  • 流处理
  • 缓存
  • 主从同步
    • 1. Master配置
    • 2. Slave配置
  • 半同步复制配置
    • 1. master节点
    • 2. Slave配置
    • 3. 测试半同步
  • 并行复制配置
    • 1. Master
    • 2. Slave
© 2019 - 2024 京ICP备19012088号-1
0%