面试题答案
一键面试1. 数据一致性问题
- 问题阐述:在提升备库为主库前,备库可能尚未完全同步主库的所有数据,导致数据不一致。若此时直接提升,可能丢失部分事务。
- 解决方法:在提升之前,确保备库已经追平主库的所有事务。可以通过查看
SHOW SLAVE STATUS
中的Seconds_Behind_Master
字段,当该值为0,且Slave_IO_Running
和Slave_SQL_Running
都为Yes
时,表明备库已与主库同步。也可以使用pt-heartbeat
工具更精确地判断数据一致性。
2. 网络配置问题
- 问题阐述:提升为主库后,新主库的网络配置可能与原主库不同,其他从库或应用程序可能无法正确连接到新主库。
- 解决方法:提前规划好新主库的网络设置,确保其IP地址、端口等信息能够被其他节点访问。修改应用程序的数据库连接配置,将其指向新主库的地址和端口。对于从库,需要重新配置
CHANGE MASTER TO
语句,指定新主库的相关信息。
3. 主从复制配置残留问题
- 问题阐述:备库提升为主库后,原有的主从复制配置可能仍然保留在新主库上,这可能导致不必要的日志记录和潜在的复制冲突。
- 解决方法:在提升主库后,执行
RESET SLAVE;
命令,清除原有的主从复制配置信息。同时,删除相关的中继日志文件(通常位于数据目录下,以relay-log
开头的文件),避免残留的日志对新主库产生影响。
4. 权限问题
- 问题阐述:应用程序在原主库上的权限设置可能不适用于新主库,导致应用程序无法正常读写数据。
- 解决方法:在提升主库后,检查并重新配置应用程序在新主库上的权限。可以通过
GRANT
语句为应用程序用户授予适当的权限,如GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
确保应用程序能够正常访问新主库的数据库。
5. 日志切换和管理问题
- 问题阐述:提升为主库后,日志切换和管理机制可能发生变化。原备库使用的中继日志在提升后需要转换为二进制日志,并且可能面临日志文件大小、保留策略等管理问题。
- 解决方法:MySQL会自动将备库的中继日志切换为二进制日志。对于日志文件大小和保留策略,可以通过修改
my.cnf
配置文件中的max_binlog_size
参数来控制单个二进制日志文件的大小,通过binlog_expire_logs_seconds
参数设置二进制日志的过期时间。设置完成后,重启MySQL服务使配置生效。