【详解】MySQL数据库双机热备的配置方法

举报
皮牙子抓饭 发表于 2025/11/11 10:23:44 2025/11/11
【摘要】 MySQL数据库双机热备的配置方法在企业级应用中,数据库的高可用性和数据的安全性是至关重要的。MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(Master-Slave)是一种常见的解决方案。本文将详细介绍如何配置MySQL的双机热备环境。1. 环境准备假设我们有两台服务器,分别作为主服务器(Master)和从服务器(Slave):主服务器(Ma...

MySQL数据库双机热备的配置方法

在企业级应用中,数据库的高可用性和数据的安全性是至关重要的。MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(Master-Slave)是一种常见的解决方案。本文将详细介绍如何配置MySQL的双机热备环境。

1. 环境准备

假设我们有两台服务器,分别作为主服务器(Master)和从服务器(Slave):

  • 主服务器(Master):192.168.1.100
  • 从服务器(Slave):192.168.1.101

1.1 安装MySQL

确保两台服务器上都安装了相同版本的MySQL。可以使用以下命令安装MySQL:

sudo apt-get update
sudo apt-get install mysql-server

1.2 配置MySQL

1.2.1 主服务器配置

编辑主服务器的MySQL配置文件​​/etc/mysql/my.cnf​​,添加或修改以下内容:

[mysqld]
server-id=1
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=your_database_name
  • ​server-id​​:每个MySQL实例必须有一个唯一的ID。
  • ​log_bin​​:指定二进制日志文件的路径。
  • ​binlog_do_db​​:指定需要同步的数据库名称。

重启MySQL服务以使配置生效:

sudo systemctl restart mysql
1.2.2 从服务器配置

编辑从服务器的MySQL配置文件​​/etc/mysql/my.cnf​​,添加或修改以下内容:

[mysqld]
server-id=2
relay-log=/var/log/mysql/mysql-relay-bin.log
log_bin=/var/log/mysql/mysql-bin.log
  • ​server-id​​:每个MySQL实例必须有一个唯一的ID。
  • ​relay-log​​:指定中继日志文件的路径。
  • ​log_bin​​:指定二进制日志文件的路径。

重启MySQL服务以使配置生效:

sudo systemctl restart mysql

2. 配置主从复制

2.1 创建复制用户

在主服务器上创建一个用于复制的用户,并授予相应的权限:

CREATE USER 'repl'@'192.168.1.101' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101';
FLUSH PRIVILEGES;

2.2 获取主服务器的二进制日志文件和位置

在主服务器上执行以下命令,获取当前二进制日志文件和位置:

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

记录下​​File​​和​​Position​​的值,例如:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 12345    | your_database|                  |
+------------------+----------+--------------+------------------+

2.3 配置从服务器

在从服务器上执行以下命令,配置从服务器连接到主服务器:

CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=12345;

2.4 启动从服务器的复制线程

在从服务器上启动复制线程:

START SLAVE;

2.5 检查复制状态

在从服务器上检查复制状态:

SHOW SLAVE STATUS\G

确保​​Slave_IO_Running​​和​​Slave_SQL_Running​​都为​​Yes​​,表示复制正常运行。

3. 测试主从复制

在主服务器上创建一个测试表并插入一些数据:

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(100));
INSERT INTO test_table VALUES (1, 'Alice'), (2, 'Bob');

在从服务器上检查数据是否同步:

USE test_db;
SELECT * FROM test_table;

如果数据已经同步到从服务器,说明主从复制配置成功。


MySQL的双机热备(也称为主从复制)是一种常见的高可用性解决方案,通过在两台或多台服务器之间同步数据来提高系统的可靠性和性能。在主从复制中,一台服务器作为主服务器(Master),负责处理所有的写操作;其他服务器作为从服务器(Slave),负责读取数据并复制主服务器的数据变更。

下面是一个基本的MySQL主从复制配置步骤和示例代码:

1. 配置主服务器(Master)

首先,在主服务器上编辑MySQL配置文件​​my.cnf​​或​​my.ini​​,通常位于​​/etc/mysql/​​目录下,添加或修改以下内容:

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=row
  • ​server-id​​:每个MySQL实例必须有一个唯一的ID。
  • ​log-bin​​:启用二进制日志,用于记录所有更改数据库的操作。
  • ​binlog-format​​:设置二进制日志格式为行格式,这有助于更精确地复制数据。

重启MySQL服务以应用更改:

sudo systemctl restart mysql

2. 创建复制用户

在主服务器上创建一个专门用于复制的用户,并赋予相应的权限:

CREATE USER 'replication'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
FLUSH PRIVILEGES;

3. 获取主服务器的状态信息

执行以下命令获取主服务器的当前二进制日志文件名和位置,这些信息将在配置从服务器时使用:

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

输出示例:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      120 |              |                  |
+------------------+----------+--------------+------------------+

记住​​File​​和​​Position​​的值,因为它们将用于配置从服务器。

4. 解锁表

在获取了必要的信息后,解锁表:

UNLOCK TABLES;

5. 配置从服务器(Slave)

编辑从服务器上的MySQL配置文件​​my.cnf​​或​​my.ini​​,添加或修改以下内容:

