已编辑 4 几天前 通过 ExtremeHow 编辑团队
DebianMySQL复制数据库服务器设置SQLLinux开源系统管理命令行界面
翻译更新 4 几天前
MySQL 复制是一种允许您自动将数据从一个 MySQL 数据库服务器(主服务器)复制到一个或多个 MySQL 数据库服务器(从服务器)的过程。这种设置对于提高性能、可靠性和负载平衡非常有用。在本指南中,我们将逐步介绍在 Debian Linux 服务器上设置 MySQL 复制所需的步骤。我们将涵盖从准备服务器、配置复制设置以及验证复制是否正常工作的所有内容。让我们开始吧。
MySQL 复制允许在数据库服务器之间异步复制数据。主服务器称为主服务器,任何接收复制数据的次要服务器称为从服务器。这种架构在许多场景中非常有利,例如读密集型数据库环境、数据备份和恢复过程、数据分析以及地理分布的数据中心。
在开始设置 MySQL 复制之前,请确保满足以下条件:
我们将首先配置主服务器,该服务器将保存原始数据并将更新发送到从服务器。
首先打开主服务器上的 MySQL 配置文件。此文件通常位于 /etc/mysql/mysql.conf.d/mysqld.cnf
。使用文本编辑器如 nano
编辑它:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
查找配置文件中的 [mysqld] 部分,并修改或添加以下行:
[mysqld] log-bin = mysql-bin server-id = 1
log-bin
指令启用二进制日志,它是复制所需的,因为它记录数据库的所有更改。server-id
对于复制设置中的每个服务器必须是唯一的正整数。在本例中,我们将 1
用作主服务器的 ID。
编辑后,保存并关闭文件。如果使用 nano,可以通过按 CTRL + X
,然后 Y
,再按 ENTER
来完成。
要应用我们所做的更改,请重新启动 MySQL 服务:
sudo systemctl restart mysql
接下来,登录到主服务器上的 MySQL 命令行以创建从服务器可用于复制连接的用户帐户。使用以下命令:
mysql -u root -p
登录后,执行以下 SQL 命令以创建一个复制用户并授予其权限。替换 'replica_user'
和 'password'
为您选择的用户名和密码:
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; FLUSH PRIVILEGES;
这些命令创建了一个具有复制权限的新 MySQL 用户。使用 '%'
作为主机允许从任意 IP 地址连接。
在进行从服务器配置之前,您需要记录当前的主日志文件和状态。使用以下命令获取此信息:
SHOW MASTER STATUS;
请注意 File
和 Position
值,因为在设置从服务器时将需要它们。输出可能类似于:
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 123 | | | +------------------+----------+--------------+------------------+
配置完主服务器后,下一步是设置从服务器。
与主服务器配置相同,打开每个从服务器上的 MySQL 配置文件,编辑 /etc/mysql/mysql.conf.d/mysqld.cnf
:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
确保 [mysqld] 部分具有以下设置:
[mysqld] server-id = 2 relay-log = mysql-relay-bin
server-id
必须是唯一且不同于复制设置中的任何其他服务器。在这里,我们使用 2
。relay-log
配置有助于处理来自主服务器的复制流。
编辑后,如前所述保存并关闭配置文件。
重新启动从服务器上的 MySQL 服务以应用更改:
sudo systemctl restart mysql
登录到从服务器上的 MySQL 命令行客户端:
mysql -u root -p
登录后,使用 CHANGE MASTER TO
命令将从服务器连接到主服务器。确保将 'master_host'
、'replica_user'
、'password'
、'mysql-bin.X'
和 position_number
替换为相应的主服务器 IP 地址、复制用户名、密码、日志文件和先前获取的位置:
CHANGE MASTER TO MASTER_HOST = 'master_host', MASTER_USER = 'replica_user', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.X', MASTER_LOG_POS = position_number;
配置主服务器信息后,使用以下命令启动从服务器进程:
START SLAVE;
要检查从服务器是否已正确设置并连接到主服务器,请执行:
SHOW SLAVE STATUS\G;
查看输出中的 Slave_IO_Running
和 Slave_SQL_Running
字段。两者都应显示为 Yes
,表示从服务器正常工作。您还应查看 Relay_Master_Log_File
和 Exec_Master_Log_Pos
的值,它们确认了复制的进度。
一旦您设置好了主服务器和从服务器,最好测试复制设置,以确保一切都按预期工作。
要测试复制,请尝试在主服务器上插入一个简单的数据项,并查看它是否出现在从服务器上。
在主服务器上,登录到 MySQL 并创建一个简单的数据库和表:
mysql -u root -p
CREATE DATABASE testdb; USE testdb; CREATE TABLE testtable (id INT PRIMARY KEY AUTO_INCREMENT, value VARCHAR(255)); INSERT INTO testtable (value) VALUES ('Replication Test');
登录到从服务器上的 MySQL 命令行并检查数据是否已被复制:
mysql -u root -p
USE testdb; SELECT * FROM testtable;
您应能看到主表中插入的行现在出现在从表中。如果复制正常工作,您会看到:
+----+------------------+ | id | value | +----+------------------+ | 1 | Replication Test | +----+------------------+
如果在过程中或之后出现问题,可以考虑以下常见的故障排除步骤:
ping
或 telnet
命令)。MySQL 复制在 Debian 上的配置,如本文所示,涉及到对主服务器和从服务器进行配置,以处理和重现跨多个系统的数据库更改。这种设置可以大大提高可靠性和数据访问效率。虽然设置复制需要一些努力并需要了解数据库的架构,但遵循这些说明应使该过程变得可管理和成功。
请记住,定期监控 MySQL 服务器并定期检查复制数据的一致性和性能,以确保系统运行平稳和高效,始终是个好主意。
如果你发现文章内容有误, 您可以