扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
sql文件如果是完整的话, 去MYSQL命令行 use 库名; source sql文件绝对路径,这样试试. 注意,这样是执行整个SQL文件的,如果你只是要恢复某一部分的话,估计你要打开SQL文件,把那部分复制出来重新存放一个文件
成都创新互联公司是一家集网站建设,冠县企业网站建设,冠县品牌网站建设,网站定制,冠县网站建设报价,网络营销,网络优化,冠县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
mysql主从同步常见异常及恢复方法
1. 一般的异常只需要跳过一步即可恢复
slave stop;
SET GLOBAL sql_slave_skip_counter = 1;
slave start;
2.断电导致主从不能同步时,通主库的最后一个bin-log日志进行恢复
在主库服务器上,mysqlbinlog mysql-bin.xxxx binxxxx.txt
tail -n 100000 binxxxx.txt tail-binxxxx.txt
vim tail-binxxxx.txt 打开tail-binxxxx.txt文件找到最后一个postion值
然后在从库上,change host to 相应正确的值
slave stop;
change master to master_host='ip', master_user='username', master_password='password', master_log_file='mysql-bin.xxxx', master_log_pos=xxxx;
slave start;
show slave status\G;
3.主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql主配置文件指定
略过此类异常并继续下条sql同步,这样也可以避免很多主从同步的异常中断
[mysqld]
slave-skip-errors = 1062,1032,1060
第一种:在master上删除一条记录,而slave上找不到。
Last_SQL_Error: Could not execute Delete_rows event on table hcy.t1;
Can't find record in 't1',
Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;
the event's master log mysql-bin.000006, end_log_pos 254
第二种:主键重复。在slave已经有该记录,又在master上插入了同一条记录。
Last_SQL_Error: Could not execute Write_rows event on table hcy.t1;
Duplicate entry '2' for key 'PRIMARY',
Error_code: 1062;
handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000006, end_log_pos 924
第三种:在master上更新一条记录,而slave上找不到,丢失了数据。
Last_SQL_Error: Could not execute Update_rows event on table hcy.t1;
Can't find record in 't1',
Error_code: 1032;
handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000010, end_log_pos 263
异步半同步区别
完成了 prepare 阶段,写入 binlog 之前断电这种情况下, mysql 重新启动时,会从 redolog 中读出未 flush 到磁盘中的 page —— buffer pool 。然后从 redolog 重建这些内存中的 page ,以恢复断电之前内存的状态。之后,mysql检测到该事务并未提交,因此主动执行事务的回滚操作。
修复 mysql 数据库电源故障造成的数据损坏在使用 mysql 数据库时,我们都遇到过电源故障造成的数据库损坏,我们都知道,电源故障或异常关机是 mysql 数据库错误最常见的原因,如何恢复 mysql 数据库是每个人都头疼的问题。有什么办法可以帮你恢复破损的 mysql 数据库吗?当用户由于电源故障而丢失或损坏 mysql 数据库时,如果他们可以进入 mysql 软件但是被错误提示,用户可以使用“系统维护”作为“数据库压缩修复” ,压缩数据库(一些软件在“系统设置”、“系统维护”、“数据库备份和恢复”) ,这种方法只适用于数据库故障修复的一小部分,功能不高。在 web 上 mysql 数据库恢复有两种推荐的方法,一种是使用 sql 语句,如 mysql 的 check table 和 repair table (与 php 的最佳组合) ,另一种是使用 mysql 提供的多个 myisamchk、 isamchk 数据检测和恢复工具(与 php 的最佳组合)。许多用户认为,这两种方法都很复杂,不适合大多数用户。此外,这两种方法都不能有效地恢复 mysql 数据库,还可能导致数据库被进一步破坏,造成不可挽回的损失。由于上述原因,不推荐使用两种 mysql 数据库恢复方法。数据库以下列方式损坏: 1。严重腐败2。轻微腐败3。有些表已损坏,有些表的记录已部分损坏
简单情况下:进入原来mysql安装路径下的data文件夹下,找到相应的库和ibdata1,进行copy,就可回复原来的数据。
复杂情况下:
从另一台机上把MySQL数据库的mysql文件夹拷贝到本地机上,目的是恢复本地机对数据的访问和操作。经过如下几种情况的操作。
1. 在本地重装MySQL(安装目录D:\Program Files\MySQL\MySQL Server 5.0),直接把mysql文件夹拷贝至D:\Program Files\MySQL\MySQL Server 5.0\。结果,失败:数据库连接错误。
2. 卸载后重装MySQL,将D:\Program Files\MySQL\MySQL Server 5.0\下的数据备份,只把mysql\data文件夹全部内容拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data下。结果,失败:数据库连接错误。将备份的数据还完覆盖。结果,失败,还是连接不上数据库。
3. 卸载后重装MySQL,将mysql\data文件夹里的cf1,last文件夹(这两个是原来MySQL里的数据库)拷贝进D:\Program Files\MySQL\MySQL Server 5.0\data。连接成功,在Navicat for MySQL里看到数据库cf1和last,但是不能访问,因为数据全为零。明白了原来data里以数据库命名的文件存储的是数据库的表结构,不是元数据。下一步,把data文件夹里的ibdata1文件(3.4G大,明显存储了元数据)拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data里,代替原来的ibdata1文件。重启电脑,打开Navicat for MySQL,连接成功,数据可以访问操作。
至此,操作终于成功。其实当初在那台机上把数据导出来,而不是现在直接把文件夹mysql复制过来会更容易恢复。但那台机已经重装了系统,也就是说MySQL失效了。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流