设为首页 加入收藏

TOP

关于 MySQL GTID 复制(一)
2019-09-03 02:47:37 】 浏览:55
Tags:关于 MySQL GTID 复制

MySQL5.7以后都基本用GTID方式复制了,相对于binlog和position号方式,在failover时候减少很多人工切换操作


GTID,global transaction identitifiers,基于全局事务的复制方式,由server_uuid:transaction_id组成,server_uuid在数据库启动过程生成,在/data/auto.cnf中


复制过程:master事务提交时GTID,记录到binlog;然后master的binlog传送到slave的relaylog,slave读取GTID生成gtid_next系统参数;slave校验GTID是否在binlog并进一步应用事务(5.7后是存放在gtid_executed系统表,这样不用开启log_slave_updates参数,从而不用把relaylog记录再记录到binlog,减少slave压力)


下面操作下:


首先主从都配置gtid_mode、enforce_gtid_consistency参数,其中备库多加个log_slave_updates=1


[root@localhost /usr/local/mysql/data]$ cat /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
log_bin=mysql-bin
server_id=1
gtid_mode=on
enforce_gtid_consistency=on
[root@localhost /usr/local/mysql/data]$
 


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


然后将之前异步复制的配置去掉,重新配置slave中主库信息即可


mysql> show variables like '%log_slave_updates%';
+-------------------+-------+
| Variable_name    | Value |
+-------------------+-------+
| log_slave_updates | ON    |
+-------------------+-------+
1 row in set (0.00 sec)
 
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
 
mysql> reset slave all;
Query OK, 0 rows affected (0.02 sec)
 
mysql> change master to
    -> master_host='192.0.1.10',
    -> master_user='scott',
    -> master_password='tiger',
    -> master_port=3306,
    -> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
 
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.0.1.10
                  Master_User: scott
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 573
              Relay_Log_

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle Linux 8.0 静默安装Oracle.. 下一篇pymysql使用指南

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目