mysql基于gtid复制

 

目录

 

1,什么是GTID?

2,步骤:

<1>在主库上创建复制账号

<2>配置主数据库服务器

<3>配置从数据库服务器

<4>初始化从服务器的数据

<5>启动基于gtid的复制

3,优缺点:


1,什么是GTID?

gtid即全局事务id,其保证为每一个在主上提交的事务,在复制集群中可以生成一个唯一的id

GTID = source_id(主库server的 uuid的值,是在mysql首次启动时自动生成的,保存在数据库的数据目录中):transaction_id(事务的自增id)

 

2,步骤:

 

<1>在主库上创建复制账号

 

create user zhaoheng@'192.168.195.%' identified by 'zh179883';

#(允许该用户访问主库和从库,这是一个全局权限,必须对所有数据库设置该权限)

grant replication slave on *.* to zhaoheng@'192.168.195.%';

注意:建立账号时不要在从服务器上建立相同账号,因为基于gtid,会把没有在从上执行的事务都同步到从上去,这样启动复制链路会出现错误

 

<2>配置主数据库服务器

 

建议配置:从服务器连接主服务器的配置信息,及中继日志的存储方式

[mysqld]

log_bin = /var/lib/mysql/bin-log
binlog_format = row
server_id=1

gtid_mode = ON

enforce_gtid_consistency = ON

log_slave_updates = ON

master_info_repository = TABLE

relay_log_info_repository = TABLE

查看主库GTID是否开启

mysql> show variables like "%gtid%";

<3>配置从数据库服务器

在二进制日志中,会额外记录每一个事务的gtid标识符

用于保证启动后事务的安全

MySQL5.6及以前,要配置log-slave-updates=on,否则gtid模式无法启动

[mysqld]
log_bin = /var/lib/mysql/bin-log
server_id =138
binlog_format = row
relay_log=mysql-relay-bin
read_only=on

gtid_mode = ON

enforce_gtid_consistency = ON

log_slave_updates = ON

master_info_repository = TABLE

relay_log_info_repository = TABLE

<4>初始化从服务器的数据

mysqldump  -u root -p  --single-transaction --master-data --triggers --routines --all-databases > all.sql
 
将sql文件传到从库上
 
scp all.sql root@192.168.195.138:/home
 
从服务器导入数据
 
mysql -uroot -p <all.sql

<5>启动基于gtid的复制

change master to master_host='192.168.195.137', 
    -> master_user='zhaoheng', 
    -> master_password='zh179883', 
    -> master_auto_position = 1;

 

3,优缺点:

基于日志的复制,需要我们指定二进制日志的偏移量,如果指定不一致就会造成遗漏或重复

基于gitd复制,从库会告诉主库已执行事务的gtid值,主库将未执行事务的gtid值告诉从库,这样就可以保证同一个事务在指定的库中执行一次

相比于基于日志点的复制,基于gtid可以很方便的进行故障转移,因为gtid是全局唯一的标识符,根据gtid就可以知道哪些事务是没有在从库中执行的,不用根据主的二进制日志偏移量来进行同步了

 

如何选择:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值