MySQL 主从复制是将主数据库的变更自动同步到从数据库的过程,常用语读写分离、高可用性和数据备份。
1.环境准备
确保主从服务器已安装相同版本的 MySQL,并能通过网络互相访问。
# 检查 MySQL 版本
mysql -V
2.配置主服务器
(1)编辑主服务器的配置文件(通常是 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf)
[mysqld]
server-id = 1 # 唯一标识,建议使用IP地址的最后一个数
log-bin = mysql-bin # 启用二进制日志
expire-logs-days = 10 # 二进制日志过期时间
(2)重启 MySQL 服务并验证配置
sudo systemctl restart mysql
mysql -e "SHOW VARIABLES LIKE 'log_bin';" # 应显示 ON
(3) 创建复制用户
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;
3.配置从服务器
(1)编辑从服务器的配置文件
[mysqld]
server-id = 2 # 唯一标识,不能与主库重复
log-bin = mysql-bin # 从库也可作为其他从库的主库时需要
read-only = 1 # 从库设置为只读(可选)
(2)重启 MySQL 服务
sudo systemctl restart mysql
(3)连接从服务器到主服务器
在从服务器上执行以下命令,配置主从关系:
CHANGE MASTER TOMASTER_HOST='主服务器IP',MASTER_USER='repl_user',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001', # 替换为主服务器的日志文件名MASTER_LOG_POS=123456; # 替换为主服务器的日志位置START SLAVE;SHOW SLAVE STATUS\G;
检查以下两个状态是否均为 Yes:Slave_IO_Running: Yes
Slave_SQL_Running: Yes