GTID是5.6时加入的,在5.7中被进一步完善,生产环境建议在5.7版本中使用.
GTID全称为Global Transaction Identifiers,全局事务标识符.
GTID的复制完全是基于事务的,每一个事务对应一个GTID.因此事务执行具有唯一ID,
主从复制时,无需再指定POS位置,只要对比ID有没被执行过,并且每个ID仅执行一次.

GTID复制限制:

不支持涉及非事务存储引擎的更新
不支持CREATE TABLE … SELECT语句
不支持针对临时表的操作: CREATE TEMPORARY TABLE和DROP TEMPORARY TABLE
配置tips

notice:主从都需要开启gtid_mode模式.
使用GITD复制模式官方建议使用row复制模式,具有最高性能.
一主多从模式下更能体现出多线程的性能;

MySQL5.7.x编译安装方法,参考https://www.aliang.org/MySQL/Centos7-3-install-MySQL5-7-17.html

Master my.cnf配置片段

[mysqld]
server-id = 1 #服务器id
gtid_mode = on #开启gtid模式
log-bin = /data/mysql/binlog/master-binlog #开启binlog
enforce_gtid_consistency = 1 #强制gtid一致性,开启后对于特定create table不被支持
log_slave_update = 1 #开启从库写入binlog
binlog_format = row #binlog开启row模式
relay_log_recovery = 1 #开启中继日志完整性(当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。)
sync-binlog = 1 #强制将binlog_cache写入磁盘,一致性要求不高的场景下设置为0可关闭,性能会大幅提速数倍
skip_slave_start = 1 #使slave在mysql启动时不启动复制进程,使用 start slave启动

Slave my.cnf配置片段

[mysqld]
server-id = 5 #服务器id
gtid_mode = on #开启gtid模式
log-bin = /data/mysql/binlog/slave-binlog #开启binlog
enforce_gtid_consistency = 1 #强制gtid一致性,开启后对于特定create table不被支持
log_slave_update = 1 #开启从库写入binlog
binlog_format = row #binlog开启row模式
relay_log_recovery = 1 #开启中继日志完整性(当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。)
sync-binlog = 1 #强制将binlog_cache写入磁盘,一致性要求不高的场景下设置为0可关闭,性能会大幅提速数倍
skip_slave_start = 1 #使slave在mysql启动时不启动复制进程,使用 start slave启动

基于GTID的复制

在Master上创建主从复制账号

grant replication slave on *.* to 'repl'@'192.168.121.%' identified by '12345678';
flush privileges;

在Slave上执行

CHANGE MASTER TO MASTER_HOST='192.168.121.163',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='12345678',MASTER_AUTO_POSITION=1;
START SLAVE;
SHOW SLAVE STATUS\G;

查看主要参数
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
是否一致,然后可以测试主从同步了,master上创建库,查看slave是否同步·

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.121.163
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mybinlog.000002
Read_Master_Log_Pos: 620
Relay_Log_File: c69-164-relay-bin.000002
Relay_Log_Pos: 723
Relay_Master_Log_File: mybinlog.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 620
Relay_Log_Space: 932
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 91a08937-7b0b-11e7-9575-52540061843d
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: 91a08937-7b0b-11e7-9575-52540061843d:2-3
Executed_Gtid_Set: 415de1ab-7b4b-11e7-b279-525400f4de41:1,
91a08937-7b0b-11e7-9575-52540061843d:1-3
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec) 实例配置: 从库my.cnf:
[root@gpu010 rds04]$cat backup-my.cnf
# This MySQL options file was generated by innobackupex. # The MySQL server
[mysqld]
port = 3308
#innodb_checksum_algorithm=innodb
#innodb_log_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1572864000
#innodb_fast_checksum=false
#innodb_page_size=16384
#innodb_log_block_size=512
innodb_undo_directory=.
innodb_undo_tablespaces=0
server-id = 17
binlog-format = ROW
gtid-mode = ON
enforce-gtid-consistency = true
log-bin = hostname-bin
relay-log = hostname-relay-bin
relay_log_recovery = 1
sync-binlog = 0
skip_slave_start = 1
#rds_encrypt_data=false
#innodb_encrypt_algorithm=aes_128_ecb

  

xtrabackup_slave_info 文件内容
[root@gpu010 rds04]$cat xtrabackup_slave_info
SET GLOBAL gtid_purged='0c0b921a-5808-11e8-9b90-6c92bf623e12:1-589397257, f13130e5-5807-11e8-9b8f-7cd30ae4341e:1-725361734';
CHANGE MASTER TO MASTER_AUTO_POSITION=1;

主从配置过程:
mysql> stop slave;
Query OK, 0 rows affected (0.05 sec) mysql> SET GLOBAL gtid_purged='0c0b921a-5808-11e8-9b90-6c92bf623e12:1-589397257, f13130e5-5807-11e8-9b8f-7cd30ae4341e:1-725361734';
Query OK, 0 rows affected (0.00 sec) mysql> change master to master_host='rm-bp1i0***********cs.com',master_user='zh****in',master_port=3306,master_password='8*******',master_auto_position=1; mysql> start slave;
Query OK, 0 rows affected (0.16 sec) mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Queueing master event to the relay log
Master_Host: rm-b**************cs.com
Master_User: zh******in
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.024340
Read_Master_Log_Pos: 284315203
Relay_Log_File: hostname-relay-bin.000002
Relay_Log_Pos: 171740
Relay_Master_Log_File: mysql-bin.024340
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

  

 
 

