MySQL 主从复制、切换
MySQL 主从复制是一种常见的高可用性和数据冗余解决方案,通过将数据从主服务器(Master)同步到从服务器(Slave),可以实现数据备份和读写分离。
MySQL 主从复制配置
1. 配置主服务器(Master)
-
编辑配置文件:
打开 MySQL 配置文件(通常是/etc/my.cnf
或/etc/mysql/my.cnf
),添加或修改以下内容:[mysqld] server-id=1 log-bin=mysql-bin binlog-do-db=your_database_name # 可选,指定要同步的数据库
-
重启 MySQL 服务:
使配置生效。sudo systemctl restart mysql
-
创建复制用户:
登录到 MySQL 并创建一个用于复制的用户。CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%'; FLUSH PRIVILEGES;
-
获取二进制日志文件和位置:
记录当前的二进制日志文件和位置,以便从服务器使用。FLUSH LOGS; SHOW MASTER STATUS;
输出示例:
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 12345 | | | +------------------+----------+--------------+------------------+
2. 配置从服务器(Slave)
-
编辑配置文件:
打开 MySQL 配置文件,添加或修改以下内容:[mysqld] server-id=2 relay-log=mysql-relay-bin
-
重启 MySQL 服务:
使配置生效。sudo systemctl restart mysql
-
配置从服务器连接主服务器:
登录到 MySQL 并配置从服务器连接到主服务器。CHANGE MASTER TO MASTER_HOST='master_ip_address', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=12345;
-
启动从服务器的复制:
开始从服务器的复制进程。START SLAVE;
-
验证复制状态:
检查从服务器的复制状态,确保没有错误。SHOW SLAVE STATUS\G;
关键字段:
Slave_IO_Running
: 应该为Yes
Slave_SQL_Running
: 应该为Yes
Last_Error
: 应该为空
MySQL 主从复制切换
1. 准备阶段
-
确认主从复制状态:
确保主从复制正常运行,从服务器已经完全同步了主服务器的数据。-- 在主服务器上查看状态 SHOW MASTER STATUS; -- 在从服务器上查看状态 SHOW SLAVE STATUS\G;
-
停止从服务器的复制:
停止从服务器上的复制进程,防止在切换过程中数据发生变化。STOP SLAVE;
2. 切换过程
-
将从服务器提升为主服务器:
将从服务器提升为主服务器,需要修改其配置文件,移除或注释掉relay-log
相关的配置,添加log-bin
配置。[mysqld] server-id=1 log-bin=mysql-bin
-
重启从服务器:
重启从服务器,使其生效新的配置。sudo systemctl restart mysql
-
修改应用程序连接:
修改应用程序的数据库连接配置,将连接指向新的主服务器。
3. 恢复原主服务器
-
将原主服务器降级为从服务器:
在原主服务器上修改配置文件,将其配置为从服务器。[mysqld] server-id=2 relay-log=mysql-relay-bin
-
启动原主服务器的复制:
启动原主服务器上的复制进程,使其从新的主服务器同步数据。-- 在原主服务器上执行 CHANGE MASTER TO MASTER_HOST='新主服务器的IP', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=12345; START SLAVE;
4. 验证切换
-
验证数据一致性:
确保所有数据已经同步完成,可以在从服务器上执行一些查询,验证数据的一致性。SELECT * FROM your_table LIMIT 10;
-
监控复制状态:
持续监控从服务器的复制状态,确保没有错误。SHOW SLAVE STATUS\G;
注意事项
- 数据一致性:切换过程中要确保数据的一致性,避免数据丢失或损坏。
- 应用程序影响:切换过程中可能会对应用程序产生短暂的影响,因此最好选择在业务低峰期进行切换。
- 备份:在切换前做好数据备份,以防万一。
- 监控:切换后要持续监控系统的运行状态,确保一切正常。
原文地址:https://blog.csdn.net/qq_18296979/article/details/143415022
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!