鉴于在风流罗曼蒂克台测量检验机器上计划重新安装Mysql数据库,由于轻便凶恶的直白卸载了,未有备份集团Discuz和Redmine使用的Mysql数据库,进度可想的悲惨。

#!/bin/sh#code by scpman#功能:检查并修复mysql数据库表#将此脚本加到定时中,脚本执行时,等会读库,列出要修复的所有表,然后计时,开始修复#修复过程中将损坏的表记录下来,修复完成后,将损坏的表,发邮件通知。fix_logs='/tmp/fix.log'user=''pass=''check_fix(){dblist=`/usr/bin/find /usr/dlm_db/mysql/ -type d | grep -vE "logs|_[1-9]|*bak|test"| sed -e "s#/usr/dlm_db/mysql/##g"`echo start `date`>$fix_logsfor dbname in $dblistdoecho $dbnamefor tb_name in `/usr/bin/find /usr/dlm_db/mysql/$dbname -type f | awk -F'/' '{print $NF}' | awk -F'.' '{print $1}' | sort -u`domysql -u$user -p$pass $dbname<>$fix_logscheck table $tb_name;repair table $tb_name;FFFdonedoneecho `date` done>>$fix_logs}send_logs(){msgip=10.0.7.44IP=`cat /etc/rc.conf | grep -E "ifconfig_[em1|bce1]" | awk '{print "IP:"$2}'| sed -n 1p `fix_info=`grep -rE "Error|start|done" $fix_logs`/usr/bin/logger -p local1.info -h $msgip "the services: $IP mysql_table_fix_info:$fix_info"}check_fixsend_logs 

数量:一个db,2004个表格,2004张表格数据,每条记下三十个column,平均每张表格4.3w条记下,总共86388670条记下。机器:linux
64bit 8G内部存款和储蓄器 4核AMDX3320@2.5GHz 基本思路: 复制代码 代码如下:mysql -utest -pxxxx -s -e
“source xxxx.sql” 将load语句放在xxxx.sql中load语法:复制代码 代码如下:load data [low_priority]
[澳门微尼斯人手机版,local] infile ‘file_name.txt’ [replace |
ignore]倘使串行导入数据,会不快,考虑并行,但只怕有冲突,解决办法:load以前清空表
复制代码 代码如下:truncate table xxxx 或
delete from table xxxx;或行使replace或ignore关键字。

幸亏的是只是卸载掉了Mysql的顺序,全部的数据文件照旧存在的。

上边是在平复数据库的经过

1. Discuz数据库

Discuz数据库的回复特别贯虱穿杨,
在设置好新本子的Mysql后,直接将本来的数据库文件copy到新的数码目录中,重新起动mysql,
就会看到恢复的数据库了

2. Redmine数据库

本希图直接利用方面包车型大巴经历,也能收看全数的表,不过正是实施查询的时候,总是报错”表不设有”.

发表评论

电子邮件地址不会被公开。 必填项已用*标注