ddcp 환경 innodb 구조 mysql 데이터베이스 테이블 이상 재구성 필요
mysql 데이터베이스가 innodb 이상으로 정상적으로 시작하지 못하거나 테이블을 읽을 수 없을 때
복구 모드로 백업 mysql 내보내기를 시작한 다음 innodb를 다시 만들고 데이터를 가져옵니다
#!/bin/bash
dbuser='root'
dbpass='******'
mysqldata='/home/wddataar'
mycnf='/www/wdlinux/etc/my.cnf'
mysql_e='/www/wdlinux/mysql/bin/mysql'
mysqldump_e='/www/wdlinux/mysql/bin/mysqldump'
mysqlbakpath="/home/bkmysql/$(date +%Y%m%d%H%M%S)"
function stop_mysql(){
service mysqld stop
if [ $? -ne 0 ];then
ps -e|grep mysql|awk '{print $1}'|xargs kill -9
fi
}
mkdir -p $mysqlbakpath
sed -i -e '/\[mysqld\]/a innodb_force_recovery=3' $mycnf
stop_mysql
service mysqld start
#start dump innodb mysql
if [ $? -eq 0 ];then
cd $mysqldata
ls *\/*.ibd -h|awk -F'/' '{print $1}'|uniq|grep -v 'mysql' > $mysqlbakpath/l.txt
for i in `cat $mysqlbakpath/l.txt`
do
echo "dump $i"
$mysqldump_e -f -u$dbuser -p$dbpass $i > $mysqlbakpath/$i.sql
done
fi
#end dump innodb mysql
#start bkup innodb mysql
cd $mysqldata
stop_mysql
mv -f ibdata1 ib_logfile0 ib_logfile1 $mysqlbakpath
for i in `cat $mysqlbakpath/l.txt`
do
mv -f $i $mysqlbakpath
done
#end bkup innodb mysql
sed -i -e '/innodb_force_recovery=3/d' $mycnf
service mysqld start
#start Import mysql
if [ $? -eq 0 ];then
for i in `cat $mysqlbakpath/l.txt`
do
echo "recovey $i"
$mysql_e -u$dbuser -p$dbpass -e "create database $i;"
$mysql_e -u$dbuser -p$dbpass $i < $mysqlbakpath/$i.sql
done
fi
#end Import mysql
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.