面试题答案
一键面试参数配置注意事项
- MASTER_HOST:主库的IP地址,需确保网络可达,检查防火墙配置等确保主从之间能通信。
- MASTER_USER:用于主从复制的账号,该账号需有REPLICATION SLAVE权限。
- MASTER_PASSWORD:上述账号的密码,注意密码的准确性,区分大小写。
- MASTER_LOG_FILE 和 MASTER_LOG_POS:这两个参数指定从库从主库哪个二进制日志文件及位置开始复制,需获取准确值,否则可能导致数据不一致或复制失败。通常可在主库执行
SHOW MASTER STATUS
来获取。
可能遇到的问题及解决方法
- 权限问题
- 问题表现:执行
CHANGE MASTER TO
命令后,从库启动复制报错,提示无权限。 - 解决方法:在主库上给复制账号授予足够权限,如
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_host' IDENTIFIED BY 'password';
,然后刷新权限FLUSH PRIVILEGES;
。
- 问题表现:执行
- 网络连接问题
- 问题表现:配置完主库信息后,从库无法连接主库,报错显示连接失败。
- 解决方法:检查主从服务器之间的网络连通性,确保防火墙开放了主库的MySQL端口(默认为3306),可通过
ping
命令和telnet
命令测试网络和端口。
- 日志文件和位置错误
- 问题表现:从库启动复制后,提示找不到指定的二进制日志文件或位置。
- 解决方法:重新在主库获取最新的
SHOW MASTER STATUS
结果,更新MASTER_LOG_FILE
和MASTER_LOG_POS
参数值,然后重新启动从库复制。
- 数据不一致问题
- 问题表现:从库复制启动后,数据与主库不一致。
- 解决方法:可先停止从库复制,在主库执行
FLUSH TABLES WITH READ LOCK;
锁定主库表,然后获取主库状态SHOW MASTER STATUS
,记录日志文件名和位置,解锁主库UNLOCK TABLES;
。在从库上执行STOP SLAVE;
,重新配置CHANGE MASTER TO
命令,使用获取到的准确日志信息,最后启动从库复制START SLAVE;
。同时也可通过对比主从库数据,使用工具如pt-table-checksum
等来排查和修复数据不一致问题。