MySQL主从切换

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

Image

在一主两从环境中,模拟测试当主库宕机后的切换步骤

我的系统为 CentOS6.7 x64

mysql 版本为 5.5.33 并通过二进制包安装

上个截图,三台系统和 mysql 都是同样的版本,同样步骤的安装

[root@mysql-01 ~]# mysql -V

mysql  Ver 14.14 Distrib 5.5.33, for linux2.6 (x86_64) using readline 5.1

[root@mysql-01 ~]# uname -r

2.6.32-573.el6.x86_64


三台环境的主机名和 ip 地址,职务

mysql-01   192.168.240.137   Master

mysql-02   192.168.240.138   Slave-01

msyql-03   192.168.240.139   Slave-02


Master上的操作

将 master 192.168.240.137 关机,模拟真实场景中的宕机

[root@mysql-01 ~]# /etc/init.d/mysqld stop

Shutting down MySQL... SUCCESS!

[root@mysql-01 ~]# lsof -i :3306

[root@mysql-01 ~]#


Slave-01上的操作

确保 slave 数据库上已经执行了 relay log 中的全部命令

在 slave 上执行 show processlist; 命令,返回结果如下,说明更新执行完毕

Slave has read all relay log; waiting for the slave I/O thread to update it

在每个从库上行 stop slave io_thread; 停止 IO 线程

mysql> show processlist;

mysql> stop slave io_thread;


编辑 /etc/my.cnf 文件,在 [ mysqld ] 目录下,开启 log-bin=mysql-bin 选项

并且注意 server-id ,不能和 Slave-02 上的 server-id 相同

[root@mysql-02 ~]# vim /etc/my.cnf

log-bin=mysql-bin

server-id=2


编辑完后保存退出,重启 mysql 服务

[root@mysql-02 ~]# /etc/init.d/mysqld restart

Shutting down MySQL. SUCCESS!

Starting MySQL.. SUCCESS!


在 Slave-01 上登录 mysql

执行 reset master 命令,将 Slave-01 升级为 Master

mysql> reset master;

Query OK, 0 rows affected (0.01 sec)

并查看 master 状态

mysql> show master status\G

*************************** 1. row ***************************

            File: mysql-bin.000001

        Position: 107

    Binlog_Do_DB:

Binlog_Ignore_DB:

1 row in set (0.00 sec)


创建一个用于同步的账号并刷新

mysql> grant replication slave on *.* to yuci@'%' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)


编辑 /etc/hosts 文件,添加 ip 地址及对应的主机名

(我使用的的 vmware 的 NAT 模式)

[root@mysql-02 ~]# vim /etc/hosts

192.168.240.138   mysql-02

192.168.240.139   mysql-03


在 Slave-02 上的操作

同样先添加 ip 地址及对应的主机名

[root@mysql-03 ~]# vim /etc/hosts

192.168.240.138   mysql-02

192.168.240.139   mysql-03


测试刚才创建的 yuci 用户能否在 Slave-02 上登录 Slave-01 的数据库

[root@mysql-03 ~]# mysql -uyuci -p123456 -h192.168.240.138

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 5

。。。。。。。。。。。。

mysql>

yuci 用户登录成功,说明可以使用该账号进行数据同步


使用 root 用户登录 mysql 服务,查看更新是否全部完成

[root@mysql-03 ~]# mysql -uroot -p123456

mysql> show processlist;

Slave has read all relay log; waiting for the slave I/O thread to update it

停止 slave 服务

mysql> stop slave;

Query OK, 0 rows affected (0.01 sec)


输入主库信息以及用于同步的账号,注意 log-file和log-pos,这两个值是之前在 Slave-01 上执行 show maste status\G 的返回值

mysql> CHANGE MASTER TO

    -> MASTER_HOST='192.168.240.138',

    -> MASTER_PORT=3306,

    -> MASTER_USER='yuci',

    -> MASTER_PASSWORD='123456',

    -> MASTER_LOG_FILE='mysql-bin.000001',

    -> MASTER_LOG_POS=107;

Query OK, 0 rows affected (0.01 sec)


开启 slave 服务

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)


查看 slave 状态的 IO、SQL线程,两个 yes 说明切换完成

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

到此为止主从切换的操作已经全部完成,Slave-01 已经升级为 Master 它的从服务器是 Slave-02


在 Slave-01 上创建一个新的数据库,看看是否能够同步

Slave-01 上

mysql> create database tongbu;

Query OK, 1 row affected (0.00 sec)

mysql> show databases;

+--------------------+

| Database        |

+--------------------+

| information_schema |

| mysql          |

| performance_schema |

tongbu        |         

+--------------------+

5 rows in set (0.00 sec)

Slave-02 上

mysql> show databases;

+--------------------+

| Database       |

+--------------------+

| information_schema |

| mysql         |

| performance_schema |

tongbu        |

+--------------------+

5 rows in set (0.00 sec)


最后自己来个小总结吧

1.当从服务器要升职为主服务器时,要注意 my.cnf 文件中要开启 log-bin 参数。主服务器是必须开启的,从服务器可以不开启

2.IO线程报错 connecting主要是:网络不通,密码不对

本文转自   mlwzby   51CTO博客,原文链接:http://blog.51cto.com/aby028/1942706

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Kubernetes Cloud Native 关系型数据库
提升数据安全与性能,掌握Helm一键部署MySQL 8.0主从技巧
【4月更文挑战第9天】提升数据安全与性能,掌握Helm一键部署MySQL 8.0主从技巧
53 0
|
2月前
|
关系型数据库 MySQL 开发工具
MySQL5.7主从配置(Docker)
MySQL5.7主从配置(Docker)
741 0
|
2月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
173 1
|
5月前
|
负载均衡 关系型数据库 MySQL
MySQL主从架构的搭建
MySQL主从架构的搭建
61 3
|
5月前
|
SQL 关系型数据库 MySQL
小白带你学习linux的mysql服务(主从mysql服务和读写分离三十一)
小白带你学习linux的mysql服务(主从mysql服务和读写分离三十一)
77 0
|
4月前
|
SQL 关系型数据库 MySQL
MySQL-主从架构的搭建
MySQL-主从架构的搭建
66 0
|
2天前
|
关系型数据库 MySQL Linux
服务器Linux系统配置mysql数据库主从自动备份
这是一个基本的配置主从复制和设置自动备份的指南。具体的配置细节和命令可能因您的环境和需求而有所不同,因此建议在操作前详细阅读MySQL文档和相关资源,并谨慎操作以避免数据丢失或不一致。
11 3
|
4天前
|
关系型数据库 MySQL Linux
本地虚拟机centos7通过docker安装主从mysql5.7.21
本地虚拟机centos7通过docker安装主从mysql5.7.21
12 0
|
15天前
|
SQL 关系型数据库 MySQL
MySQL主从模式最佳实践
主从模式是很常见的数据库存储解决方案,一主多从,当然还有双主模式(多主模式),你对数据库的主从模式有哪些见解,欢迎跟 V 哥聊聊。
|
1月前
|
SQL 关系型数据库 MySQL
mysql主从同步出错解决办法
mysql主从同步出错解决办法
17 0