Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL双机热备配置

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

作者:牛肉胡辣汤

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

1. 环境准备

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

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

重启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

重启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

重启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

重启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;

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

重启MySQL服务

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

sudo systemctl restart mysql

创建用于复制的用户

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

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

获取二进制日志位置

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

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

2. 配置从服务器

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

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

[mysqld]
server-id=2

重启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;

启动复制进程

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

START SLAVE;

3. 验证复制状态

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

SHOW SLAVE STATUS\G

重点查看以下几个字段:

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

注意事项

以上就是MySQL数据库双机热备的配置方法详解的详细内容,更多关于MySQL双机热备配置的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文