假设有一个一主二从的环境,当主库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一主二从复制环境切换主从库的更多相关文章

  1. MySQL数据库管理(二)单机环境下MySQL Cluster的安装

    上文<MySQL数据库管理(一)MySQL Cluster集群简单介绍>对MySQL Cluster集群做了简要介绍.本文将教大家一步步搭建单机环境下的MySQL数据库集群. 一.单机环境 ...

  2. mysql 5.7多源复制(用于生产库多主库合并到一个查询从库)

    目前我们使用的是主从+分库分表的系统架构,主库有N个分库,从库为多个slave做负载均衡,所以数据库端的架构是下面这样的: 因为差不多有一年半没有专门搞技术为主了,顺带回顾下. 这就涉及到多个主库数据 ...

  3. redis-3.28 一主二从模式介绍、主从从模式介绍、sentinel模式一主两从高可用

    一.redis-3.28部署 yum install gcc tclwget http://download.redis.io/releases/redis-3.2.8.tar.gztar -zxvf ...

  4. MySQL复制环境(主从/主主)部署总结性梳理

    Mysql复制概念说明Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves) ...

  5. MySQL学习(二)复制

        复制解决的问题是保持多个服务器之间的数据的一致性,就如同通过复制保持两个文件的一致性一样,只不过MySQL的复制要相对要复杂一些,其基本过程如下:     1)在主库上将数据更改记录到二进制日 ...

  6. redis的哨兵集群,自动切换主从库

    Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能. 而 ...

  7. mysql 架构篇系列 1 复制原理和复制架构

    一. 复制概述 mysql 从3.23版本开始提供复制功能,复制是指将主数据库的ddl和dml操作通过二进制日志传到复制服务器(也叫从服务器)上,然后在从服务器上对这些日志重新执行(也叫重做),从而使 ...

  8. MySQL学习笔记十七:复制特性

    一.MySQL的复制是将主数据库(master)的数据复制到从(slave)数据库上,专业一点讲就是将主数据库DDL和DML操作的二进制日志传到从库上,然后从库对这些二进制日志进行重做,使得主数据库与 ...

  9. linux环境下配置mysql双主复制

    简单来说,双主复制就是让两台mysql服务器中的数据保持同步,可以用来实现灾备和负载均衡 主机1 IP:192.168.200.128 主机2 IP:192.168.200.131 两台主机系统均为c ...

随机推荐

  1. Django ORM (二) 增加操作

    数据库表结构生成完毕后,可以使用工具连接上去 在 app01_author 表创建基础记录 在 app01_publisher 表创建基础记录 添加 data_oper 方法 在 urls.py 文件 ...

  2. 用 np.logspace() 创建等比数列

    np.logspace( start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0, ) Docstring: Return ...

  3. Java多线程编程核心技术-第5章-定时器 Timer-读书笔记

    第 5 章 定时器 Timer 定时 / 计划功能在移动开发领域使用较多,比如 Android 技术.定时计划任务功能在 Java 中主要使用的就是 Timer 对象,他在内部使用多线程的方式进行处理 ...

  4. 【Mybatis】拼接表名

  5. es4x 使用nodejs 开发vertx 应用框架试用

    es4x 是将vertx 的特性带到nodejs 的开发中,性能很不错,同时开发方式和nodejs 一样,可以加速vertx 应用的开发,同时也可以方便的集成java 软件包,提供的cli 工具也很方 ...

  6. vue响应数据的原理

    vue最大的特点就是数据驱动视图. vue的数据改变,页面一定发生改变?不一定. 当操作引用类型的数据,动态添加属性时,页面不会发生改变. vue响应式数据原理(也叫数据绑定原理.双向数据绑定原理): ...

  7. 图的遍历 | 1034 map处理输入数据,连通块判断

    这题写得比较痛苦.首先有点不在状态,其次题目比较难读懂. “Gang”成立的两个条件:①成员数大于两个  ②边权总和大于阈值K 首先,在录数据的时候通过map或者字符串哈希建立string到int的映 ...

  8. Codeforces Round 561(Div 2)题解

    这是一场失败的比赛. 前三题应该是随便搞的. D有点想法,一直死磕D,一直WA.(赛后发现少减了个1……) 看E那么多人过了,猜了个结论交了真过了. 感觉这次升的不光彩……还是等GR3掉了洗掉这次把, ...

  9. html 指定页面字符集的两种方式

      1.html指定页面字符集的两种方式 方式一: <meta charset="utf-8"> 方式二: <meta http-equiv="Cont ...

  10. JVM系列之一:JVM架构

    1.简介 Java平台可分为两部分,即Java虚拟机(Java virtual machine,JVM)和Java API类库. JVM是Java Virtual Machine(Java虚拟机)的缩 ...