在MySQL中配置复制(Replication)时,需要设置一个专门用于主从同步的复制账户。这个账户供从库(Slave)连接主库(Master)时使用,用于读取主库的二进制日志(binlog)。以下是详细的配置步骤和注意事项。
创建复制账户
登录到主库的MySQL服务器,使用具有
CREATE USER和
REPLICATION SLAVE权限的账号(如root)执行以下命令:
语法示例:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
说明:
'repl'是复制账户的用户名,可自定义。
'%'表示允许从任意IP连接,生产环境建议限制为从库的IP,例如
'repl'@'192.168.1.10'更安全。
REPLICATION SLAVE权限是必须的,它允许该账户读取主库的binlog日志。 执行后运行
FLUSH PRIVILEGES;刷新权限(通常自动完成,但建议执行)。
启用主库的二进制日志
复制依赖于主库的binlog,因此必须确保主库已开启并正确配置。编辑MySQL配置文件(通常是
/etc/my.cnf或
/etc/mysql/mysql.conf.d/mysqld.cnf): [mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
参数解释:
server-id:每台MySQL实例必须有唯一ID,主库设为1,从库设为其他值(如2)。
log-bin:启用二进制日志,并指定文件前缀。
binlog-format:推荐使用
ROW格式,更安全且适合大多数场景。
修改后重启MySQL服务使配置生效。
获取主库binlog位置
在主库上执行以下命令,查看当前binlog文件名和位置,用于从库初始化同步:
SHOW MASTER STATUS;输出示例:
+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 1234 | | |
+------------------+----------+--------------+------------------+
记录下
File和
Position值,后续配置从库时会用到。
从库配置复制连接
在从库MySQL中执行以下命令,设置主库连接信息:
CHANGE MASTER TOMASTER_HOST='主库IP地址',
MASTER_USER='repl',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=1234;
START SLAVE;
执行后检查从库状态:
SHOW SLAVE STATUS\G重点关注以下两个字段:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果都为Yes,说明复制正常运行。
基本上就这些。只要主库开启binlog、创建了具备REPLICATION SLAVE权限的账户,并在从库正确配置连接参数,复制就能顺利建立。注意网络连通性和防火墙设置,确保从库能访问主库的3306端口。