[mysqld]
server-id=2
relay-log=mysql-relay-bin
log-slave-updates=1
read-only=1
  • ​server-id​​:确保与主服务器不同。
  • ​relay-log​​:指定中继日志文件的名称。
  • ​log-slave-updates​​:允许从服务器将其接收到的更新记录到自己的二进制日志中。
  • ​read-only​​:使从服务器只读,防止意外的数据修改。

重启MySQL服务以应用更改:

sudo systemctl restart mysql

6. 配置从服务器连接主服务器

在从服务器上执行以下SQL命令,配置从服务器连接到主服务器:

CHANGE MASTER TO
MASTER_HOST='master_server_ip',
MASTER_USER='replication',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=120;
  • ​MASTER_HOST​​:主服务器的IP地址。
  • ​MASTER_USER​​:在主服务器上创建的复制用户的用户名。
  • ​MASTER_PASSWORD​​:复制用户的密码。
  • ​MASTER_LOG_FILE​​ 和 ​​MASTER_LOG_POS​​:从主服务器的​​SHOW MASTER STATUS;​​命令中获得的值。

7. 启动从服务器的复制进程

在从服务器上启动复制进程:

START SLAVE;

检查复制状态:

SHOW SLAVE STATUS\G

确保​​Slave_IO_Running​​和​​Slave_SQL_Running​​都显示为​​Yes​​,表示复制正在正常运行。

8. 测试复制

在主服务器上创建一个测试数据库和表,并插入一些数据,然后检查从服务器上是否同步了这些更改。

-- 在主服务器上
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(100));
INSERT INTO test_table VALUES (1, 'Test');

-- 在从服务器上
USE test_db;
SELECT * FROM test_table;

如果从服务器上能看到相同的表和数据,说明主从复制配置成功。

MySQL数据库的双机热备(也称为主从复制)是一种常见的高可用性解决方案,它通过在两台或多台服务器之间同步数据来确保系统的可靠性和连续性。主从复制的基本原理是将一台MySQL服务器设置为主服务器(Master),另一台或多台设置为从服务器(Slave)。主服务器上的所有更改都会被记录到二进制日志(Binary Log)中,从服务器则会读取这些日志并应用相应的更改。

以下是配置MySQL主从复制的基本步骤,包括所需的SQL命令和配置文件修改:

1. 配置主服务器

修改主服务器的​​my.cnf​​配置文件

首先,需要编辑主服务器的MySQL配置文件(通常是​​/etc/mysql/my.cnf​​或​​/etc/my.cnf​​),添加或修改以下内容以启用二进制日志和唯一服务器ID:

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=row
  • ​server-id​​:每个MySQL实例必须有一个唯一的标识符。
  • ​log-bin​​:指定二进制日志的前缀名。
  • ​binlog-format​​:设置二进制日志格式,推荐使用​​row​​模式。
重启MySQL服务

保存配置文件后,重启MySQL服务使配置生效:

sudo systemctl restart mysql
创建用于复制的用户

在主服务器上创建一个专门用于复制的MySQL用户,并赋予相应的权限:

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
  • ​CREATE USER​​:创建新用户。
  • ​GRANT REPLICATION SLAVE​​:授予该用户复制权限。
  • ​FLUSH PRIVILEGES​​:刷新权限表,使更改立即生效。
获取二进制日志位置

在开始复制之前,需要锁定主服务器的数据表,获取当前的二进制日志文件名和位置:

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

记录下输出的​​File​​和​​Position​​值,这些信息将在配置从服务器时使用。完成操作后,解锁表:

UNLOCK TABLES;

2. 配置从服务器

修改从服务器的​​my.cnf​​配置文件

同样地,编辑从服务器的MySQL配置文件,添加或修改以下内容:

[mysqld]
server-id=2
  • ​server-id​​:设置与主服务器不同的唯一标识符。
重启MySQL服务

保存配置文件后,重启MySQL服务:

sudo systemctl restart mysql
配置从服务器连接主服务器

在从服务器上执行以下SQL命令,配置从服务器连接到主服务器,并指定二进制日志文件和位置:

CHANGE MASTER TO
MASTER_HOST='master_host_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=4;
  • ​MASTER_HOST​​:主服务器的IP地址。
  • ​MASTER_USER​​、​​MASTER_PASSWORD​​:用于复制的用户名和密码。
  • ​MASTER_LOG_FILE​​、​​MASTER_LOG_POS​​:从哪个二进制日志文件和位置开始复制。
启动复制进程

启动从服务器的复制进程:

START SLAVE;

3. 验证复制状态

在从服务器上检查复制状态,确保一切正常:

SHOW SLAVE STATUS\G

重点查看以下几个字段:

  • ​Slave_IO_Running​​ 和 ​​Slave_SQL_Running​​ 应该都显示为 ​​Yes​​。
  • ​Last_Error​​ 和 ​​Last_IO_Error​​ 应该为空。

如果一切正常,那么主从复制就已经成功配置了。

注意事项

  • 确保主从服务器之间的网络连接畅通。
  • 定期检查复制状态,确保没有延迟或错误。
  • 考虑使用SSL加密复制通道,提高安全性。

以上就是MySQL数据库双机热备的基本配置方法。希望对你有所帮助!如果有任何问题或需要进一步的帮助,请随时提问。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。