您的位置:首页 > 数据库 > MySQL

MySQL优化之七--Mysql基于GTID的主从复制

2016-08-01 15:13 148 查看

1、什么是GTID

GTID(Global Transaction Identifiers)是全局事务标识 
当使用GTIDS时,在主上提交的每一个事务都会被识别和跟踪,并且运用到所有从MySQL,而且配置主从或者主从切换时不再需要指定 master_log_files和master_log_pos;由于GTID-base复制是完全基于事务的,所以能很简单的决定主从复制的一致性;官方建议Binlog采用Row格式。

2、GTID的表示方式

source_id:transaction_id 
source_id:表示执行事务的主库的UUID(server_uuid:Mysql5.6的data目录下启动时会生成auto.cnf文件记录了uuid,重启后uuid不变,删除文件后会重新生成新的uuid); 
transaction_id:是一个从1开始自增的计数,表示在这个主库上执行的第n个事务; 
由于每台Mysql的uuid是全球唯一的,transaction_id自身唯一,就保证了GTID全局唯一性 
mysql> show variables like ‘server_uuid’; 
+—————+————————————–+ 
| Variable_name | Value | 
+—————+————————————–+ 
| server_uuid | 4468c0e8-ef6f-11e3-9c2c-0200c0a80ad8 | 
+—————+————————————–+ 
1 row in set (0.00 sec)

3、基于GTID的复制配置

  • 主服务器配置 /etc/my.cnf 
  • 从服务器配置 /etc/my.cnf 
     
    relad_log后的目录必须存在,并且有权限
  • 备份主服务器数据库,到从服务器中写入 

     
     
    如果导入时报错:
GTID_PURGED can only be set when GTID_EXECUTED is empty.

在从服务器中使用reset master命令即可

  • 在主服务器上建立复制用户,并授权
mysql>grant replication slave,replication client on *.* to repluser@'192.168.1.%'identified by 'replpass';
mysql>flush privileges;
  • 从库连接主库
mysql>change master to master_host='192.168.1.20', master_user='repluser',<
7ff7
/span>master_password='replpass', master_auto_position=1;
mysql>start slave;
  • 查看连接情况 
     
    红框选中的两项都为YES,表示链接成功!

4、GTID优缺点

优点: 
1、可以很方便的进行故障转移 
2、从库不会丢失主库上的任何修改 
缺点: 
1、故障处理复杂 
2、对执行的SQL有限制 
不支持myisam,可能导致多个gtid分配给同一个事物 
不支持:create table .. select;create /drop temporary table

5、复制方式的选择

主要考虑一下问题:

  • 所使用的Mysql版本 
    建议5.7版本以上使用GTID复制方式
  • 复制架构及主从切换的方式 
    MM架构只支持基于日志点方式 
    MHA架构GTID和基于日志点方式都支持
  • 所使用的高可用组件
  • 对应用的支持程度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: