企业场景一主多从宕机从库切换主继续和从同步过程详解

目标:主库宕机了,从库提升为主库

准备环境:

1台web服务器

3台MySQL服务器

环境说明:

1441523323919072

 

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,则表示从库更新都执行完毕了

QQ20150902134423QQ20150902134435所有的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,

QQ20150902134821

创建用于同步的用户

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文件来确定新的主库,这样,你的数据库的一致性和完整性就更高。

此条目发表在MySql分类目录,贴了, 标签。将固定链接加入收藏夹。