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/