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_name
和recorded_log_position
是在备份数据时记录的二进制日志文件名和位置。
3.4 启动复制线程
执行以下命令来启动Replica服务器上的复制线程:
START REPLICA;
3.5 检查复制状态
执行以下命令来检查复制状态:
SHOW REPLICA STATUS\G;
确保Replica_IO_Running
和Replica_SQL_Running
两个状态都是Yes
,表示复制正常进行。
4. 验证复制
在Master服务器上创建一个新的数据库或表,然后在Replica服务器上检查是否成功同步。如果同步成功,表示MySQL主从复制已经成功搭建。
注意事项
在生产环境中进行主从复制配置时,请务必小心谨慎,确保所有步骤都正确无误。
在进行数据同步之前,最好先在测试环境中进行演练,以避免在生产环境中出现意外情况。
定期检查和监控复制状态,及时发现并解决潜在的问题。