MySQL的GTID复制

MySQL在5.6后多了一个新的功能就是在做主从复制时使用GTID,和传统的使用relaylog中指定log_pos+log_file的主从复制相比,在使用GTID做主从复制时可以不指定slave需求读取master中的哪一个binlog和偏移量。在传统的MySQL主从复制中,一旦指定错误master的偏移量后,那么就会造成主从不一致,而在基于GTID做的主从复制中就不会发生这样的问题。GTID实际上是master提交了一次事务后而产生的ID,所以在配置的过程中一般都会开启enforce_gtid_consistency(强制事务一致)的配置参数以确保GTID的安全,但是需要注意的是如果开启了开启enforce_gtid_consistency,那么在在事务中就不能创建和删除临时表,这一点需要注意,如创建临时表:

create  temporary  table
建议改成
create  table
log_slave_updates = on
gtid_mode = on
enforce_gtid_consistency = on
在slave下建议开启只读:
read_only = on

其处,在配置的过程中最好把master的写入关闭,开启只读:

mysql>  set  global  read_only =  ON ;
Query OK, 0  rows  affected (0.00 sec)

在开启相应的变量参数后,在slave上做指向和log_pos+log_file的主从复制相比只要使用master_auto_position即可

change master  to  master_host= '192.168.168.253' ,master_user= 'test_backup' ,master_password= 'test_backup' ,master_auto_position = 1;

在开启后可以查看GTID参数变量:

mysql> show global variables like  '%GTID%' ;

当然为了服务高可用,在使用GTID时MySQL也会开启log_pos+log_file,只是我们就不需要想以前那样手动指向log_pos+log_file,因此使用GTID的方式做主从复制修复时还和以前不一样:

mysql> change master  to  master_auto_position=0;
Query OK, 0  rows  affected (0.08 sec)
  
mysql> change master  to  master_host= '192.168.168.253' ,master_user= 'test_backup' ,master_password= 'test_backup' ,master_log_file= 'mysql-bin.000014' ,master_log_pos=405051906;
Query OK, 0  rows  affected, 2 warnings (0.01 sec)
  
mysql> start slave;
Query OK, 0  rows  affected (0.01 sec)

猜你喜欢

转载自www.linuxidc.com/Linux/2017-09/146664.htm
今日推荐