设为首页 收藏本站
查看: 642|回复: 0

[经验分享] mysql主从复制汇总

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-25 09:45:34 | 显示全部楼层 |阅读模式
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并行复制


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-208523-1-1.html 上篇帖子: MySQL排错工具perror 下篇帖子: Mysql导入sql脚本到数据库 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表