暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第八章 数据备份

蜜蜂点滴 2020-06-11
216

一、备份恢复与迁移

1、DBA在数据库备份恢复方面的职责

设计备份策略:

全备:数据量小的话,天天全备;

增量:数据量大,几TB,周日夜里全备,

      每天做上一天的增备

      每天做基于全备的增备;

时间:半夜;

自动:定时任务;

日常备份检查:

备份存在性;

备份空间是否够用。

定期恢复演练(测试备份是否正确):

一季度,或者半年。

故障恢复:

通过现有备份,能够将数据库恢复到故障之前的时间点;

迁移:

停机时间;

回退方案。

2、备份类型

热备:只有innodb支持热备,在数据库正常业务时,备份数据,并且能够一致性恢复,业务不停止;

冷备:关闭数据库业务,数据库没有任何变更情况下,进行备份数据,业务停止;

逻辑备份工具:

基于SQL语句进行备份

mysqldump

mysqlbinlog

物理备份功能:

Xtrabackup(XBK):percona第三方 免费

MySQL Enterprise Backup(MEB):官方企业版备份工具,收费

(1)mysqldump:

优点:

不需要安装;

备份出来的是SQL,文本格式,可读性高,便于备份处理;

压缩比较高,节省备份的磁盘空间;

缺点:

依赖于数据库引擎,需要从磁盘把数据读出,然后转换成SQL进行转储,比较耗费资源,数据量大的话效率较低。

建议:100G内的数据量级,可以使用mysqldump;

超过TB以上,我们也可能选择的是mysqldump,配合分布式的系统;

1EB=1024PB=1000000TB

(2)Xtrabackup:

优点:

类似于直接cp数据文件,不需要管理逻辑结构,相对来说性能较高;

缺点:

可读性差;

压缩比较低,需要更多的磁盘空间;

建议:100G-1TB

(3)备份策略:

备份方式:

全备:

增量:

逻辑备份:mysqldump+mysqlbinlog

物理备份:xtrabackup_full+xtrabackup_incr+binlog 或者xtrabackup_full+binlog

其他备份:主从复制备份

①逻辑备份工具-mysqldump

客户端通用命令:和连接有关

-u

-p

-S

-h

-P

本地备份:

mysqldump -uroot -p密码 -S /tmp/mysql.sql

远程备份:

mysqldump -uroot -p密码 -h -P端口

②基本备份参数:

-A:实现全库备份,

-B:实现多个库的备份;

全备:

mysqldump -uroot -p -A -S /tmp/mysql.sock >/backup/full.sql

备份单个库或多个库:备份school和stu库

mysqldump -uroot -p -B school stu -S /tmp/mysql.sock >/backup/db.sql

备份某个库下的1张或多张表:

备份school库下的student表和teacher表

mysqldump -uroot -p school student teacher -S /tmp/mysql.sock >/backup/tab.sql

school下的表都备份:只备份表

mysqldump -uroot -p school -S /tmp/mysql.sock >/backup/tab.sql

注意:此种方法,只会备份建表语句和insert语句;索引恢复前需要把库建行,并use进去。

③必加参数(1):

-R:在备份时,同时备份存储过程和函数,如果没有会自动忽略;

-E:在备份时,同时备份event,如果没有会自动忽略;

--triggers:在备份时,同时备份触发器,如果没有会自动忽略;

④必加参数(2):

--master-data=2:

    记录备份开始时position号,可以作为将来做日志截取的起点

    可以实现自动锁表;

    --master-data=0:默认没开启 1:把备份点写入到二进制文件里 2:备份点以注释的形式写入到二进制文件里;

    配合--single-transaction,减少锁的(innodb引擎)。

--single-transaction

    对于innodb的表,实现快照备份,不需要锁表。

⑤其他参数(不是必加参数):

-F:一个库给刷一个mysql-bin.00000二进制日志;

--set-gtid-purged=auto:在备份文件中,

auto,on,off

使用场景:

--set-gtid-purged=OFF,可以使用在日常备份参数中

mysqldump -uroot -p -A -R -E --triggers --master-data=2 --single-transaction --set-gtid-purged=OFF >/backup/full.sql;

--set-gtid-purged=ON或AUTO在构建主从复制时需要的参数配置

mysqldump -uroot -p -A -R -E --triggers --master-data=2 --single-transaction --set-gtid-purged=ON >/backup/full.sql;

--max-allowed-packet=:数据包的最大大小;

带时间戳备份:

mysqldump -uroot -p -A -R --triggers --master-data=2 max_allowed_packet=128M --single-transaction|gzip >/backup/full_$(date+%F).sql.gz;

文章转载自蜜蜂点滴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论