MySQL损坏表修复(附录自动处理脚本)
来源:互联网 发布:陕西大数据集团胡刚 编辑:程序博客网 时间:2024/06/09 19:53
公司的游戏所在机房意外断电,导致MySQL未正常关闭,使得很多MyISAM表损坏,很多表如果全部修复(数据库很大需要很长的时间)那如果检查整个库在复制命令一个一个修复也浪费时间,最后写个脚本修复数据库。
#mysqlcheck -uuser -ppassword database -c #检查整个库那些表损坏
#mysqlcheck -uuser -ppassword database -r # 修复整个数据库
Checking MyISAM file: wpusers.MYI
Data records: 1 Deleted blocks: 0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
- check records and index references
- recovering (with sort) MyISAM-table ‘wpusers.MYI’
Data records: 1
- Fixing index 1
- Fixing index 2
- Fixing index 3
mysql 进程在一个写入中被杀死、计算机意外关闭、硬件错误都能造成mysql表损坏 。
mysql 修复表的各种方法
1、mysqlcheck 进行表修复
使用mysqlcheck 命令对表进行修复
#mysqlcheck -uuser -ppassword database table -c #检查单个表是否损坏#mysqlcheck -uuser -ppassword database -c #检查整个库那些表损坏
首先检查数据库的那些表损坏,如果能定位到那张表损坏可以直接对表修复
#mysqlcheck -uuser -ppassword database table -r # 修复数据表#mysqlcheck -uuser -ppassword database -r # 修复整个数据库
更多参数 查看 mysqlcheck –help
2、myisamchk 修复mysql表
Myisamchk是MyISAM表维护的一个非常实用的工具。可以使用myisamchk实用程序来获得有关数据库表的信息或检查、修复、优化他们。myisamchk适用MyISAM表(对应.MYI和.MYD文件的表)。
Myisamchk 选项解释
检查表
[root@nagios test]# myisamchk -e wpusers.MYIChecking MyISAM file: wpusers.MYI
Data records: 1 Deleted blocks: 0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
- check records and index references
myisanchk修复表
[root@nagios test]# myisamchk -r wpusers.MYI- recovering (with sort) MyISAM-table ‘wpusers.MYI’
Data records: 1
- Fixing index 1
- Fixing index 2
- Fixing index 3
3、自动修复mysql 表脚本
这个shell脚本,可以很方便的对多个数据库的表进行检查和修复,操作起来也非常方便,希望对大家有用
#!/bin/shexport LANG=zh_CN.UTF-8# 修改数据库配置DB_SOCKET_PATH="/data/app/db"DB_ROOT_USER="root"DB_ROOT_PASS="123456"# 数据库数组 可以加多个数据库databases=(${SERVER_MARK}_mobcc_user ${SERVER_MARK}_mobcc ${SERVER_MARK}_mobcc_activity)for database in ${databases[@]} do tables=$(mysql --default-character-set=utf8 --socket=${DB_SOCKET_PATH}/mysql.sock -u${DB_ROOT_USER} -p${DB_ROOT_PASS} ${database} -A -Bse "show tables" )for arg in $tablesdocheck_status=$(mysql --default-character-set=utf8 --socket=${DB_SOCKET_PATH}/mysql.sock -u${DB_ROOT_USER} -p${DB_ROOT_PASS} ${database} -A -Bse "check table $arg" | awk '{ print $4 }' )if [ "$check_status" = "OK" ]thenecho "$arg is ok"elseecho $(mysql --default-character-set=utf8 --socket=${DB_SOCKET_PATH}/mysql.sock -u${DB_ROOT_USER} -p${DB_ROOT_PASS} ${database} -A -Bse "repair table $arg")fiecho $(mysql --default-character-set=utf8 --socket=${DB_SOCKET_PATH}/mysql.sock -u${DB_ROOT_USER} -p${DB_ROOT_PASS} ${database} -A -Bse "optimize table $arg")donedone echo "all down!"
1 0
- MySQL损坏表修复(附录自动处理脚本)
- Mysql修复损坏表并写脚本自动修复
- mysql 表损坏修复
- mysql表损坏修复
- MySQL数据库INNODB表损坏修复处理过程分享
- MySQL数据库INNODB 表损坏修复处理过程
- MySQL数据库INNODB 表损坏修复处理过程
- MySQL表损坏修复解决方案
- mysql表损坏及修复
- mysql表损坏后自己修复自动重启,cache不够影响mysql内存初始化
- MySQL表损坏预防与修复
- mysql 基础-myisam表损坏及修复
- 【mysql 因为断电表损坏修复方法】
- MySQL表损坏预防与修复
- MySQL表损坏预防与修复
- 修复MySQL中损坏的表
- MySQL损坏修复
- MySQL数据库INNODB 表损坏修复处理过程 无法repair的变通方法
- linux tcpdump的简单应用
- IOS之导航控制器
- Android 四种加载方式详解(standard、singleTop、singleTask、singleInstance)
- 电脑上的快捷键
- Picasso学习
- MySQL损坏表修复(附录自动处理脚本)
- 遍历UltraWebGrid获得rows 及 从行中取出列值
- ViewPager跟FragmentTabHost结合起来使用
- 欢迎使用CSDN-markdown编辑器
- ubuntu14.04经典桌面怎么删除启动器的快捷方式
- linux内核里的GPIO操作函数
- 【Android基础学习】Listview的倒序显示问题
- android学习笔记--sqlite数据库
- lintcode:Candy