备份和恢复
运维的备份恢复相关的职责
设计备份策略
全备 、增量、时间、自动
日常备份检查
备份存在性
备份空间够用否
定期恢复演练
一季度 或者 半年
故障恢复
通过现有备份,能够将数据库恢复到故障之前的时间点.
迁移
备份类型
热备
在数据库正常业务时,备份数据,并且能够一致性恢复(只能是innodb)
对业务影响非常小
温备
锁表备份,只能查询不能修改(myisam)
影响到写入操作
冷备
关闭数据库业务,数据库没有任何变更的情况下,进行备份数据.
业务停止
备份方式及工具介绍
逻辑备份工具
基于SQL语句进行备份
mysqldump *****
mysqlbinlog *****
物理备份工具
基于磁盘数据文件备份
xtrabackup(XBK) :percona 第三方 *****
MySQL Enterprise Backup(MEB)
逻辑备份和物理备份的比较
mysqldump
优点:
1.不需要下载安装
2.备份出来的是SQL,文本格式,可读性高,便于备份处理
3.压缩比较高,节省备份的磁盘空间
缺点:
4.依赖于数据库引擎,需要从磁盘把数据读出
然后转换成SQL进行转储,比较耗费资源,数据量大的话效率较低
建议:
100G以内的数据量级,可以使用mysqldump
超过TB以上,我们也可能选择的是mysqldump,配合分布式的系统
1EB =1024 PB =1000000 TB
xtrabackup(XBK)
优点:
1.类似于直接cp数据文件,不需要管逻辑结构,相对来说性能较高
缺点:
2.可读性差
3.压缩比低,需要更多磁盘空间
建议: 100G<TB
5.备份策略
方式:
全备:全库备份,备份所有数据
增量:备份变化的数据
逻辑备份=mysqldump+mysqlbinlog
物理备份=xtrabackup_full+xtrabackup_incr+binlog或者xtrabackup_full+binlog
备份周期:
根据数据量设计备份周期
比如:周日全备,周1-周6增量
备份工具使用
mysqldump (逻辑备份的客户端工具)
客户端通用参数
参数 | 是否必须 | 含义 |
---|---|---|
-u | 用户名 | |
-p | 密码 | |
-S | socket | |
-P | 端口 | |
-A | 全备参数 | |
-B | 备份多个单库 | |
-R | 备份存储过程及函数 | |
–triggers | 备份触发器 | |
-E | 备份事件 | |
-F | 在备份开始时,刷新一个新binlog日志 | |
–master-data=2 | required | 以注释的形式,保存备份开始时间点的binlog的状态信息(此参数会自动加锁) |
–single-transaction | required* | innodb 存储引擎开启热备(快照备份)功能 |
本地备份
mysqldump -uroot -p -S /tmp/mysql.sock
远程备份
mysqldump -uroot -p -h 10.0.0.51 -P3306
备份专用基本参数
-A 全备参数
例子1:
[root@db01 ~]# mkdir -p /data/backup
mysqldump -uroot -p -A >/data/backup/full.sql
Enter password:
mysqldump: [Warning] Using a password on the command line interface can be insecure.
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
补充:
1.常规备份是要加 --set-gtid-purged=OFF,解决备份时的警告
[root@db01 ~]# mysqldump -uroot -p123 -A --set-gtid-purged=OFF >/backup/full.sql
2.构建主从时,做的备份,不需要加这个参数
[root@db01 ~]# mysqldump -uroot -p123 -A --set-gtid-purged=ON >/backup/full.sql
-B db1 db2 db3 备份多个单库
说明:生产中需要备份,生产相关的库和MySQL库
例子2 :
mysqldump -B mysql gtid --set-gtid-purged=OFF >/data/backup/b.sql
(3)备份单个或多个表
例子3–world数据库下的city,country表
mysqldump -uroot -p world city country >/backup/bak1.sql
以上备份恢复时:必须库事先存在,并且ues才能source恢复
(4)特殊参数1使用(必须要加)