MySQL5.7.18基于GTID的主从复制过程实现的更多相关文章

  1. mysql5.7.26 基于GTID的主从复制环境搭建

    简单工作原理: (1)从库执行 change master to 语句,会立即将主库信息记录到master.info中 (2)从库执行 start slave语句,会立即生成IO_T和SQL_T (3 ...

  2. MySQL5.6:基于GTID的主从复制

    一.GTID简介 MySQL 5.6 的新特性之一,是加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力. 什么是GTID? 官方文档:http://dev.mysq ...

  3. Mysql5.7实现主从复制、基于GTID的主从复制、并行复制

    (一.主从复制) 一.mysql主从复制原理    mysql的默认复制方式是主从复制.Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制, ...

  4. mysql主从之基于gtid的主从复制

    一 GITD介绍 1.1 gtid的含义 Global Transaction Identifier,全局事务标识 阿里云的rds目前已经使用gtid 基于gtid的主从复制原理 每个mysql数据库 ...

  5. percona mysql server5.7基于gtid的主从复制

    配置mysql基于gtid主从复制架构 一.二进制安装mysql [root@node5 data]# --Linux.x86_64.ssl101.tar.gz [root@node5 data]# ...

  6. MySQL5.7配置基于GTID的复制

    MySQL5.7下配置GTID复制的方法: 修改主库和从库的配置文件,加入下列部分的配置项:主库:[mysqld]log-bin=mysql-binbinlog_format= ROWgtid-mod ...

  7. 实现mysql的读写分离(mysql-proxy)____1(mysql的主从复制,基于gtid的主从复制,半同步复制,组复制)

    主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生成一个 log ...

  8. mysql5.7.18的安装与主从复制

    CentOS6.7安装mysql5.7.18 1.  解压到/usr/local目录 # tar -zxvf mysql-5.7.18-linux-glibc2.5-i686.tar.gz -C /u ...

  9. MySQL5.6基于GTID的主从复制配置

    全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性. GTID实际上是由UUID+TID组成的.其中UUID是一个MySQL实例的唯一标 ...

随机推荐

  1. TQ2440实现触摸屏和qt图形 解决segmentation fault

    使用触摸屏,首先安装触摸屏矫正程序. 下载并解压tslib-1.4,进入主文件夹,运行: 1 [root@localhost ~]#./autogen.sh 2 [root@localhost ~]# ...

  2. 常用数据类型对应字节数,int长度

    常用数据类型对应字节数: 这两台机器,前者32位,后者64位,测试了以下数据类型的长度: 前者: ,, 后者: ,, 不是说int会变吗,为何变得是long? 还有如果要写个通用的程序,订死必须用4个 ...

  3. 从原型模式(Prototype Pattern)到 Clone

    前面提到抽象工厂的实现,这里说说抽象工厂的原型实现,与工厂方法的实现不同,原型实现有他自己的优点和缺点 原型的优点: 1. 效率:clone是native方法,比new的效率高,当使用复杂循环嵌套对象 ...

  4. 某浪PHP面试题及答案优化

    前几天一网友去国内某知名IT公司某浪面试PHP,在他谈心得的时候得一面试题,下面写问题答案及优化方案,希望大家多提提意见. “神马,杨辉三角?” 我估计太久不上学了,当年初中数学及大学C语言课上的杨辉 ...

  5. Java JDBC数据库链接

    好久没有编写有关数据库应用程序啦,这里回顾一下java JDBC. 1.使用Java JDBC操作数据库一般需要6步: (1)建立JDBC桥接器,加载数据库驱动: (2)连接数据库,获得Connect ...

  6. Linux 挂载和卸载U盘

    一般的U盘挂载方法: mount [-fnrsvw]  [-t vfstype] [-o options] device dir 参数:device表示要挂载的设备,dir表示挂载点 -t 指定设备的 ...

  7. Discuz常见小问题-如何修改顶部导航

    1 除了主导航,我们还有一些其他的导航菜单需要设置,比如顶部导航栏,注意系统内置的最好不要修改,如果我不想显示系统内置的,则取消勾选即可.下面我自己做了两个新的顶部导航超链接,分别指向新的站外的地址. ...

  8. 算法笔记_173:历届试题 斐波那契(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 斐波那契数列大家都非常熟悉.它的定义是: f(x) = 1 .... (x=1,2) f(x) = f(x-1) + f(x-2) ... ...

  9. 笔试题之java基础

    Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他.有些题来自网上搜集整理,有些题来自传智 ...

  10. 短信api接口

    1.需要用到的结构 typedef struct _SM_PARAM { char SCA[16];//+8613552678753// 短消息服务中心号码(SMSC地址) char TPA[16]; ...