MySQL一主二从复制环境切换主从库
假设有一个一主二从的环境,当主库M出现故障时,需要将其中一个从库S1切换为主库,同时将S2指向新的主库S1,如果可能,需要将故障的主库M修复并重置为新的从库。
搭建一主二从复制环境可参考:mysql5.7主从复制配置——读写分离实现。
1、环境信息;
Mater:130.168.0.25
Slave1:130.168.0.13
Slave2:130.168.0.27
2、配置MySQL一主二从
2.1、查询master(主服务器)的状态
show master status;
2.2、配置slave1(从服务器)
stop slave;
flush logs;
change master to master_host='130.168.0.25',master_user='backup',master_password='123456',master_log_file='mysql-bin.000009',master_log_pos=2438;
start slave;
show slave status;
2.3、配置slave2(从服务器)
stop slave;
flush logs;
change master to master_host='130.168.0.25',master_user='backup',master_password='123456',master_log_file='mysql-bin.000009',master_log_pos=2438;
start slave;
show slave status;
从上得知,配置slave1、slave2是一样的,在此忽略;不懂配置可以参考 mysql5.7主从复制配置——读写分离实现。
3、模拟主库Master宕机,slave1升级为Master,slave2保持不变,使slave1和slave2进行数据同步,把 130.168.0.25 mysql进程关闭;
mysql> shutdown;
Query OK, 0 rows affected (0.01 sec)
mysql> system service mysql.server status;
ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists
mysql>
4、确保从库都执行了relay log的全部更新,在每个从库上执行stop slave io_thread,然后检查show processlist的输出,状态是Slave has read all relay log; waiting for more updates,表示更新都执行完毕;
5、在从库Slave1上,执行stop slave来停止从服务,然后执行reset master重置成主库;
mysql> show master status;
Empty set (0.00 sec)
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql> reset master;
Query OK, 0 rows affected (0.00 sec)
在Slave1上创建备份专用帐户,backup用户跟Mater创建的备份账户一致。
mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
6、检查从库Slave1的log-bin是否打开,没打开则打开;
7、删除从库Slave1上的master.info和relay-log.info,否则下次重启则按照从库启动();
8、在Slave2上,执行stop slave停止从库服务,然后执行change master to重新指向主库slave1,再执行start slave启动从库;
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
mysql> change master to master_host='130.168.0.13'; #130.168.0.13为Master机
Query OK, 0 rows affected (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected (0.02 sec)
stop slave;
flush logs;
change master to master_host='130.168.0.13',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=154;
start slave;
show slave status;
9、检查Slave2的状态,发现已经指向新的主库Slave1;
show slave status 
主要查看以下两项:
Slave_IO_Running: Yes
lave_SQL_Running: Yes
Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。
通过Navicat验证Slave1和Slave2是否可以数据同步。
MySQL一主二从复制环境切换主从库的更多相关文章
- MySQL数据库管理(二)单机环境下MySQL Cluster的安装
上文<MySQL数据库管理(一)MySQL Cluster集群简单介绍>对MySQL Cluster集群做了简要介绍.本文将教大家一步步搭建单机环境下的MySQL数据库集群. 一.单机环境 ...
- mysql 5.7多源复制(用于生产库多主库合并到一个查询从库)
目前我们使用的是主从+分库分表的系统架构,主库有N个分库,从库为多个slave做负载均衡,所以数据库端的架构是下面这样的: 因为差不多有一年半没有专门搞技术为主了,顺带回顾下. 这就涉及到多个主库数据 ...
- redis-3.28 一主二从模式介绍、主从从模式介绍、sentinel模式一主两从高可用
一.redis-3.28部署 yum install gcc tclwget http://download.redis.io/releases/redis-3.2.8.tar.gztar -zxvf ...
- MySQL复制环境(主从/主主)部署总结性梳理
Mysql复制概念说明Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves) ...
- MySQL学习(二)复制
复制解决的问题是保持多个服务器之间的数据的一致性,就如同通过复制保持两个文件的一致性一样,只不过MySQL的复制要相对要复杂一些,其基本过程如下: 1)在主库上将数据更改记录到二进制日 ...
- redis的哨兵集群,自动切换主从库
Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能. 而 ...
- mysql 架构篇系列 1 复制原理和复制架构
一. 复制概述 mysql 从3.23版本开始提供复制功能,复制是指将主数据库的ddl和dml操作通过二进制日志传到复制服务器(也叫从服务器)上,然后在从服务器上对这些日志重新执行(也叫重做),从而使 ...
- MySQL学习笔记十七:复制特性
一.MySQL的复制是将主数据库(master)的数据复制到从(slave)数据库上,专业一点讲就是将主数据库DDL和DML操作的二进制日志传到从库上,然后从库对这些二进制日志进行重做,使得主数据库与 ...
- linux环境下配置mysql双主复制
简单来说,双主复制就是让两台mysql服务器中的数据保持同步,可以用来实现灾备和负载均衡 主机1 IP:192.168.200.128 主机2 IP:192.168.200.131 两台主机系统均为c ...
随机推荐
- 面试官问我,为什么老司机建议MySQL列属性尽量用 NOT NULL ?
本文阅读时间大约6分钟. 其实写这篇文章,也是来自一个知识星球读者的提问,他在二面的过程中被问到了,由于他简历中写道有 MySQL 调优经验,但这个问题没有回答好,二面被刷了. 其实我们刚学习 C 语 ...
- Go发送Email
使用Go发送邮件,目前官网GO 1.12的版本的文档中,包 "net/smtp" 仅支持支持两种SMTP的认证方式.CRAM-MD5和PLAIN 认证方式. CRAM-MD5 是基 ...
- thinkphp5 + barcode 生成条形码
1.去官网下载类库 “https://www.barcodebakery.com/en/download”,选择自己的版本下载 2.解压放到“E:\phpstudy\PHPTutorial\WWW\g ...
- CMake相关代码片段
目录 用于执行CMake的.bat脚本 CMakeLists.txt和.cmake中的代码片段 判断平台:32位还是64位? 判断Visual Studio版本 判断操作系统 判断是Debug还是Re ...
- 快速生成mysql上百万条测试数据
方案:编写一个存储过程循环添加数据 1. 创建表index_test DROP TABLE IF EXISTS index_test; CREATE TABLE index_test( id ) PR ...
- 【JavaScript】JavaScript基本语法&知识点
JavaScript: 是脚本语言:是一种解释性的语言(不需要编译) 作用: 让页面有具有动态效果 组成部分: ECMAScipt(核心),包含基本语法.变量.关键字.保留字.数据类型.语句.函数等 ...
- django项目中的ajax分页和条件查询。
1,路由 #主页面路由 re_path('article/article_list/', article.article_list,name='article/article_list/'), #分页 ...
- Java精通并发-Condition详解及相比于传统线程并发模式的改进
在上一次https://www.cnblogs.com/webor2006/p/11792954.html对于Lock的具体实现类ReentrantLock用了一个示例对它进行了一个简单的了解,而它其 ...
- Pandas | 20 级联
Pandas提供了各种工具(功能),可以轻松地将Series,DataFrame和Panel对象组合在一起. pd.concat(objs,axis=0,join='outer',join_axes= ...
- 异常DBG_PRINTEXCEPTION_C(0x40010006)和DBG_PRINTEXCEPTION_WIDE_C(0x4001000A)
简介 DBG_PRINTEXCEPTION_C,代码0x40010006:DBG_PRINTEXCEPTION_WIDE_C,代码0x4001000A:在调试器的控制台窗口打印异常信息/调试信息.它定 ...