linux下mysql主从复制操作流程
在Linux下实现MySQL主从复制(Master-Slave Replication)是一个常见的需求,用于读写分离、数据备份等场景。以下是一个详细的操作流程,包括每个步骤、注意事项以及总结。
一、准备环境
-
安装MySQL
- 确保主服务器(Master)和从服务器(Slave)都已经安装了MySQL。
- 可以通过包管理工具安装,例如:
sudo apt-get install mysql-server
(Debian/Ubuntu)或sudo yum install mysql-server
(CentOS/RHEL)。
-
配置网络连通性
- 确保主服务器和从服务器之间可以通过网络相互通信。
二、配置主服务器(Master)
-
编辑MySQL配置文件
- 打开MySQL配置文件(通常是
/etc/mysql/mysql.conf.d/mysqld.cnf
或/etc/my.cnf
)。 - 添加或修改以下内容:
[mysqld] server-id = 1 log-bin = mysql-bin binlog-do-db = your_database # 仅复制特定的数据库,可选
server-id
:每个服务器的唯一标识符,主服务器和从服务器不能相同。log-bin
:启用二进制日志。binlog-do-db
:仅复制特定的数据库,如果希望复制所有数据库,可以省略此行。
- 打开MySQL配置文件(通常是
-
重启MySQL服务
- 重启MySQL服务以使配置生效:
sudo systemctl restart mysql
- 重启MySQL服务以使配置生效:
-
创建复制用户
- 登录到MySQL:
mysql -u root -p
- 创建一个用于复制的用户,并授予必要的权限:
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'replica_password'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; FLUSH PRIVILEGES;
- 登录到MySQL:
-
锁定表并获取二进制日志位置
- 为了确保数据一致性,锁定表并获取当前二进制日志文件名和位置:
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
- 记录下
File
和Position
的值,稍后从服务器上会用到。
- 为了确保数据一致性,锁定表并获取当前二进制日志文件名和位置:
-
备份数据库
- 使用
mysqldump
备份数据库,并传输到从服务器:mysqldump -u root -p --all-databases --master-data=2 > all_databases.sql
- 将生成的
all_databases.sql
文件复制到从服务器。
- 使用
-
解锁表
- 在主服务器上解锁表:
UNLOCK TABLES;
- 在主服务器上解锁表:
三、配置从服务器(Slave)
-
编辑MySQL配置文件
- 打开MySQL配置文件(路径同上)。
- 添加或修改以下内容:
[mysqld] server-id = 2 relay-log = mysql-relay-bin
server-id
:确保与主服务器不同。relay-log
:定义中继日志文件名。
-
重启MySQL服务
- 重启MySQL服务以使配置生效:
sudo systemctl restart mysql
- 重启MySQL服务以使配置生效:
-
导入主服务器的备份
- 将之前在主服务器上生成的
all_databases.sql
文件导入到从服务器:mysql -u root -p < all_databases.sql
- 将之前在主服务器上生成的
-
配置从服务器以连接到主服务器
- 登录到从服务器的MySQL:
mysql -u root -p
- 配置从服务器:
CHANGE MASTER TO MASTER_HOST='master_server_ip', MASTER_USER='replica_user', MASTER_PASSWORD='replica_password', MASTER_LOG_FILE='mysql-bin.000001', # 使用SHOW MASTER STATUS得到的File值 MASTER_LOG_POS= 12345; # 使用SHOW MASTER STATUS得到的Position值
- 登录到从服务器的MySQL:
-
启动复制
- 在从服务器上启动复制进程:
START SLAVE;
- 在从服务器上启动复制进程:
-
检查复制状态
- 检查从服务器状态:
SHOW SLAVE STATUS \G;
- 确保
Slave_IO_Running
和Slave_SQL_Running
都为Yes
,并且没有错误。
- 检查从服务器状态:
四、注意事项
-
防火墙和网络
- 确保MySQL端口(默认3306)在主服务器和从服务器之间开放。
-
数据一致性
- 在主服务器上进行备份和获取二进制日志位置时,确保没有写入操作,或者选择适当的备份策略(如使用Percona XtraBackup等工具)。
-
权限和安全性
- 复制用户应仅授予必要的权限,并且密码应足够复杂。
- 使用SSL加密复制连接以增加安全性。
-
监控和故障排查
- 定期监控复制状态,及时发现并解决问题。
- 使用工具如
pt-table-checksum
和pt-table-sync
来检查和修复数据不一致。
五、总结
MySQL主从复制是一个强大且灵活的功能,可以显著提高数据库的可用性和可扩展性。通过遵循上述步骤,您可以轻松地在Linux下实现MySQL的主从复制。重要的是,要仔细规划配置,确保网络连通性和安全性,以及定期监控复制状态以维护数据一致性。
标签:主从复制,mysql,linux,server,复制,MASTER,MySQL,服务器 From: https://blog.csdn.net/qq_44734705/article/details/144462632