目标:主库宕机了,从库提升为主库
准备环境:
1台web服务器
3台MySQL服务器
环境说明:
1.web上跑着bbs网站服务,由MySQL-01提供数据库服务
2.MySQL-02和-03是MySQL-01的从库
突发事件:
这个时候,MySQL机器宕机,bbs.teddy.com是打不开的,提示无法连接数据库
一主多从宕机从库切换主继续和从同步过程步骤:
确保所有的relay log全部更新完毕
在每个从库上执行stop slave io_thread; show processlist;
直到看到Has read all relay log,则表示从库更新都执行完毕了
所有的relay log全部更新完毕
登陆所有从库,查看master.info文件,对比选择pos最大的作为新的主库,这里我们选择mysql-02为新的主库
登陆mysql-02,执行stop slave; 并进入数据库目录,删除Info和relay-log.info文件, 配置my.cnf文件,开启log-bin,如果有log-slaves-updates和read-only则要注释掉;提升从库为主库,执行reset master,
创建用于同步的用户
grant replication slave on *.* to rep@’10.0.0.%’ indentified by ‘123456’; flush privileges;
创建用于bbs网站使用的用户
GRANT ALL ON bbs.* TO ‘bbs’@’Web-01’ IDENTIFIED BY ‘123456’; flush privileges;
更新所有机器上的hosts文件
[root@web-01 teddylu]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ###########by teddylu########### 10.0.0.201 LVS-DR-01 10.0.0.202 LVS-DR-02 10.0.0.203 Web-01 10.0.0.204 Web-02 #10.0.0.205 MySQL-01 #10.0.0.206 MySQL-02 10.0.0.206 MySQL-01 #bbs的网站程序中关于数据库的信息里,MySQL-01是数据库的地址 10.0.0.207 NFS-Share
登陆其他从库操作,即mysql-03
CHANGE MASTER TO MASTER_HOST=’10.0.0.205′, MASTER_PORT=3306, MASTER_USER=’rep’, MASTER_PASSWORD=’123456′, MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS=107; start slave;
最后,检查是否主从同步了,网站是否能打开了
总结:从主库宕机,到从库接管,一共只花费了不到3分钟的时间(如果前期的系统架构做的好的话,时间会更少)。通过master.info文件来确定新的主库,这样,你的数据库的一致性和完整性就更高
a