“这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战”
1. 介绍
1.1 备份策略的设计
- 备份周期:根据数据量
- 备份工具:
- mysqldump
- mysqlbinlog
- MEB(MySQL Enterprise BACKUP)
- 备份方式:
-
逻辑备份:
- 全量:mysqldump
- 增量:binlog(flush logs, cp)
-
物理备份
- 全量:percona Xtrabackup
- 增量:percona Xtrabackup
-
1.2 检查备份可用性
- crontab -l:查看备份脚本
- 找到备份路径
- 查看备份日志,检查备份文件大小、内容
1.3 定期的恢复演练
1.4 数据恢复
1.5 数据迁移
- mysql -> mysql
- 其它 -> mysql
- mysql -> 其它
2. 备份的介绍
2.1 备份类型
- 热备:对于业务影响最小,目前只有 InnoDB 支持
- 温备:长时间锁表备份,MyISAM
- 冷备:业务关闭情况下备份
3. mysqldump
3.1 连接数据库
-u
-p
-s
-h
P
3.2 基础备份参数
-
全备:
-A- mysqldump -uroot -A > /tmp/all.sql
-
备份多个单库:
-B- mysqldump -uroot -B account goods > /tmp/db.sql
-
单个表备份:库 表 表 ... 第一个是库,后面都是表
- mysqldump -uroot account student > /tmp/student.sql
3.3 特殊备份参数
-
-R:备份存储过程和函数 -
-E:备份时间 -
triggers:备份触发器 -
--master-data=2-
在备份时,会自动记录,二进制日志文件名和位置号
- 0:默认值
- 1:以 change master to 命令形式,可以用作主从复制
- 2:以注释的形式记录,备份时刻的文件名 + position 号
-
自动锁表
-
如果配合
--single-transaction,对于 InnoDB 表,可以实现不缩表备份(快照备份) -
不加
--single-transaction,是温备份
-
-
single-transaction- InnoDB 存储引擎开启热备(快照备份)功能
- 不加
--single-transaction参数,启动所有表的温备份,所有表都锁定 - 加上
--single-transaction参数,对于 InnoDB 进行快照备份,对于非 InnoDB 表可以实现自动锁表功能。
- 不加
- InnoDB 存储引擎开启热备(快照备份)功能
4. 扩展参数
-
--set-gtid-purged=AUTO/ON- 在构建主从时,使用 AUTO/ON
- 仅是做普通的本机备份恢复时,可以添加
--set-gtid-purged=OFF
-
--max_allowed_packet=128M- 控制的是备份时传输的数据包的大小
5. 物理备份 —— xtrabackup
5.1 安装
5.1.1 安装依赖包
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL libev
5.1.2 下载软件并安装
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
yum -y install percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm
5.2 备份命令介绍
- innobackupex
5.3 innobackupex 使用
5.3.1 备份核心理念
- 针对非 InnoDB,进行锁表备份,copy 所有的非 InnoDB 表文件
- 针对 InnoDB 表,立即出发 CKPT,copy 所有 InnoDB 表相关的文件(ibdata1、ibd、frm)。并且将备份过程中产生的、新的数据变化的部分 redo 一起备份走
- 在恢复时,xbk 会调用 InnoDB 引擎的 CSR 过程,将数据和 redo 的 LSN 追平,然后进行一致性恢复。
5.3.2 XBK 全备和恢复
-
innobackupex --user=root --no-timestamp /tmp/full
-
innobackupex --apply-log /tmp/full
5.4 备份产生的文件介绍
-
xtrabackup_binlog_info
- 文件名
- 备份时的 position 号
- gtid 号
-
xtrabackup_checkpoints
- from:备份中包含的 LSN 号的起点,全备是 0;增量是上次备份的结束位置
- to:ckpt 时的 LSN
- last-9:备份结束时的 LSN,下次增量备份的起始位置