mysqldump备份

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 <sql_bak_2017-12-26.sql 

查看恢复数据:mysql -uroot -pqb123 -S /data/3306/mysql.sock -e “select * from liao.test”
增量备份:
利用全备和binlog日志来进行备份,叫做增量备份
增量恢复:
利用二进制日志和全量备份进行的恢复过程,就是增量备份

猜你喜欢

转载自blog.csdn.net/qq_25611295/article/details/78917491