MySQLライブラリ、テーブルバックアップの考え方と方法
ライブラリバックアップの意味は何ですか?
1つの企業のデータベースに複数のライブラリ(www,bbs,cms)がある場合がありますが、問題が発生した場合はあるライブラリであり、バックアップ時にすべてのライブラリを1つのデータファイルにバックアップすると、データのリカバリが面倒になります.
ライブラリ・テーブルの欠点:ファイルが多く、破損
1、完全なバックアップを1つバックアップして、もう1つのライブラリのテーブルのバックアップをします
2,スクリプト一括サービス複数SQLファイル
3、データ量が大きすぎて以上の方法に合わない
#以下は完全なライブラリ、テーブルのバックアップスクリプトと考え方です.
ライブラリ:
1)プログラミング思想
2)ライブラリ名、リストを取得
3)サイクルdb,dump
サブテーブル:
1つの企業のデータベースに複数のライブラリ(www,bbs,cms)がある場合がありますが、問題が発生した場合はあるライブラリであり、バックアップ時にすべてのライブラリを1つのデータファイルにバックアップすると、データのリカバリが面倒になります.
ライブラリ・テーブルの欠点:ファイルが多く、破損
1、完全なバックアップを1つバックアップして、もう1つのライブラリのテーブルのバックアップをします
2,スクリプト一括サービス複数SQLファイル
3、データ量が大きすぎて以上の方法に合わない
#以下は完全なライブラリ、テーブルのバックアップスクリプトと考え方です.
ライブラリ:
1)プログラミング思想
mysqldump -uroot -p db1 >db1.sql
mysqldump -uroot -p db2 >db2.sql
2)ライブラリ名、リストを取得
mysql -uroot -p123456 -e "show databases"|
grep -Evi "database|information_schema|performance_schema" |
sed -r 's#^([a-z].*$)#mysqldump -uroot -p123456 --events -B \1 |
gzip >/root/back/\1.sql.gz#g'|sh
3)サイクルdb,dump
#!/bin/bash
#Date
#by
#Desc
MYUSER=root
MYPASSWD=123456
BACKDIR="/root/back"
MYHOST='127.0.0.1'
MYCMD="mysql -u$MYUSER -p$MYPASSWD -h$MYHOST"
MYDUMP="mysqldump -u$MYUSER -p$MYPASSWD -h$MYHOST -x -E -B -F -R "
DBLIST=`$MYCMD -e "show databases;"|grep -Evi "database|_schema|mysql"`
[ ! -d $BACKDIR ] && mkdir $BACKDIR
for dbname in $DBLIST
do
$MYDUMP $dbname|gzip > $BACKDIR/${dbname}_$(date +%F).sql.gz
done
サブテーブル:
#!/bin/bash
#Date
#by
#Desc
MYUSER=root
MYPASSWD=123456
BACKDIR="/root/back"
MYHOST='127.0.0.1'
MYCMD="mysql -u$MYUSER -p$MYPASSWD -h$MYHOST"
MYDUMP="mysqldump -u$MYUSER -p$MYPASSWD -h$MYHOST -x "
DBLIST=`$MYCMD -e "show databases;"|grep -Evi "database|_schema|mysql"`
[ ! -d $BACKDIR ] && mkdir $BACKDIR
for dbname in $DBLIST
do
TLIST=`$MYCMD -e "show tables from $dbname;" |sed 1d`
for tname in $TLIST
do
mkdir -p $BACKDIR/$dbname
$MYDUMP $dbname $tname|gzip > $BACKDIR/${dbname}/${dbname}_${tname}_$(date +%F).sql.gz
done
done