【Mysql】主库宕机解决方案

事件背景:
一大早过来,nacos的主库服务器宕机了,要启用从库当主库来用
假设发生了突发事件,master宕机,现在的需求是要将从库提升为主库,另外一个为从库
从库状态mysql> show slave status\G
在这里插入图片描述

操作步骤:

一、多个从库的情况

1.确保所有的relay log全部更新完毕,在每个从库上执行stop slave io_thread;
再每个从库执行show processlist;
直到看到Has read all relay log,则表示从库更新都执行完毕了
在这里插入图片描述
2.登陆所有从库,查看master.info文件,对比选择pos最大的作为新的主库,如下图
在这里插入图片描述
下表显示了master.info中各行之间的简单解释说明。
在这里插入图片描述
3.登陆新的主库,执行stop slave;
并进入数据库目录,删除master.inforelay-log.info文件,
配置my.cnf文件,开启log-bin,本次有下面的参数

log_bin=mysql-bin
binlog_format=mixed

如果有log-slaves-updatesread-only则要注释掉,
执行reset master;
执行systemctl restart mysqld,重启mysql参数生效
4.创建用于同步的用户并授权slave;

1、登录数据库
mysql -h 127.0.0.1 -uroot -p
Enter password:

2、新建主从同步账号
mysql> CREATE USER 'repl'@'从库ip' IDENTIFIED WITH mysql_native_password BY '同步账号的密码';
Query OK, 0 rows affected (0.00 sec)

3、给主从同步账号赋予REPLICATION权限
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从库ip';
Query OK, 0 rows affected (0.00 sec)

4、更新数据
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

5、查新的主库状态信息
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      838 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql>

5.登录另外一台从库,执行stop slave停止同步
6.从库连接到新的主库进行同步

1、登录数据库
mysql -h 127.0.0.1 -uroot -p
Enter password:

2、建立主从关系
mysql> CHANGE MASTER TO MASTER_HOST='主库ip',MASTER_USER ='repl', MASTER_PASSWORD='同步账号的密码',MASTER_LOG_FILE='主库的File值',MASTER_LOG_POS=主库Position值;
Query OK, 0 rows affected, 1 warning (0.02 sec)

3、启动从库
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

4、查看主从状态
mysql> show slave status\G

7.修改新的master数据,测试slave是否同步更新

二、单个从库的情况

1.确保所有的relay log全部更新完毕,从库执行show processlist;
直到看到Slave Has read all relay log,则表示从库更新都执行完毕了
2.从库执行stop slave停止同步
3.从库配置my.cnf文件,开启log-bin,本次有下面的参数

log_bin=mysql-bin
binlog_format=mixed

如果有log-slaves-updatesread-only则要注释掉,
执行systemctl restart mysqld,重启mysql,参数生效
4.修改相关程序访问从库IP。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值