mysql dump備份教程

mysqldump全量備份

mysqldump -uroot -pqb123 -S /data/3306/mysql.sock --master-data=2 -B -F -A|gzip>./sql_bak_$(date +%F).sql.gz

innodb引擎備份:

mysqldump -uroot -pqb123 -S /data/3306/mysql.sock --master-data=2 --single-transaction -F -B -A|gzip>./sql_bak_$(date +%F).sql.gz

myisam引擎備份:

mysqldump -uroot -pqb123 -S /data/3306/mysql.sock --master-data=2 --lock-all-tables -F -B -A|gzip>./sql_bak_$(date +%F).sql.gz

指定字符集編碼備份:

 mysqldump -uroot -pqb123 -S /data/3306/mysql.sock --master-data=2 --single-transaction --default-character-set=utf8 -F -A|gzip>./sql_bak_$(date +%F).sql.gz

查看備份後的sql語句:

egrep -v “#|*|–|^$” sql_bak_.sql

–single-transaction和–lock-all-tables代表鎖表,保證數據一致

-F代表刷新binlog日志,下次有需要可以直接重新的binlog日志裡面取數據

-A代表備份所有庫

-B代表增加創建庫的語句和連接資料庫的命令,另外還可以指定多個庫備份

|gzip 代表壓縮備份

其中–master-data=2代表在1.sql中會記錄如下信息

– CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000007’, MASTER_LOG_POS=120;

這個信息能告訴我們備份到mysql-bin.000007,點為120,如果需要恢復的話,可以直接從這個binlog日志和這個位置點恢復,標識記錄位置和點

如果–master-data=1,則會去掉註釋,在從庫中會用到,能夠自動在主動同拉取步數據

分庫備份:(指定庫恢復的時候會很方便)

方法1:

mysql -uroot -pqb123 -S /data/3306/mysql.sock -e "show databases;" |grep -Evi "information|mysql|performance|database"|sed -r 's#^([a-Z].*$)#mysqldump -uroot -pqb123 -S /data/3306/mysql.sock -B \1|zip >/data/bak/\1.sql.gz#g' |bash

方法2:

root@i-slksc8ux mysql_store]# cat /usr/local/share/sql_bak.sh 
#!/bin/bash
d=`date +%F-%H`
path="/anve/mysql_store"
#ad="192.168.1.214"
use="root"
passwd="123456"
[ -d ${path}/$d ] || mkdir -p ${path}/$d
for dbname in `/usr/local/mysql-5.6.35/bin/mysql -uroot -panve719 -e "show databases;" |grep -Evi "information|mysql|performance|database"`
do
        /usr/local/mysql-5.6.35/bin/mysqldump -uroot -panve719 -B $dbname|zip >${path}/${d}/${dbname}.sql.gz
done
#/usr/local/mysql-5.6.35/bin/mysqldump -u$use -p$passwd -F -A >$path/ceshi_$d.sql
/bin/find $path -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
sleep 2

其中grep中的參數:

-E 擴展正則表達式

-v 代表不匹配的行

-i 忽略字符大小寫區別

備份表:

mysqldump -uroot -pqb123 庫名 表名 > 備份名字.sql

多個表:

mysqldump -uroot -pqb123 庫名 表名1 表名2 > 備份名字.sql

恢復:

source恢復

mysqldump -uroot -pqb123 -S /data/3306/mysql.sock
mysql> system ls /data/bak
mysql> source /data/bak/sql_bak_2017-12-26.sql

標準恢復:

mysql -uroot -pqb123 -S /data/3306/mysql.sock 

查看恢復數據:mysql -uroot -pqb123 -S /data/3306/mysql.sock -e “select * from liao.test” 增量備份: 利用全備和binlog日志來進行備份,叫做增量備份 增量恢復: 利用二進制日志和全量備份進行的恢復過程,就是增量備份

You May Also Like