配置MySQL主服务器需先修改my.cnf,设置server-id、启用log-bin并配置二进制日志格式与策略,重启服务后创建复制用户repl并授权,再通过SHOW MASTER STATUS获取File和Position值,可选导出数据并验证binlog和server-id配置,确保后续从服务器同步成功。
MySQL 配置主服务器(Master)是实现主从复制的第一步,主要用于数据同步、备份或读写分离。以下是配置 MySQL Master 服务器的关键步骤和要点。
1. 修改 MySQL 配置文件
编辑 MySQL 的配置文件 my.cnf(Linux 通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf),在 [mysqld] 段落中添加以下内容:
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
expire_logs_days = 7
max_binlog_size = 100M
- server-id:每个 MySQL 实例必须有唯一 ID,主服务器设为 1
- log-bin:启用二进制日志,用于记录所有数据变更
- binlog-format:推荐使用 ROW 模式,更安全且兼容性好
- expire_logs_days 和 max_binlog_size:控制日志保留策略,避免磁盘占满
修改后重启 MySQL 服务:
sudo systemctl restart mysql
2. 创建用于复制的用户
登录 MySQL,创建一个专用于主从复制的账号,并授予复制权限:
CREATE USER ‘repl’@’%’ IDENTIFIED BY ‘your_password‘;
GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’%’;
FLUSH PRIVILEGES;
- 用户名可以自定义(如 repl),密码需设置强密码
- ‘%’ 表示允许从任意 IP 连接,生产环境建议限制为从服务器 IP
3. 获取主服务器状态信息
在主库执行以下命令,查看当前二进制日志位置:
SHOW MASTER STATUS;
返回结果类似:
File: mysql-bin.000003
Position: 154
Binlog_Do_DB:
Binlog_Ignore_DB:
- 记下 File 和 Position,从服务器配置时需要使用
- 确保此时没有写入操作,或锁定数据库以保证一致性(可选):
FLUSH TABLES WITH READ LOCK;
4. 导出数据(可选但推荐)
如果从服务器是全新搭建,建议先导出主库当前数据:
mysqldump -u root -p –all-databases –master-data=2 > master_dump.sql
- –master-data=2 会在 dump 文件中记录正确的 binlog 位置
- 完成后可解锁表:UNLOCK TABLES;
5. 验证主服务器配置
- 检查是否开启 binlog:SHOW VARIABLES LIKE ‘log_bin’; 应返回 ON
- 确认 server-id 是否生效:SHOW VARIABLES LIKE ‘server_id’;
- 查看 binlog 文件:SHOW BINARY LOGS;
主服务器配置完成后,接下来可在从服务器上使用 CHANGE MASTER TO 命令连接并开始复制。
基本上就这些,关键是开启 binlog、设置唯一 server-id、创建复制用户并提供正确的位置信息。配置不复杂,但每一步都需准确无误。