mysql导出数据库1146_MySQL复制出错 Last_SQL_Errno:1146的解决方法
这篇文章主要介绍了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;
问题解决
mysql导出数据库1146_MySQL复制出错 Last_SQL_Errno:1146的解决方法相关推荐
- mysql errno 1146_Mysql学习MySQL复制出错 Last_SQL_Errno:1146的解决方法
<MysqL学习MysqL复制出错 Last_sql_Errno:1146的解决方法>要点: 本文介绍了MysqL学习MysqL复制出错 Last_sql_Errno:1146的解决方法, ...
- mysql errno : 1146_MySQL_MySQL复制出错 Last_SQL_Errno:1146的解决方法,背景:我们在做数据迁移或者 - phpStudy...
MySQL复制出错 Last_SQL_Errno:1146的解决方法 背景:我们在做数据迁移或者拆分的时候,使用Tablespace transcation 这种解决方案时,很有可能就会遇到 从库复制 ...
- mysql errno: 1146_解决MySQL复制出错 Last_SQL_Errno:1146
背景:我们在做数据迁移或者拆分的时候,使用Tablespace transcation 这种解决方案时,很有可能就会遇到 从库复制出错,报: Last_SQL_Errno: 1146 那么具体错误内容 ...
- 使用MySQL Workbench导出数据库脚本以及出错时的解决办法
使用MySQL Workbench导出数据库脚本以及出错时的解决办法 正常做法 打开workbench,选择左上角的菜单栏,选择Server->Data 之后出现如下界面 一般情况下,这样就导出 ...
- mysql导出数据库数据及表结构
mysql导出数据库数据及表结构 1,导出远程数据库数据到本地 mysql -A wj_sms -h192.168.1.105 -uroot -p4321 -ss -e "set NAMES ...
- mysql导出数据库数据字典
mysql导出数据库数据字典,执行如下查询导出到excel即可 SELECT tc.TABLE_SCHEMA 数据库, tc.TABLE_NAME 表名, tt.TABLE_COMMENT, tc.C ...
- mysql导出数据库报错,navicat 导入导出数据库报错的解决
在使用navicat导入导出数据功能时,导出没问题,导入总是报错,还遇到了中文乱码.在网上查了很多资料,比如使用了navicat的数据传输功能,但仍然报错,弄了几个小时都没解决. 最后换了种思路,我直 ...
- Linux系统下MySQL导出数据库和导入数据库的命令
一.MySQL导出数据库用mysqldump命令 注意mysql的安装路径,即此命令的路径,如果你只要查询mysql的运行文件所在地址,直接用下面的命令就可以了,再切换到mysql的运行文件的路径 w ...
- MySQL导出数据库、数据库表结构、存储过程及函数【用】
一.导出数据库 我的mysql安装目录是D:\Program Files\MySQL\MySQL Server 5.5\bin\,导出文件预计放在D:\sql\ 在mysql的安装目录执行命令: my ...
最新文章
- 新手科普 | 探索机器学习模型,保障账户安全
- 【Groovy】自定义 Xml 生成器 BuilderSupport ( 构造 Xml 节点类 | 封装节点名称、节点值、节点属性、子节点 | 将封装的节点数据转为 Xml 字符串 )
- 神圣的NLP!一文理解词性标注、依存分析和命名实体识别任务
- php不能加载extension的奇怪问题
- 编译原理--NFA/DFA
- vue-router和react-router嵌套路由layout配置方案的区别
- C++的new、delete需要注意的一点:使用危险函数导致的越界CRT detected that the application wrote to memory after end of heap
- jboss默认进程名称_快速指南:剖析JBoss BPM跨进程通信
- MFC制作打地鼠小游戏
- 二倍图css,css二倍图的使用
- 借助 Resharper 和 StyleCop 让代码更整洁
- 带你实现完整的视频弹幕系统
- 上海电力大学计算机专业全国排名,上海电力大学有哪些专业 上海电力大学专业排名...
- java左移和右移_java 位运算 之 左移和右移理解
- Cadence PSpice 仿真8:带阻滤波器温度分析仿真实战图文教程
- 转行做数据分析的心路历程
- 重庆SEO优化高手更新网站文章的窍门
- QQ空间首页模仿制作——HTML布局练习
- 盘点北京周边最适合爬的10座山
- TIL:创建Java线程的两种方法
热门文章
- indexOf 的使用
- VMWare 卡顿优化详解
- 华为手机鸿蒙更新时间,华为手机版鸿蒙系统更新时间介绍
- 【Matlab系列】Matlab信号添加噪声及信噪比SNR的计算
- PyQt5自定义无边框窗口
- 计算机毕业设计ssm青岛恒星科技学院机房管理系统0k0u9系统+程序+源码+lw+远程部署
- 【Android 进程保活】应用进程拉活 ( 应用进程拉活简介 | 广播拉活 | 显示广播与隐式广播 | 全家桶拉活 )
- 机器学习——信用卡反欺诈案例
- 千万别活成自己最讨厌的样子
- 阿里云盾AliYunDun服务IO超高