mysql備份與恢複多庫多表備份
執行個體:
備份:
mysqldump -u root -p'123456' kaliboy>/opt/kaliboy.sql
指定字元集備份:
mysqldump -u root -p'123456' --default-character-set=utf8 kaliboy>/opt/kaliboy.sql
備份參數:
-e : 後面可以執行mysql 指令用;分開
-B :參數的作用是增加建立資料庫和連接配接資料庫的指令
-d : 備份表結構
-t : 備份資料
-A -B --events 備份全部資料庫
-F : 重新整理binlog日志檔案
--master-data=1(=2) : 增加binlog日志檔案名及對應的位置點
-x,--lock-all-tables 鎖表
-l,--lock-tables 隻讀鎖表
--compact :去掉注釋
--single-transaction : 适合innodb事務資料庫備份
mysqldump -u root -p'123456' -B kaliboy>/opt/kaliboy_bak.sql
還原資料庫:
mysql -uroot -p'123456' </opt/kaliboy_bak.sql
檢視備份内容:
egrep -v "#|\*|--|^$" /opt/kaliboy.sql
檢視字元集:
mysql -uroot -p'123456' -e "show variables like '%character%'"
myqsl多庫備份:
mysqldump -uroot -p'123456' -B (庫名)kaliboy (庫名)ClasssInfo (庫名)kaliboy_gbk|gzip >/opt/mysql_bak.sql.gz
mysql分庫備份:
mysql -uroot -p'123456' -e "show databases;"|grep -Evi "database|info|perfor"|sed -r 's#^([a-z].*$)#mysqldump -uroot -p'123456' --events -B \1|gzip >/opt/\1.sql.gz#g'|bash
#!/bin/bash
for dbname in `mysql -uroot -p'123456' -e "show databases;"|grep -Evi "database|infor|perfor"`
do
mysqldump -uroot -p"123456" --events -B $dbname|gzip >/opt/bak${dbname}_bak.sql.gz
done
備份單個表和多表:
文法:mysqldump -u 使用者名 -p 資料庫名 表名 表名 表名>備份的檔案名
mysqldump -u root -p ClassInfo score>/opt/table1.sql
分庫分表備份:
#!/bin/bash
USER=root
PASSWD=123456
SOCK=/data/3306/mysql.sock
LOGIN="mysql -u$USER -p$PASSWD -S $SOCK"
DATABASES=`$LOGIN -e "show databases;"|sed "1d"|egrep -v "^.*sch|mysql"`
dump="mysqldump -u$USER -p$PASSWD -S $SOCK"
for database in $DATABASES
do
[ ! -d /back/$database ] && mkdir -p /back/$database
TABLE=`$LOGIN -e "show tables from $database;"|sed '1d'`
for table in $TABLE
do
$dump $database $TABLE|gzip >/back/$database/${database}_${table}_$(date +%F).sql.gz
done
隻備份表結構和隻備份資料:
參數-d 備份表結構
參數-t 備份資料
mysql -u root -p'123456' --compact -d ClassInfo score>/opt/tabled.sql
mysql -u root -p'123456' --compact -t ClassInfo score>/opt/tablet.sql
備份全部資料庫:
mysqldump -u root -p'123456' -A -B --events|gzip >/opt/all.sql.gz
myisam與innodb備份的差別:
myisam :
mysqldump -uroot -p'123456' -A -B --master=2 -x|gzip >/opt/all.sql.gz
mysqldump -uroot -p'123456' -A -B --master=2 -x --triqqers --routines --events --hex-blob|gzip >/opt/all.sql.gz
innodb:
mysqldump -uroot -p'123456' -A -B --master=2 --singe-transaction|gzip >/opt/all.sql.gz
mysqldump -uroot -p'123456' -A -B --master=2 --singe-transaction --triqqers --routines --events --hex-blob|gzip >/opt/all.sql.gz
恢複資料庫實戰:
利用source指令恢複資料庫
進入mysql資料庫控制台,mysql -u root -p 登入後
mysql>use 資料庫名
然後使用指令source 指令,後面參數為腳本檔案,可以利用system ls 檢視檔案路徑
mysql>source /opt/all.sql.gz
批量恢複腳本執行個體:
#!/bin/bash
gzip -d /opt/*.gz
for dbname in `ls *.sql|sed 's#_bak.sql##g'`;
do
mysql -u root -p'123456' <${dbname}_bak.sql;
done
mysql--shou指令總結:
show status; 檢視目前會話的資料庫狀态資訊
show global status; 檢視整個資料庫運作狀态資訊
show full processlist; 檢視正在執行的sql語句
show variables; 檢視資料庫參數資訊