• GTID主从复制


    一、基于GTID的主从复制

    1.什么是GTID

    1.全局事务标识符
    2.组成:UUID + TID    
    	   f03a53e0-cd46-11ea-a2c4-000c292c767e:1
    

    2.GTID主从复制的优点

    1.GTID同步时开启多个SQL线程,每一个库同步时开启一个线程,由原本的串行sql线程变成并行开启多个sql线程,加快读取中继日志速度。
    2.binlog在rows模式下,binlog内容比寻常的主从更加简洁
    3.GTID主从复制会记录主从信息,不需要手动配置binlog和位置点
    

    3.GTID主从复制的缺点

    1.备份时更加麻烦,需要额外加一个参数 --set-gtid=on
    2.主从复制出现错误,没有办法跳过错误
    

    4.搭建GTID主从复制

    1)配置三台数据库

    #配置第一台主库
    [root@db01 ~]# vim /etc/my.cnf
    [mysqld]
    server_id=1
    log_bin=/usr/local/mysql/data/mysql-bin
    
    #配置第一台从库
    [root@db02 ~]# vim /etc/my.cnf
    [mysqld]
    server_id=2
    
    #配置第二台从库
    [root@db03 ~]# vim /etc/my.cnf
    [mysqld]
    server_id=3
    

    2)查看是否开启GTID

    mysql> show variables like '%gtid%';
    +---------------------------------+-----------+
    | Variable_name                   | Value     |
    +---------------------------------+-----------+
    | binlog_gtid_simple_recovery     | OFF       |
    | enforce_gtid_consistency        | OFF       |
    | gtid_executed                   |           |
    | gtid_mode                       | OFF       |
    | gtid_next                       | AUTOMATIC |
    | gtid_owned                      |           |
    | gtid_purged                     |           |
    | simplified_binlog_gtid_recovery | OFF       |
    +---------------------------------+-----------+
    8 rows in set (0.00 sec)
    

    3)开启GTID

    #主库配置
    [root@db01 ~]# vim /etc/my.cnf
    [mysqld]
    server_id=1
    log_bin=/usr/local/mysql/data/mysql-bin
    gtid_mode=on
    enforce_gtid_consistency
    log-slave-updates
    
    #从库1的配置
    [root@db02 ~]# vim /etc/my.cnf
    [mysqld]
    server_id=2
    log_bin=/usr/local/mysql/data/mysql-bin
    gtid_mode=on
    enforce_gtid_consistency
    log-slave-updates
    
    #从库2的配置
    [root@db02 ~]# vim /etc/my.cnf
    [mysqld]
    server_id=3
    log_bin=/usr/local/mysql/data/mysql-bin
    gtid_mode=on
    enforce_gtid_consistency
    log-slave-updates
    

    4)扩展

    #配置log-slave-updates参数的场景
    1.基于GTID的主从复制
    2.双主架构+keepalived
    3.级联复制
    4.MHA
    

    5)主库创建用户

    mysql> grant replication slave on *.* to rep@'172.16.1.5%' identified by '123';
    

    6)主库数据同步到从库

    mysqldump -uroot -p -R --triggers --master-data=2 --single-transaction -A > /tmp/full.sql
    scp
    mysql < full.sql
    

    7)从库配置主从

    mysql> change master to
        -> master_host='172.16.1.51',
        -> master_user='rep',
        -> master_password='123',
        -> master_auto_position=1;
    Query OK, 0 rows affected, 2 warnings (0.03 sec)
    

    5.GTID复制和传统复制的区别

    GTID复制:
    CHANGE MASTER TO
    MASTER_HOST='10.0.0.51',
    MASTER_USER='repl',
    MASTER_PASSWORD='123' ,
    MASTER_AUTO_POSITION=1;  指明为GTID复制模式
    
    传统复制:
    CHANGE MASTER TO
    MASTER_HOST='10.0.0.51', 
    MASTER_USER='repl',
    MASTER_PASSWORD='123', 
    MASTER_PORT=3306, 
    MASTER_LOG_FILE='mysql-bin.000002', 
    MASTER_LOG_POS=887,
    MASTER_CONNECT_RETRY=10;
    
    总结:
    MASTER_AUTO_POSITION=1;  指明为GTID复制模式后,
    会自动寻找复制起点
    
  • 相关阅读:
    内网或无域名服务器集成微信公众号接口
    记录一次重新学习SetInternal和SetTimeout
    SQLServer日志过大导致还原失败的解决方案
    批量修改SQLServer数据库表字段属性
    收缩SQLServer数据库解决日志占用空间过大(2008R2以上版本)
    SAP GUI安装出现ocx错误提示的解决办法
    .NetCore自动转换枚举类显示自定义中文名称
    EFCore-脚手架Scaffold发生Build Failed问题的终极解决
    .NetCore自定义WebAPI返回Json的格式大小写的三种方式
    存储过程模糊搜索,按匹配率排序初探
  • 原文地址:https://www.cnblogs.com/tcy1/p/13378087.html
Copyright © 2020-2023  润新知