mysql 备份和恢复

MySQL分物理备份和逻辑备份

物理备份:就是把数据库目录下的数据进行打包备份,缺点就是有数据在写入时,会损坏数据,需要MySQL停机备份

逻辑备份,就是把执行过的语句备份下来

mysqldump(缺点:备份慢,数据超过50G不适合用)

单库备份

mysqldump -uroot -p -B databasename >/etc/tmp/databasename_bak_$(date +%F).sql

备份所有库

mysqldump -uroot -p -A -B > /etc/tmp/databasename_bak_$(date +%F).sql

分库备份

#/bin/sh
MYSQL_CMD=/usr/local/mysql/bin/mysqldump
MYSQL_USER=root
MYSQL_PWD=123456
DATE=`date +%F`
DBname=`mysql -u${MYSQL_USER} -p${MYSQL_PWD} -e "show databases;"|sed '1,5d'`

for DBname in ${DBname}
do
    ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/backup/${DBname}_${DATE}.sql.gz
done

 表备份

mysqldump -uroot -p databasesname tablesname > /etc/tablesname_bak_$(date +%F).sql

表结构备份(不包含表里面的数据)

mysqldump -uroot -p  -d databasesname tablesname > /etc/tablesname_bak_$(date +%F).sql

压缩备份

mysqldump -uroot -p -A -B | gzip >/backup/all_bak$(date +%F).sql.gz

优化备份

mysqldump -uroot -p --compact  test> /backup/bak_$(date +%F).sql #加了--commpact后,会取消注释,语句之间变的紧凑,但是会改变原来的时区,生产环境下要注意

mysqldump -uroot -p --lock-all-tables test >/backup/bak_$(date +%F).sql #因为myisam引擎会表锁,为了保证数据的一致性加--lock-all-tables 进行锁表操作

mysqldump -uroot -p --single-transaction test -F >/backup/bak_$(date +%F).sql #因为innodb引擎为行锁,加--single-transaction不用进行表锁操作

恢复数据

source /backup/all_bak_2020-5-13.sql

mysql -uroot -p </backup/all_bak_2020-5-13.sql

物理备份工具:xtrabackup

安装xtrabackup

yum install percona-xtrabackup(如果源里面没有,可以换其他源或者去官网下载rpm包)

全量备份

innobackupex --default-file=/etc/my.cnf --user=root --password=wangwei --backup /home/ (指定配置文件/etc/my.cnf,备份到/home)

执行回滚

innobackupex --apply-log /home/2020-05-09_12-23-56/

全量恢复

innobackupex --defaults-file=/etc/my.cnf --copy-back /home/2020-05-09_12-23-56/ (恢复后需要为文件添加权限)

增量备份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=wangwei --incremental --incremental-basedir=/home/2020-05-10_00-51-11/ /home/zengliang/

回滚

innobackupex --apply-log --redo-only /home/2020-05-10_00-51-11/

innobackupex --apply-log /home/2020-05-10_00-51-11/ --incremental-dir=/home/zengliang/2020-05-10_03-55-07/ (从增量备份到全量备份回滚)

恢复(必须删除存储目录里面的所有文件)

innobackupex --defaults-file=/etc/my.cnf --copy-back /home/2020-05-10_00-51-11/

posted @ 2020-05-12 02:05  菜鸟web  阅读(284)  评论(0编辑  收藏  举报