顾文强
顾文强
Published on 2025-01-21 / 3 Visits
0
0

Mysql 主从复制

MySQL主从复制的搭建涉及主服务器的配置、从服务器的配置、数据同步和复制过程的启动。以下是搭建MySQL主从复制的基本步骤,这些步骤适用于大多数MySQL版本,包括MySQL 8.0,但请注意,具体的配置细节和命令可能因版本而异。

1. 环境准备

  • 准备两台服务器,一台作为Master(主服务器),另一台作为Replica(从服务器)。

  • 确保两台服务器之间的网络连接是畅通的。

  • 在两台服务器上安装相同版本的MySQL Server。

2. 配置Master(主服务器)

‌2.1 编辑MySQL配置文件

通常,MySQL的配置文件位于/etc/my.cnf/etc/mysql/my.cnf。打开该文件,在[mysqld]部分添加或修改以下配置:

[mysqld]
log-bin=mysql-bin # 开启二进制日志
server-id=1 # 设置主服务器的唯一ID
binlog-do-db=your_database # 需要同步的数据库名称(可选)

2‌.2 重启MySQL服务‌

保存并关闭配置文件后,重启MySQL服务以使更改生效:

sudo systemctl restart mysqld # 对于Linux系统
# 或者
net stop mysql && net start mysql # 对于Windows系统

2.3 创建复制用户

登录到MySQL服务器,创建一个用于复制的用户账号:

CREATE USER 'replica_user'@'%' IDENTIFIED with mysql_native_password BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;

这里replica_user是用户名,replica_password是密码,可以根据实际情况进行修改。%表示允许任何IP地址的Replica服务器连接,为了安全起见,最好将其替换为特定的Slave服务器IP地址。

‌2.4 锁定表并备份数据

在进行数据同步之前,需要锁定Master服务器的表以防止写入操作:

FLUSH TABLES WITH READ LOCK;

然后,使用mysqldump工具备份需要同步的数据库:

mysqldump -u root -p --all-databases --master-data > dbdump.sql

备份完成后,解锁表:

UNLOCK TABLES;

3. 配置Replica(从服务器)

3‌.1 编辑MySQL配置文件

同样地,打开Replica服务器的MySQL配置文件。如果是用docker,则将配置文件复制出来。

docker cp mysql_replica:/etc/mysql/my.cnf ./

[mysqld]部分添加或修改以下配置:

[mysqld]
server-id=2 # 设置从服务器的唯一ID
relay-log=relay-bin # 开启中继日志
log-slave-updates=1 # 如果有多个从服务器,需要开启
read-only=1
# super-read-only=1

保存并关闭配置文件后,重启MySQL服务以使更改生效。

‌3.2 导入备份数据

将之前从Master服务器备份的数据文件(dbdump.sql)传输到Replica服务器,并导入到MySQL中:

mysql -u root -p < dbdump.sql

3‌.3 配置复制

在Slave服务器上,执行以下SQL命令来配置复制:

change replication source to source_host='master_ip', source_port=master_port, source_user='replica_user',source_password='replica_password',source_log_file='mysql-bin.000001',source_log_pos=31229929;

master_ip是Master服务器的IP地址 , master_port 是Master服务器的端口号,replica_user 是在Master主机上创建的从机用户, replica_password 是其密码, ecorded_log_file_namerecorded_log_position是在备份数据时记录的二进制日志文件名和位置。

3‌.4 启动复制线程

执行以下命令来启动Replica服务器上的复制线程:

START REPLICA;

‌3.5 检查复制状态

执行以下命令来检查复制状态:

SHOW REPLICA STATUS\G;

确保Replica_IO_RunningReplica_SQL_Running两个状态都是Yes,表示复制正常进行。

4. 验证复制

在Master服务器上创建一个新的数据库或表,然后在Replica服务器上检查是否成功同步。如果同步成功,表示MySQL主从复制已经成功搭建。

注意事项

  • 在生产环境中进行主从复制配置时,请务必小心谨慎,确保所有步骤都正确无误。

  • 在进行数据同步之前,最好先在测试环境中进行演练,以避免在生产环境中出现意外情况。

  • 定期检查和监控复制状态,及时发现并解决潜在的问题。


Comment