MySQL双机热备份是一种高可用性和灾难恢复策略,通过实时同步主数据库的数据到备用数据库来确保业务连续性,本文将详细介绍在Windows环境下使用MySQL 8.0.21版本进行双机热备份的实验过程,包括环境准备、账号设置、配置文件修改、服务状态检查以及数据同步测试等步骤。
试验环境
操作系统:VMware虚拟机环境,Window 7 操作系统
数据库工具软件:Navicat Premium 15
服务器配置:两台安装MySQL的服务器(计算机)分别是:
服务器A:IP地址为192.168.229.131
服务器B:IP地址为192.168.229.132
需要同步的数据库名:mytest
试验目的
学习、测试Windows下的MySQL双机热备是否可行。
准备数据库
在两台服务器上分别建立空白数据库:
CREATE DATABASE mytest;
准备账号
在两台服务器上分别建立账号syn
(账号名字随意):
在服务器A上执行 CREATE USER 'syn'@'192.168.229.132' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON *.* TO 'syn'@'192.168.229.132'; 在服务器B上执行 CREATE USER 'syn'@'192.168.229.131' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON *.* TO 'syn'@'192.168.229.131';
修改配置文件
分别修改服务器A和服务器B的配置文件my.ini
,在配置文件最后添加以下代码:
服务器A配置
serverid=1 logbin=backuplog sync_binlog=1 binlog_format=row auto_increment_increment = 2 auto_increment_offset = 1 max_binlog_size=512m expire_logs_days=1 binlog_do_db=mytest binlog_ignore_db=mysql binlog_ignore_db=information_schema replicate_do_db=mytest replicate_wild_ignore_table=mytest.logslave_skip_errors=all
服务器B配置
serverid=2 logbin=backuplog sync_binlog=1 binlog_format=row auto_increment_increment = 2 auto_increment_offset = 2 max_binlog_size=512m expire_logs_days=1 binlog_do_db=mytest binlog_ignore_db=mysql binlog_ignore_db=information_schema replicate_do_db=mytest replicate_wild_ignore_table=mytest.logslave_skip_errors=all
重启服务器
修改完毕后,分别重启服务器。
net stop mysql net start mysql
检查master服务状态
重启完毕后,分别检查服务器上mysql服务的状态。
SHOW MASTER STATUS\G;
指定同步位置
用CHANGE MASTER TO
命令指定同步位置,在服务器A和服务器B上分别执行以下命令:
服务器A
STOP SLAVE; CHANGE MASTER TO MASTER_HOST='192.168.229.132', MASTER_USER='replicate', MASTER_PASSWORD='123456', MASTER_LOG_FILE='backuplog.000001', MASTER_LOG_POS=0; START SLAVE;
服务器B
STOP SLAVE; CHANGE MASTER TO MASTER_HOST='192.168.229.131', MASTER_USER='replicate', MASTER_PASSWORD='123456', MASTER_LOG_FILE='backuplog.000001', MASTER_LOG_POS=0; START SLAVE;
检查slave服务状态
SHOW SLAVE STATUS\G;
有Slave_IO_Running
,Slave_SQL_Running
两项的结果都必须为Yes,才表示设置从服务器成功,如果不是,则需要检查Last_IO_Errno
和Last_IO_Error
两项。
测试
建表测试
在服务器A建表created_by_a
:
CREATE TABLE created_by_a (id INT PRIMARY KEY, name VARCHAR(50));
插入数据测试
在服务器A插入数据:
INSERT INTO created_by_a (name) VALUES ('Test');
删除数据
在服务器A删除数据:
DELETE FROM created_by_a;
更新数据
在服务器A更新数据:
UPDATE created_by_a SET name = 'Updated Test' WHERE id = 1;
关闭服务器B后测试
关闭服务器B,然后再次尝试插入数据:
在服务器A上插入数据 INSERT INTO created_by_a (name) VALUES ('Test after B down');
通过上述步骤,可以验证MySQL双机热备份的可靠性和稳定性,确保在主服务器故障时备服务器能够正确接管并保持数据的完整性,如果所有测试都成功通过,说明双机热备配置正确且有效。
序号 | 操作步骤 | 描述 | 备注 |
1 | 安装MySQL | 在两台服务器上安装相同的MySQL版本 | 确保两台服务器硬件和软件环境一致 |
2 | 创建主数据库 | 在主服务器上创建需要备份的数据库 | 确保数据库数据完整 |
3 | 配置主数据库 | 在主数据库中配置主从复制相关参数 | 包括主从同步的复制用户、密码等 |
4 | 配置从数据库 | 在从数据库中配置主从复制相关参数 | 包括设置主数据库的IP地址和端口 |
5 | 启动主从复制 | 在主数据库上执行start slave 命令,在从数据库上执行start slave 命令 | 确保主从复制正常运行 |
6 | 检查主从复制状态 | 分别在主数据库和从数据库上执行show slave statusG 命令,检查主从复制状态 | 确保没有错误信息 |
7 | 停止主数据库服务 | 在主数据库服务器上停止MySQL服务 | 为了模拟主数据库故障 |
8 | 启动从数据库服务 | 在从数据库服务器上启动MySQL服务 | 为了模拟主数据库故障后的切换 |
9 | 检查从数据库状态 | 在从数据库服务器上执行show slave statusG 命令,检查主从复制状态 | 确保从数据库已经接管主数据库的复制任务 |
10 | 恢复主数据库服务 | 在主数据库服务器上启动MySQL服务 | 为了完成主从复制测试 |
11 | 检查主从复制状态 | 分别在主数据库和从数据库上执行show slave statusG 命令,检查主从复制状态 | 确保主从复制恢复正常 |
12 | 删除从数据库中的数据 | 在从数据库中删除主数据库中的数据 | 为了模拟数据恢复 |
13 | 恢复从数据库数据 | 将主数据库中的数据复制到从数据库 | 为了完成数据恢复测试 |
14 | 检查数据一致性 | 比较主数据库和从数据库中的数据 | 确保数据恢复无误 |
15 | 关闭从数据库服务 | 在从数据库服务器上停止MySQL服务 | 为了完成主从复制测试 |
16 | 恢复主数据库服务 | 在主数据库服务器上启动MySQL服务 | 为了完成主从复制测试 |
17 | 检查主从复制状态 | 分别在主数据库和从数据库上执行show slave statusG 命令,检查主从复制状态 | 确保主从复制恢复正常 |
18 | 完成测试 | 所有测试步骤完成后,完成MySQL双机热备份试验 |