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)

9、检查Slave2的状态,发现已经指向新的主库Slave1;
show slave status

主要查看以下两项:
Slave_IO_Running: Yes
lave_SQL_Running: Yes

Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。

通过Navicat验证Slave1和Slave2是否可以数据同步。

原文地址:https://www.cnblogs.com/linjiqin/p/11208948.html

时间: 2024-08-28 16:33:24

MySQL一主二从复制环境切换主从库的相关文章

MySQL学习(二)复制

复制解决的问题是保持多个服务器之间的数据的一致性,就如同通过复制保持两个文件的一致性一样,只不过MySQL的复制要相对要复杂一些,其基本过程如下: 1)在主库上将数据更改记录到二进制日志(Binary Log)中(这些记录被成为二进制日志事件,即binlog) 2)本分将主库上的日志复制到自己的中继日志(Relay Log)中 3)备库读取中继日志中的事件,将其重放到备库数据之上. 从上面可以看出,复制需要四个进程或线程做事情:主库保存日志.主库根据备库的请求转储日志并发送给备库,备库接受日志保

Mysql之一主多从复制

MySQL主从复制 简介 将master数据库中的DDL和DML操作通过二进制日志(BINLOG)传输到slave数据库上,然后将这些日志重新执行(重做):从而使得slave数据库的数据与master数据库保持一致. MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能. 目录 一.主从原理 1.1 主从复制基本原理 1.2 主从复制原理运行流程 二.主从用途 2.1 主从复

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

上文<MySQL数据库管理(一)MySQL Cluster集群简单介绍>对MySQL Cluster集群做了简要介绍.本文将教大家一步步搭建单机环境下的MySQL数据库集群. 一.单机环境搭建 首先到MySQl官网上 下http://www.mysql.com/downloads/Cluster/下载所需的安装包.然后将下载得到的ZIP包解压到C:\ypl\mysql\mysqlc 这个MySQL数据库的集群由一个MySQL服务引擎(mysqlds).两个数据节点(ndbd)和一个管理节点(n

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

目前我们使用的是主从+分库分表的系统架构,主库有N个分库,从库为多个slave做负载均衡,所以数据库端的架构是下面这样的: 这就涉及到多个主库数据同步到不分库分表的从库共查询和管理类系统使用.在mysql 5.6以及之前的版本中,没有原生的解决方法,除非使用mariadb分支,在mysql 5.7之后支持多源复制,除了使用原生的多源复制之外,还有一个选择,就是使用案例开源的otter/canal.如果只是N个库合并到一个库的,我们使用mysql原生的复制,因为无论从稳定性还是运维成本.系统要求的

Mysql一主多从复制数据

应用场景:外部仅仅访问主数据库(Mysql_Master),多个从数据库(Mysql_Slave)做数据库热备份.一旦主数据库宕机,从服务器负责处理数据 实验拓补图: 实验环境: 操作系统版本:CentOS7 Mysql_Master:192.168.199.17 Mysql_Slave01:192.168.199.18 Mysql_Slave02:192.168.199.19 实验步骤: 01.依据以上环境,分别登录到Mysql_Master.Mysql_Slave01.Mysql_Slave

Mysql双主多从复制数据

应用场景:需要高并发且无间断访问数据库时,可使用双主多从数据库集群 实验架构: 实验环境: 关闭firewalld和selinux防火墙 操作系统版本:CentOS7 DB1:192.168.1.104 DB2:192.168.1.45 DB3:192.168.1.73 DB4:192.168.1.90 实验步骤: 注意:整个实验过程都是在重复配置Mysql主从配置,只是主从顺序不一样罢了 01.登录到DB1-DB4,安装mariadb.mariadb-server #安装Mariadb yum

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

一.MySQL的复制是将主数据库(master)的数据复制到从(slave)数据库上,专业一点讲就是将主数据库DDL和DML操作的二进制日志传到从库上,然后从库对这些二进制日志进行重做,使得主数据库与从数据库的数据保持同步. 二.MySQL复制的一些优点: 可以将大部分的查询任务放在从库上进行,降低主库的负载,提高性能,但要注意实时性要求高的数据仍需在主库上读取. 如果主库出现了宕机,可以快速切换到从库上,提高了可用性. 可以在从库上进行数据备份,降低在备份期间对主库的影响. 将数据挖掘和分析等

PostgreSQL使用pg_basebackup搭建主备流复制环境

今天用pg_basebackup搭建了主备流复制环境,操作流程很简单,可在线操作,相当方便. 环境均为CentOS6.6 + postgresql9.4,我用已安装的库做测试,端口不一致,不影响环境搭建,但要注意某些相关配置: 主:192.168.3.201 port:5431 备:192.168.3.202 port:5432 数据库安装过程省略.可参考 http://blog.csdn.net/baiyinqiqi/article/details/45560229 主库参数配置postgre

MySQL双主环境复制延时故障处理

故障现象生产中的一组MySQL双主(主库A和主库B)+Keepalived高可用单写(主库A),出现B库高延时问题.检查B库复制状态如下图1:(B库的复制状态-图1)问题分析1.和开发人员确认,这组MySQL双主每天有批量的数据导入操作,业务是网站展示前一天股票大盘指数,数据是由脚本批量导入,从而产生了复制延时.2.通过对导数据脚本分析,导数据是对一个表先进行delete后进行insert操作:股指大盘展示数据只保留一天数据,因此确认不需要保留前一天数据,修改脚本先truncate表后inser