主库恢复后新创建的CloudSQL只读副本数据缺失问题求助
解决CloudSQL主库恢复后只读副本缺失数据的问题
嘿,这个情况我之前帮同事排查过类似的,别慌,咱们一步步来定位解决:
先确认主库的恢复与binlog状态
- 首先登录主库,执行
SHOW MASTER STATUS;,记下当前的File(binlog文件名)和Position(binlog位置)。这是副本同步的基准,得确保副本是从这个最新位置开始同步的。 - 另外可以检查主库的binlog列表,确认恢复操作后的binlog是否正常生成,没有被意外截断。
检查只读副本的创建方式
- 你是在主库恢复完成后,直接通过CloudSQL控制台新建的副本吗?要确认创建时选择的是从主库当前状态创建,而不是误用了恢复前的旧备份快照。如果选了旧快照,副本自然会缺失恢复后的数据。
- 还有,主库恢复后别着急立刻建副本,等个10-15分钟,让主库的CPU、IO负载回到正常水平,确保数据完全落盘后再操作,避免同步过程中出现异常。
排查副本的同步状态
- 登录新建的只读副本,执行
SHOW SLAVE STATUS\G;(用\G能让输出更易读),重点看这几个字段:Slave_IO_Running和Slave_SQL_Running:这两个都得是Yes,如果有一个是No,直接看Last_Error字段的错误信息,比如是不是有表权限问题、恢复后的数据结构和副本预期不匹配之类的。Master_Log_File和Read_Master_Log_Pos:对比主库SHOW MASTER STATUS的结果,如果这两个值和主库的差很多,说明副本没跟上主库的最新同步进度,可能需要重新触发同步。
终极方案:重新创建副本
如果上面的排查都没找到问题,最简单的办法就是删掉当前的只读副本,重新创建一次。创建时注意:
- 确保主库处于稳定运行状态,没有正在执行的大查询或写入操作
- 选择“从主库当前状态创建”选项,不要选旧快照
内容的提问来源于stack exchange,提问作者jorfus
相关产品推荐
相关产品推荐

