MySQL 主从同步能有效提升数据冗余备份与负载均衡。下面我将以 MySQL 5.7.40 版本为例,详细讲解如何进行主从同步配置。
MySQL 5.7.40 主从同步配置教程
一、环境准备
假设我们有两台服务器,一台作为主服务器(Master),IP 为 192.168.1.100;另一台作为从服务器(Slave),IP 为 192.168.1.101。确保两台服务器都安装了 MySQL 5.7.40 版本,并且网络通畅,能相互通信。
二、主服务器配置
(一)修改主服务器配置文件
在主服务器上,编辑 MySQL 配置文件,一般为/etc/mysql/mysql.conf.d/mysqld.cnf
(不同系统路径可能略有差异)。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在文件中添加或修改以下配置项:
[mysqld]
# 开启二进制日志,记录数据库的变更操作
log-bin=mysql-bin# 主服务器唯一ID,取值范围1 - 2^32-1server-id=1# 配置需要同步的数据库,可配置多个binlog-do-db=your_database_name
保存并关闭文件。
(二)重启 MySQL 服务
sudo systemctl restart mysql
(三)创建用于同步的用户
登录 MySQL:
mysql -u root -p
输入密码进入 MySQL 命令行后,创建一个用于从服务器连接的用户,例如:
CREATE USER 'slave_user'@'192.168.1.101' IDENTIFIED BY 'your_password';
授予该用户复制权限:
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'192.168.1.101' REQUIRE NONE WITH MAX_USER_CONNECTIONS 0;
刷新权限:
FLUSH PRIVILEGES;
然后查看主服务器状态:
SHOW MASTER STATUS;
记录下File
和Position
的值,后续从服务器配置会用到。例如:
+------------------+----------+--------------+------------------+-------------------+\| File | Position | Binlog\_Do\_DB | Binlog\_Ignore\_DB | Executed\_Gtid\_Set |+------------------+----------+--------------+------------------+-------------------+\| mysql-bin.000003 | 154 | your\_database\_name | | |+------------------+----------+--------------+------------------+-------------------+
三、从服务器配置
(一)修改从服务器配置文件
在从服务器上,同样编辑 MySQL 配置文件/etc/mysql/mysql.conf.d/mysqld.cnf
。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
添加或修改以下配置项:
[mysqld]# 从服务器唯一ID,不能与主服务器重复server-id=2
保存并关闭文件。
(二)重启 MySQL 服务
sudo systemctl restart mysql
(三)配置从服务器连接主服务器
登录 MySQL:
mysql -u root -p
进入 MySQL 命令行后,配置从服务器连接主服务器的信息:
CHANGE MASTER TOMASTER_HOST='192.168.1.100',MASTER_USER='slave_user',MASTER_PASSWORD='your_password',MASTER_LOG_FILE='记录的主服务器File值',MASTER_LOG_POS=记录的主服务器Position值;
例如:
CHANGE MASTER TOMASTER_HOST='192.168.1.100',MASTER_USER='slave_user',MASTER_PASSWORD='your_password',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=154;
(四)启动从服务器同步
START SLAVE;
(五)检查从服务器状态
SHOW SLAVE STATUS \G;
重点关注以下两个参数:
Slave_IO_Running
和Slave_SQL_Running
都应为Yes
,表示 I/O 线程和 SQL 线程都正常运行。
Seconds_Behind_Master
表示从服务器落后主服务器的时间,如果为 0,则表示同步正常。
如果配置过程中出现问题,可查看 MySQL 错误日志(一般在/var/log/mysql/error.log
)排查错误原因。
通过以上步骤,即可完成 MySQL 5.7.40 版本的主从同步配置,实现数据在主从服务器之间的实时同步,保障数据的安全性和高可用性。