MySQL复制出错 Last_SQL_Errno:1146的解决方法

MySQL复制出错 Last_SQL_Errno:1146的解决方法

背景:我们在做数据迁移或者拆分的时候,使用 这种解决方案时,很有可能就会遇到 从库复制出错,报: : 1146

那么具体错误内容可能会有如下:

: Error ‘Table ‘.ank’ doesn’t exist’ on query. : ”. Query: ‘alter table ank ‘

: Error ‘Table ‘.ank’ doesn’t exist’ on query. : ”. Query: ‘alter table ank ‘

那么我们遇到这样的问题的时候该如何恰当的处理呢?考虑如下几点:

1. 我们整个库的容量有多大?

2. 业务容忍的最大延迟时间多久?

3. 我们恢复需要多久?恢复的难易程度如何?

通过考虑到以上几点, 我们就可以根据实际情况做出抉择,采用什么样的办法尽快的恢复从库;对于这样的问题,简单粗暴的方案就是重建从库,当然还有别的办法, 且听我慢慢道来:

首先我们先看看我们是如何通过 迁移数据的,大概步骤如下:

1.库A执行: show table xxx1; 拿到简表语句;

2.库B执行: table xxx1; 在从库上建立基本的表结构;

3.库B执行: alter table xxx1 ; 让mysql自己删掉ibd文件;

4.库A执行: flush xxxx1,xxxx2 for ;把内存的脏数据刷到磁盘,使得ibd文件数据一致;

5.库A执行: scp xxxx1.ibd xxx2.ibd xxxx1.cfg xxx2.cfg :/data/ 把ibd文件拷贝到从库;

mysql error 1146

6.库B执行: alter table xxx1 导入数据文件。

好了我们知道了整个迁移的具体步骤,那么我们就可以轻松的应对在迁移过程中复制出错的问题了。

那么我们首先来看一下:

: 1146

: Error ‘Table ‘.ank’ doesn’t exist’ on query. : ”. Query: ‘alter table ank ‘

其大概的意思就是我们在从库上没有找到 这个表的完整定义信息,观察一下磁盘上的文件我们就明白了:

root@

# ls -lhrt |grep ank

-rw-r—– 1 mysql mysql 8.3G Mar 31 20:03 ank.ibd

果然没有 这个表的 frm 文件, 那么怎么办呢?由于是 slave 的 线程报错,那么我们可采取取巧的办法:

用超级用户登录从库MySQL复制出错 Last_SQL_Errno:1146的解决方法,先备份一下 这个ibd 文件:

root@

# mv ank.ibd ank.ibd.bak

然后拿到这个文件的表结构,在从库上执行建表语句mysql error 1146,这样一样来, 我们从库就有了 ibd frm 文件,那么 此时我们开启slaveMySQL复制出错 Last_SQL_Errno:1146的解决方法,这时就会执行时主库传过来的 语句:

alter table ank ; 那么当我们再一次的观看此盘数据文件的时候,ibd 文件又不见了mysql error 1146,此时slave 也就已经出错了,其错误信息如下:

: 1146

mysql error 1146

: Error ‘Table ‘.ank’ doesn’t exist’ on query. : ”. Query: ‘alter table ank ‘

那么我们此时需要做的就是: 把刚才mv 的文件 再 mv 回去, 也就是说:

root@

# mv ank.ibd.bak ank.ibd ; 完成这个命令后我们再执行 start slave ; 此时这个表就正常了, 我们可以执行 * from ank limit 100; 来验证一下是否可读。

那么此时,我们算完整的解决了因一个表导致的复制出错的问题,那么如果迁移了多张表(经常是)mysql error 1146, 那么我们就可以按照这个解决方案,一步一步的来解决复制出错。其大概的思路就是, 缺什么我们补什么,多了什么我们去掉什么。

下面是其它网友的补充,根据返回的错误信息进行调整即可。

mysql 主主复制(双主复制)报错: 1146

错误信息:

: 1146

: Error ‘Table ‘test.user’ doesn’t exist’ on query. : ‘test’. Query: ‘ into user (20,’在库’)’

解决方法:

mysql> set global sql_slave_skip_counter=20;
mysql> STOP SLAVE;
mysql> START SLAVE;

问题解决

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » MySQL复制出错 Last_SQL_Errno:1146的解决方法

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们