MySQL一主一从点击
跳转
MySQL双主双从原理:
master 1 为处理写请求;
master 2 和 两个从机(slave1,slave2)负责读请求;
当master 1 宕机时,由master 2 负责写请求,两个从机负责读请求;
master 1 和 master 2 为各自的备机
-
首先需要准备 4 台机器,虚拟机克隆可以参考该
文章
-
同时启动 4 台虚拟机后,MyCat 启动可能变慢,log日志会报如下错误
Startup failed: Timed out waiting for a signal from the JVM.
到设置中配置启动超时时间,命令:
vim conf/wrapper.conf # 启动超时时间 wrapper.startup.timeout=120
再次启动(启动过程可能较慢,具体可以查看日志),并测试
mysql -uroot -p -h192.168.171.101 -P8066
四台虚拟机信息:
-
同时启动 4 台虚拟机后,MyCat 启动可能变慢,log日志会报如下错误
-
配置MySQL
-
master 1
#主服务器唯一id server-id=1 #启动二进制日志 log-bin=mysql-bin #设置不需要复制的数据库(可设置多个) binlog-ignore-db=information_schema binlog-ignore-db=mycat binlog-ignore-db=mysql binlog-ignore-db=performance_schema binlog-ignore-db=sys #设置需要复制的数据库 binlog-do-db=mycat_01 #设置binlog格式 binlog_format=STATEMENT #以下为 双主双从 额外的配置 #表示在作为从机的时候,有写操作的时候也要更新二进制日志 log-slave-updates #表示每次自增的量,默认是 1 ,因为是双主双从,所以需要更改为 2 避免重复,范围:1 ~ 65535 auto-increment-increment=2 #表示自增起始数字,该机器起始为1 自增后为 1,3,5,7,9.... auto-increment-offset=1
红框内为 双主双从 配置
-
master 2
#主服务器唯一id server-id=3 #启动二进制日志 log-bin=mysql-bin #设置不需要复制的数据库(可设置多个) binlog-ignore-db=information_schema binlog-ignore-db=mycat binlog-ignore-db=mysql binlog-ignore-db=performance_schema binlog-ignore-db=sys #设置需要复制的数据库 binlog-do-db=mycat_01 #设置binlog格式 binlog_format=STATEMENT #以下为 双主双从 额外的配置 #表示在作为从机的时候,有写操作的时候也要更新二进制日志 log-slave-updates #表示每次自增的量,默认是 1 ,因为是双主双从,所以需要更改为 2 避免重复,范围:1 ~ 65535 auto-increment-increment=2 #表示自增起始数字,该机器起始为1 自增后为 2,4,6,8,10.... auto-increment-offset=2
红框内是与 maser 1 的区别
-
slave 1 和 slave 2 ,只有server-id不同
#从服务器唯一id server-id=2 #启动中继日志 relay-log=mysql-relay
重启 4 台mysql,并查看mysql状态,确保启动成功,命令:
systemctl restart mysqld systemctl status mysqld
-
在从机上配置需要复制的主机
slave 1 复制 master 1
slave 2 复制 master 2
查看主机状态,命令:show master status \G
查看主机状态后,不要进行sql操作,需保证从机接入点与各自主机一致
复制主机,命令:
#复制主机的命令 CHANGE MASTER TO MASTER_HOST='主机的IP地址', MASTER_USER='slave1', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.具体数字', MASTER_LOG_POS=具体值;
启动slave,命令:start slave;
查看两台 slave 状态,命令:
show slave status \G
确保都是 Yes,如果不是,查看黄色框内报错原因。
停止从复制,命令:stop slave;
重新配置 主,命令:
reset master;
-
配置 master 1 和 master 2 互为主备
master 1 复制 master 2
master 2 复制 master 1
开启 slave 并查看状态,确保都是
Yes
-
-
测试
-
创建
mycat_01
数据库
-
创建表
user
*
-
插入数据
停掉 master 1 ,从master 2 写入,两个 slave 依然进行复制,当 master 1 重启后,会自动更新matser 2 改动数据。
-
创建
其他章节 ->
跳转
end...