mysql5.7 使用GTID搭建主从复制

mysql5.7GTID主从复制


mysql5.7 使用GTID搭建主从复制


GTID又叫做全局事务id(global transaction id),是已提交事务的编号,并且是一个全局唯一的编号,mysql5.6版本之后在主从复制类型上新增了GTID复制

GTID由server_uuid和事务id组成,即GTID=sever_uuid:transaction_id,server_uuid 是在数据库启动过程中产生的,每台机器都不相同,uuid存放在auto.cnf文件下。而transaction_id是事务提交时由系统顺序分配的一个不会重复的序列号。


GTID优点

1. GTID使用master_auto_position=1来替代binlog 和position来搭建主从复制,更方便

2. GTID可以知道事务最开始是在那个实例上提交的

3. GTID方便实现主从间的failover


搭建主从注意事项

4. 设置参数


主库配置:

gtid_mode=on

enforce_gtid_consistency=on

log_bin=on

binlog_format=row

server_id 不能和从库一样

从库配置:


gtid_mode=on

enforce_gtid_consistency=on

log_slave_updates=1

虽然log_slave_updates在mysql5.7之后可以关闭,使用gtid_executed这张表,但是还是建议在从库中开启(万一需要从 从库继续向下一级从库同步数据)


如果需要将从库作为主库继续向下传递数据我们还需要继续在从库上添加下面两项配置log_bin=on 和binlog_format=row

server_id 和主库不一样


实战搭建:

环境

Centos7.5 mysql5.7.24

主:10.104.143.107 从:10.104.143.108


5. 主库配置文件


log_bin=mysql3306-bin

server_id=1

#STATEMENT,ROW,MIXED

binlog_format=ROW

gtid_mode=on

enforce_gtid_consistency=on


6. 从库配置文件

log_bin=mysql3306-bin

server_id=2

#STATEMENT,ROW,MIXED

binlog_format=ROW

gtid_mode=on

enforce_gtid_consistency=on

log_slave_updates=1


7. 创建同步账号(主从都需要)

grant replication slave, replication client on *.* to repl@'10.143.143.%' identified by '123456';

flush privileges;

8. 备份主库

mysqldump -S /usr/local/mysql/mysql.sock --all-databases --single-transaction --user=root --password=123456 >/home/all.db

9. 还原从库

source /home/hadoop/master_all.db

10. 开启同步

CHANGE MASTER TO

MASTER_HOST='10.143.143.107',

MASTER_USER='repl',

MASTER_PASSWORD='123456',

MASTER_PORT=3306,

MASTER_AUTO_POSITION=1;


start slave ;

show slave status;

mysql5.7 使用GTID搭建主从复制

11. 结果校验

在主库上创建库testGTID 并创建表a

create database testGTID;

use testGTID;

create table a (id int);

Insert into a values(1);

从库上进行查询

use testGTID;

select * from a ;

mysql5.7 使用GTID搭建主从复制

到此使用GTID创建主从复制完成


分享到:


相關文章: