码迷,mamicode.com
首页 > 数据库 > 详细

mysql主从复制汇总

时间:2016-04-23 23:17:03      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:master   mysql   二进制   

binlog日志

二进制日志格式

基于语句 statement

基于行 rows

混合方式 mixed


二进制日志事件

基于位置postion基于时间datetime-timestamp


复制过程有一个很重要的限制——复制在slave上是串行化的也就是说master上的并行更新操作不能在slave上并行操作。所以slave上数据一般要慢于master上数据。即master与slave之间的数据在一定时间内会不同步。


同步、异步、半同步复制

同步

同步复制可以定义为数据在同一时刻被提交到一台或多台机器通常这是通过众所周知的“两阶段提交”做到的。

异步

主库在执行完一些事务后是不会管备库的进度的。如果备库不幸落后而更不幸的是主库此时又出现Crash例如宕机这时备库中的数据就是不完整的。简而言之在主库发生故障的时候我们无法使用备库来继续提供数据一致的服务了。

半同步

当Master上开启半同步复制的功能时至少应该有一个Slave开启其功能。

此时一个线程在Master上提交事务将受到阻塞直到得知一个已开启半同步复制功能的Slave已收到此事务的所有事件或等待超时。


mysql半同步复制

show global variables like ‘have_dynamic_loading‘;

INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘;

INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘;

show global variables like ‘plugin_dir‘;

select * from information_schema.plugins; or show plugins;


SET GLOBAL rpl_semi_sync_master_enabled = 1;

SET GLOBAL rpl_semi_sync_master_timeout = 60;

SET GLOBAL rpl_semi_sync_slave_enabled = 1;

start slave;

show slave status;


多源复制

STOP SLAVE;

SET GLOBAL master_info_repository = ‘TABLE‘;

SET GLOBAL relay_log_info_repository = ‘TABLE‘;

slave > change master to master_host="127.0.0.1", master_port=20121, 

master_user="multi",master_password="multi" FOR CHANNEL ‘master1‘;

slave > change master to master_host="127.0.0.1", master_port=20122, 

master_user="multi",master_password="multi" FOR CHANNEL ‘master2‘;

slave > change master to master_host="127.0.0.1", master_port=20123, 

master_user="multi",master_password="multi" FOR CHANNEL ‘master3‘;

start slave for channel ‘master1‘;

start slave for channel ‘master2‘;

show slave status for channel ‘master1‘;

show slave status for channel ‘master2‘;


GTID

GTID即全局事务ID(global transaction identifier )

GTID = source_id:transaction_id

eg:3E11FA47-71CA-11E1-9E33-C80AA9429562:50 

每一个 GTID 代表一个数据库事务


开启GTID

set global enforce_gtid_consistency=on;

set global log_slave_updates=on;

set global gtid_mode=OFF_PERMISSIVE;

set global gtid_mode=ON_PERMISSIVE;

set global gtid_mode=on;


使用GTID建立主从

mysql> change master to master_host=‘1.1.1.1‘,master_port =3306,master_user=‘gtid‘,master_password=‘gtid‘,master_auto_position=1;


mysql并行复制

本文出自 “allen的个人博客” 博客,请务必保留此出处http://allen2288.blog.51cto.com/1184612/1767068

mysql主从复制汇总

标签:master   mysql   二进制   

原文地址:http://allen2288.blog.51cto.com/1184612/1767068

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!