=Start=
缘由:
工作需要,学习需要。
正文:
MySQL的主从架构:
由一个MySQL实例作为主库,接受读写请求,另外一个或多个MySQL实例通过MySQL的复制机制,将主库的数据同步到从库,从库会设置只读,防止主从数据不一致。
主从架构的好处:
- 如果主服务器出现问题,可以快速切换到从服务器提供服务;
- 可以在从服务器上执行查询,降低主服务器的压力;
- 可以在从服务器上执行备份,以避免备份期间影响主服务器的性能。
主从架构的局限:
由于MySQL实现的是异步复制,所以主从服务器之间的数据存在一定差异(延迟),对实时性要求高的数据仍然需要从主服务器上获得。
主从搭建步骤:
Step
|
主库(Master)
|
从库(Slave)
|
---|---|---|
1 |
修改主库my.cnf配置文件,然后需要重启生效 [mysqld] #作为主库 #启动二进制文件(*) log-bin=mysql-bin #服务器ID(*) server-id=1 #需要备份的数据库,多个写多行 binlog-do-db=orders #不需要备份的数据库,多个写多行 binlog-ignore-db=mysql |
修改从库my.cnf配置文件,然后需要重启生效 [mysqld] #作为从库(如果有多个从库,在各自的my.cnf中的server-id需要各不相同) server-id=2 replicate-do-db=bash #只复制某个库,多个写多行 replicate-ignore-db=mysql #不复制某个库,多个写多行 replicate-ignore-db=test replicate-ignore-db=information_schema |
2 | 创建从库用于连接主库的账号(repl)
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'slave_ip' IDENTIFIED BY 'password'; mysql> flush privileges; |
使用刚创建的 repl 账户在Slave所在主机上登录Master,测试用于复制的账户是否可以连接上mysql -h master_ip -u repl -p |
3 | 记录同步点
mysql> FLUSH TABLES WITH READ LOCK; //若要同步的数据库中已经有数据,还需要先用该语句锁定数据库 mysql> SHOW MASTER STATUS; //查看Master状态,记录File和Position两个信息 |
|
4 |
将主库数据做逻辑备份或物理备份 mysql> flush tables with read lock; shell> mysqldump -uroot -p --all-databases --master-data > backup.sql shell> scp -C backup.sql user@slave_ip:/tmp/ mysql> unlock tables; |
|
5 | 在从库上恢复数据
shell> mysql -uroot -p </tmp/backup.sql shell> rm -rf /tmp/backup.sql |
|
6 |
以root身份登录从库,并在从库上设置主库的相关信息(host、port、user等等) mysql> CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; mysql> START SLAVE; //启动主从复制 mysql> SHOW SLAVE STATUS\G //查看slave状态 |
|
7 | 一切顺利的话,到这里,Master上的操作会被同步到Slave上。
在主库创建test_tb表,模拟数据库新增数据 |
在从库查看是否存在test_tb表mysql> show tables; |
参考链接:
- 不停止 MySQL 服务增加从库的两种方式
- MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
- Mysql数据库主从心得整理
- mysql 基于 master-master 的双机热备配置
- http://dev.mysql.com/doc/refman/5.7/en/replication.html
http://dev.mysql.com/doc/refman/5.7/en/replication-howto.html
http://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html
https://www.percona.com/blog/2009/05/14/why-mysqls-binlog-do-db-option-is-dangerous/
https://support.rackspace.com/how-to/set-up-mysql-master-slave-replication/ - CentOS服务器Mysql主从复制集群的搭建
- Mysql主从复制搭建及详解
=END=
《 “MySQL主从环境搭建” 》 有 10 条评论
http://dev.mysql.com/doc/refman/5.7/en/change-master-to.html
MySQL 主从复制(master->slave)
http://www.eit.name/blog/read.php?432
MySQL复制的概述、安装、故障、技巧、工具
http://huoding.com/2011/04/05/59
在从库(Slave)上暂停复制操作:
`mysql> STOP SLAVE;`
当复制操作停止后,
① 从库上的 IO_THREAD 线程停止从主库上读取 binlog 写入本地的 relaylog ;
② 从库上的 SQL_THREAD 线程也停止从 relaylog 中读取并在本地执行。
你可以通过下面的命令分别暂停 IO_THREAD 或 SQL_THREAD 线程:
`mysql> STOP SLAVE IO_THREAD;
mysql> STOP SLAVE SQL_THREAD;
`
在从库(Slave)上启动复制操作:
`mysql> START SLAVE;`
可以单独启动 IO_THREAD 或 SQL_THREAD 线程:
`mysql> START SLAVE IO_THREAD;
mysql> START SLAVE SQL_THREAD;
`
https://dev.mysql.com/doc/refman/5.7/en/replication-administration-pausing.html
MySQL 主从详解
http://www.lookingss.org/index.php/archives/3.html
数据库分库分表策略的具体实现方案
http://mp.weixin.qq.com/s?__biz=MzI1NDQ3MjQxNA==&mid=2247483931&idx=1&sn=6eda41aa81c1243422a603205d2fad22#rd
MySQL高可用浅析
http://siddontang.com/2015/01/03/mysql-ha/
将MySQL中的数据同步至ElasticSearch中(Sync MySQL data into elasticsearch)
https://github.com/siddontang/go-mysql-elasticsearch
通过MySQL-Proxy实现MySQL数据库的认证、授权与审计
http://www.freebuf.com/articles/database/174712.html
Mysql-proxy中的lua脚本编程(一)
http://www.cnblogs.com/xidongyu/p/5560486.html
集群脑裂问题分析
https://blog.csdn.net/cweeyii/article/details/72354363
`
1.什么是集群脑裂
集群的脑裂通常是发生在集群中部分节点之间不可达而引起的(或者因为节点请求压力较大,导致其他节点与该节点的心跳检测不可用)。当上述情况发生时,不同分裂的小集群会自主的选择出master节点,造成原本的集群会同时存在多个master节点。
`
ElasticSearch集群脑裂,怎么办?
https://mp.weixin.qq.com/s/PQ9ueCgVu29zJ8OgagjXnw
MySQL集群节点宕机,数据库脑裂!如何排障?
https://mp.weixin.qq.com/s/tp8yhCSmOyeJr2QQDfo0yQ
GitHub的MySQL高可用性实践
https://mp.weixin.qq.com/s/J1dFPs_ijEk20f3q6GismQ
HA领域的“脑裂”
https://blog.csdn.net/972301/article/details/50589654
HA高可用集群中”脑裂”问题解决 – 运维总结
https://www.cnblogs.com/kevingrace/p/7205846.html
http://linux-ha.org/wiki/Split_Brain
https://en.wikipedia.org/wiki/Split-brain_(computing)
What’s Split Brain and how to avoid it like the plague?
https://www.starwindsoftware.com/blog/whats-split-brain-and-how-to-avoid-it
脑裂是什么?Zookeeper是如何解决的?
https://juejin.im/post/5d36c2f25188257f6a209d37