Mysql備份:
庫備份
1)庫的備份
[root@localhost /]# mysqldump -uroot -p db2 > /db2.sql
庫名 導出來的文件
庫的還原
[root@localhost /]# mysql -uroot -p db2 < /db2.sql
得提前創建好db2庫
2)庫的備份
mysqldump -uroot -p123456 -B test > /tmp/test_B.sql 作用是在導出的文件中添加建庫和切換庫的語句。
庫名 導出來的文件
(mysqldump -uroot -p123456 -B test|gzip > /tmp/test_B.sql.gz 備份時壓縮備份文件
備份多個庫:
mysqldump -uroot -p123456 -B mysql zhang | gzip > /tmp/mul_B.sql.gz)
多個庫
庫的還原:
mysql -uroot -p123456 < /tmp/test_B.sql 因此還原時不用提前創建好庫並不用指定庫名。
分庫備份:
cat fenkubak.sh
#!/bin/sh
for dbname in `mysql -uroot -p123456 -e "show databases" | grep -Evi "database|information_schema|mysql"`
do
mysqldump -uroot -p123456 -B --events $dbname|gzip > /tmp/${dbname}.sql.gz 金庸新著
done
表備份:
1)表的備份
[root@localhost /]# mysqldump -u root -p db2 user > db2_user.sql
庫名 表名 導出來的文件名(導出到當前目錄下)
表的還原:(先切換庫,再還原)
mysql>use db
mysql>source /db2_user.sql
2)多個表備份
mysqldump -uroot -p123456 zhang t1 ming > /tmp/two_table.sql
庫 多個表
表的還原:(先切換庫,再還原)
mysql>use db
mysql>source /tmp/two_table.sql
分庫分表備份:
#!/bin/sh
USER=root
PASSWD=onetwothree
SOCKET=/data/3306/mysql.sock
MYLOGIN="mysql -u$USER -p$PASSWD -S$SOCKET"
MYDUMP="mysqldump -u$USER -p$PASSWD -S$SOCKET"
DATEBASE="$($MYLOGIN -e "show databases;"|egrep -vi "Data|_schema|mysql")"
for dbname in $DATEBASE
do
TABLE="$($MYLOGIN -e "use $dbname;show tables;"|sed '1d')"
for tname in $TABLE
do
MYDIR=/server/backup/$dbname/${dbname}_$(date +%F)
[ ! -d $MYDIR ] && mkdir -p $MYDIR
$MYDUMP $dbname $tname |gzip >$MYDIR/${dbname}_${tname}_$(date +%F).sql.gz
done
done