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

[经验分享] mysql replication 三级串行多、单库主从复制案例

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-17 09:35:00 | 显示全部楼层 |阅读模式
wKioL1exuNmiKkXVAABeCxuwGtA518.jpg
应用需求说明
read量较大、分散
write为预制或集中

方案场景说明

Master Server:有三个库,分别为a、b、c
二级slave_all:全量slave(剔除mysql,information_schema,performance_schema,test)
三级slave_all : 全量slave(剔除mysql、information_schema、performance_schema、test)
三级slave_a:仅同步a库
三级slave_b:仅同步b库

OS及mysql版本说明
centos 6.5 x64
mysql-5.6.25

开始部署
Master Server
1、修改my.cnf
     [mysqld]
       log-bin=mysql-bin   //启用二进制日志
       server-id=1      //服务器ID,需在replication集群中保持唯一性     

2、创建用于复制的账号 (用户需要对所有库表有权限,不然创建不了,即*.*)
      GRANT REPLICATION SLAVE ON *.* to 'repl_all'@'%' identified by 'q123456';
3、导出master库快照(可以根据全量主从和选库主从进行分别导出,此导出方式不用锁库)
   如果有MYISAM或又有MYISAM又有INNODB的话就在服务使用如下命令导出快照
   mysqldump -uroot -p --lock-tables --events --triggers --routines --flush-logs --master-data=2 --all-databases > db.sql
    如果只用INNODB用如下命令导出快照
   mysqldump -uroot -p --single-transaction --events --triggers --routines --flush-logs --master-data=2 --database a b c > abc.sql
*这里需要注意几个参数的使用:
--single-transaction 这个参数只对innodb适用。
--databases 后面跟除mysql以后的其他所有数据库的库名,我这里只有一个test库。
--master-data 参数会记录导出快照时候的mysql二进制日志位置(不用锁库可以)。


二级slave_all(192.168.0.134)

1、修改my.cnf     

[mysqld]
       log-bin=mysql-bin   //启用二进制日志
       server-id=21      //服务器ID,需在replication集群中保持唯一性

       replicate-wild-ignore-table = mysql,information_schema,performance_schema,test      //不去复制指定库
       log_slave_updates = 1        //将来自relay日志在binlog重新记录,以便三级从库replication
2、导入从主库导出的的快照
mysql>source abc.sql;
3、查看主库快照binlog文件名称及pos偏移量
#grep -i "change master" abc.sql
[iyunv@localhost source]# grep -i "change master" all.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=120;
4、与主库建立连接关系
mysql> stop slave;
mysql>CHANGE MASTER TO MASTER_HOST='192.168.0.133',MASTER_USER='repl_all',MASTER_PASSWORD='a123456',MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=120;
mysql>start slave;
mysql>show slave status\G
5、为各slave三级从库创建slave账号
GRANT REPLICATION SLAVE ON *.* to 'repl_three_all'@'%' identified by 'q123456';
6、分别导出abc三库快照、a库快照、b库快照,发送至各三级slave服务器
mysqldump -uroot -p --single-transaction --events --triggers --routines --flush-logs --master-data=2 --database a b c > abc.sql
mysqldump -uroot -p --single-transaction --events --triggers --routines --flush-logs --master-data=2 --database a > a.sql
mysqldump -uroot -p --single-transaction --events --triggers --routines --flush-logs --master-data=2 --database b > a.sql


三级slave_all配置(192.168.0.136)
1、修改my.cnf     

[mysqld]
       log-bin=mysql-bin   //启用二进制日志
       server-id=31     //服务器ID,需在replication集群中保持唯一性

       replicate-wild-ignore-table = mysql,information_schema,performance_schema,test      //不去复制指定库
2、导入从主库导出的的快照
mysql>source abc.sql;
3、查看主库快照binlog文件名称及pos偏移量
#grep -i "change master" abc.sql
[iyunv@localhost source]# grep -i "change master" abc.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=120;
4、与主库建立连接关系
mysql> stop slave;
mysql>CHANGE MASTER TO MASTER_HOST='192.168.0.134',MASTER_USER='repl_three_all',MASTER_PASSWORD='a123456',MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=120;
mysql>start slave;
mysql>show slave status\G


三级slave_a 配置(192.168.0.137)(只复制a库)


1、修改my.cnf     

[mysqld]
       log-bin=mysql-bin   //启用二进制日志
       server-id=32    //服务器ID,需在replication集群中保持唯一性

       replicate-wild-do-table = a.%     //只复制指定库,如复制指定多库,逗号隔开即可,如:a.%,b.%
2、导入从主库导出的的快照
mysql>source abc.sql;
3、查看主库快照binlog文件名称及pos偏移量
#grep -i "change master" a.sql
[iyunv@localhost source]# grep -i "change master" a.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=120;
4、与主库建立连接关系
mysql> stop slave;
mysql>CHANGE MASTER TO MASTER_HOST='192.168.0.134',MASTER_USER='repl_three_all',MASTER_PASSWORD='a123456',MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=120;
mysql>start slave;
mysql>show slave status\G


三级slave_b 配置(192.168.0.138)(只复制b库)


1、修改my.cnf     

[mysqld]
       log-bin=mysql-bin   //启用二进制日志
       server-id=32    //服务器ID,需在replication集群中保持唯一性

       replicate-wild-do-table = b.%     //只复制指定库,如复制指定多库,逗号隔开即可,如:a.%,b.%
2、导入从主库导出的的快照
mysql>source ab.sql;
3、查看主库快照binlog文件名称及pos偏移量
#grep -i "change master" b.sql
[iyunv@localhost source]# grep -i "change master" b.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=120;
4、与主库建立连接关系
mysql> stop slave;
mysql>CHANGE MASTER TO MASTER_HOST='192.168.0.134',MASTER_USER='repl_three_all',MASTER_PASSWORD='a123456',MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=120;
mysql>start slave;
mysql>show slave status\G

里面有些关键点请注意:
1、replicate-wild-do-table  和replicate-wild-ignore-table ,具体因素可以自己百度和google一下,在此不再转帖
2、快照导出,mysqldump -uroot -p --single-transaction --events --triggers --routines --flush-logs --master-data=2 --database b > a.sql,可以查一下 ‘--master-data=2 ’这个参数,目前观测在导出时是不用锁库锁表的,如有新进展发现,请帮我纠错,谢谢!

联系方式:
QQ/微信:346558044
转载无需注明出处,如有错误及时联系我纠正就好!!!







运维网声明 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-259076-1-1.html 上篇帖子: mysqlbinlog恢复MySQL数据库 下篇帖子: MySQL 报错error 2002 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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