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

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

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

Last_SQL_Error: Error 'Table 'spider.tb_city_population_rank' doesn't exist' on query. Default database: 'spider'. Query: 'alter table tb_city_population_rank discard tablespace'

Last_SQL_Error: Error 'Table 'spider.tb_city_population_rank' doesn't exist' on query. Default database: 'spider'. Query: 'alter table tb_city_population_rank import tablespace'

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

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

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

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

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

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

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

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

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

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

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

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

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

那么我们首先来看一下:

Last_SQL_Errno: 1146

Last_SQL_Error: Error 'Table 'spider.tb_city_population_rank' doesn't exist' on query. Default database: 'spider'. Query: 'alter table tb_city_population_rank discard tablespace'

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

[root@GZ_NF_DB_RP_002 spider]# ls -lhrt |grep tb_city_population_rank

-rw-r----- 1 mysql mysql 8.3G Mar 31 20:03 tb_city_population_rank.ibd

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

用超级用户登录从库,先备份一下 这个ibd 文件:[root@GZ_NF_DB_RP_002 spider]# mv tb_city_population_rank.ibd tb_city_population_rank.ibd.bak

然后拿到这个文件的表结构, 在从库上执行建表语句,这样一样来, 我们从库就有了 ibd frm 文件, 那么 此时我们开启slave sql_thread,这时就会执行时主库传过来的 语句:

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

Last_SQL_Errno: 1146

Last_SQL_Error: Error 'Table 'spider.tb_city_population_rank' doesn't exist' on query. Default database: 'spider'. Query: 'alter table tb_city_population_rank import tablespace'

那么我们此时需要做的就是: 把刚才mv 的文件 再 mv 回去, 也就是说:[root@GZ_NF_DB_RP_002 spider]# mv tb_city_population_rank.ibd.bak tb_city_population_rank.ibd ; 完成这个命令后我们再执行 start slave sql_thread ; 此时这个表就正常了, 我们可以执行select * from tb_city_population_rank limit 100; 来验证一下是否可读。

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

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

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

错误信息:

Last_Errno: 1146

Last_Error: Error 'Table 'test.user' doesn't exist' on query. Default database: 'test'. Query: 'insert into user values(20,'在库')'

解决方法:

mysql> set global sql_slave_skip_counter=20;

mysql> STOP SLAVE;

mysql> START SLAVE;

问题解决相关阅读:

基于JQuery打造无缝滚动新闻步骤详解

aspx中的mysql操作类sqldatasource使用示例分享

基于JavaScript实现智能右键菜单

php中JSON的使用与转换

php图片缩放实现方法

CSS强制文本在一行内显示若有多余字符则使用省略号表示

基于JavaScript实现瀑布流布局

win10安装中文补丁包后部分程序或文档乱码显示怎么解决?

html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因

jQuery实现鼠标点击弹出渐变层的方法

div style常用属性介绍及使用示例

JS实现在网页中弹出一个输入框的方法

举例讲解PHP面对对象编程的多态

win10系统自带纸牌游戏有哪些技巧?

mysql errno : 1146_MySQL_MySQL复制出错 Last_SQL_Errno:1146的解决方法,背景:我们在做数据迁移或者 - phpStudy...相关推荐

  1. mysql errno 1146_Mysql学习MySQL复制出错 Last_SQL_Errno:1146的解决方法

    <MysqL学习MysqL复制出错 Last_sql_Errno:1146的解决方法>要点: 本文介绍了MysqL学习MysqL复制出错 Last_sql_Errno:1146的解决方法, ...

  2. mysql导出数据库1146_MySQL复制出错 Last_SQL_Errno:1146的解决方法

    这篇文章主要介绍了MySQL复制出错 Last_SQL_Errno:1146的解决方法,需要的朋友可以参考下 背景:我们在做数据迁移或者拆分的时候,使用Tablespace transcation 这 ...

  3. mysql errno: 1146_解决MySQL复制出错 Last_SQL_Errno:1146

    背景:我们在做数据迁移或者拆分的时候,使用Tablespace transcation 这种解决方案时,很有可能就会遇到 从库复制出错,报: Last_SQL_Errno: 1146 那么具体错误内容 ...

  4. Navicat for MySQL连接MYSQL出错,错误代码1045的解决方法

    Navicat for MySQL连接MYSQL出错,错误代码1045的解决方法 参考文章: (1)Navicat for MySQL连接MYSQL出错,错误代码1045的解决方法 (2)https: ...

  5. win7系统mysql连接不上数据库吗_Win7系统使用数据库时mysql频繁掉线无法连接的两种解决方法...

    近日有windows7 64位旗舰版系统用户在使用mysql数据库的时候,发现mysql总是频繁掉线,导致无法连接,遇到这样的问题该如何解决呢?接下来为大家带来Win7系统使用数据库时mysql频繁掉 ...

  6. (转)SQL Server数据库复制错误的原因及解决方法

    在使用SQL Server数据库中,有时在复制时会出现错误,下面就为你分类介绍SQL Server数据库复制错误的原因及解决方法,希望对您学习SQL Server数据库有所帮助. 错误 消息 MSSQ ...

  7. Java 链接MySQL数据库时报的connect和denied错解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 一.not allowed to connect to this MySQL server错误 错误分析:可能是由于MySQL ...

  8. mysql source导入报错ERROR 1366的解决方法

    mysql source导入报错ERROR 1366的解决方法 参考文章: (1)mysql source导入报错ERROR 1366的解决方法 (2)https://www.cnblogs.com/ ...

  9. Linux下MySql出现#1036 – Table ‘ ‘ is read only 错误解决方法

    Linux下MySql出现#1036 – Table ' ' is read only 错误解决方法 参考文章: (1)Linux下MySql出现#1036 – Table ' ' is read o ...

最新文章

  1. 如何检查当TextBox设置为多行时是不是超长了?
  2. html loading原理,加载HTML-Loading HTML
  3. 服务器机房有哪些重要系统
  4. C语言实现方差variance计算(附完整源码)
  5. Linux无法解析hosts里面绑定域名的排查方法
  6. labview数据枚举数据服务器,枚举器报告'未指定的错误,不能枚举服务器
  7. 4.1 [单选]两化融合中的两化是指 - 关于两化融合(主讲:凌捷)笔记
  8. 李宏毅机器学习(十)GPT-3
  9. 求子数组的最大和要求O(n)
  10. spring session 考虑问题解答
  11. 谷歌Chrome浏览器离线安装包
  12. RFID技术在图书馆中的应用
  13. 企业微信发送信息异常的临时处理方案
  14. Istio 中的智能 DNS 代理功能
  15. C++指针(pointer)
  16. 【vendor】Go 包依赖管理工具govendor
  17. win10系统中“无法使用内置管理员账户打开,请使用其他账户登录再试一次“
  18. RK系列开发板音频驱动适配指南(二)
  19. Mac流程图制作工具:Diagrams
  20. Vue开发中的一点技♂巧

热门文章

  1. 设计模式-创建型-单件
  2. 论文笔记:Image Caption(Show, attend and tell)
  3. python dlib学习(四):单目标跟踪
  4. VMware虚拟机中VMnet0上的网桥当前未运行
  5. 用c语言完成银行排号系统,【分享】C语言 银行取票排队系统
  6. PHP利用反射根据类名反向寻找类所在文件
  7. XtraReport交叉表自适应行高及最佳列宽(转)
  8. phpcms v9调用指定栏目名称、url、图片、描述等
  9. 为安装创建软链接,迁移文件夹
  10. MySQL查看与修改编码方式(mysql、数据库、表)