1. 运维人员在备份恢复方面的职责
1.设计备份策略
(1)备份内容:数据、日志
(2)备份容量:大小
(3)备份周期:
1.每天全备
2.周期备份+增量备份
3.周期全备+日志备份
(4)备份时间:一般是晚上备份
(5)备份的目标位置:
2.日常的备份检查
通过日志检查
通过备份的内容检查
通过备份的大小检查
3.定期的恢复演练
建议每半年做一次
4.故障时的恢复
快速准确恢复数据
5.平台数据迁移
同构平台
异构平台
2.备份工具介绍
1.介绍
mysqldump (MDP)
Percona Xtrabackup (xbk/pbk/pxb)
2. 区别
MDP: 逻辑备份,SQL文件,文本形式,可读性高,便于处理,压缩比高,备份相对较慢比较适合于100G以内的备份
xbk: 物理备份,数据文件,可读性较低,压缩比相对较低,比较适合于100G内的备份
100 PB
3.mysqldump
1.备份逻辑
将磁盘数据,加载到历史表,转换为SQL(建库建表插入语句)
2.核心参数
(1) 连接参数
本地: -u -p -S
远程: -u -p -H -P
(2) 备份参数
基础参数:
[root@db01 data_3306]# mkdir -p /data/backup
[root@db01 data_3306]# chown -R mysql.mysql /data/backup
[root@db01 data_3306]# mysqldump -uroot -p123 -A >/data/backup/full.sql
[root@db01 data_3306]# mysqldump -uroot -p123 -B bgx oldboy test world mysql > /data/backup/db.sql
[root@db01 data_3306]# mysqldump -uroot -p123 world city country > /data/backup/tab.sql
[root@db01 data_3306]# mysqldump -uroot -p123 world city country
高级参数
(1) 自动记录备份时的binlog filename 及pos
(2) 自动加锁和解锁
(3) 加了
mysqldump -uroot -p123 -A
备份结果:30
开启独立事务,备份InnoDB表的一致性快照。实现InnoDB表的热备功能
补充:对于非InnoDB表(开启FTWRL全局读锁 flush tables with read lock),对于MyISAM库下的系统表备份的时候,回家global read lock
-R 存储过程和函数
-E 时间
使用场景: 在数据库有超大表时,需要加此参数
mysqldump -uroot -p -A
3.3 模拟故障和恢复(mysqldump 全备 + binlog)
(1) 模拟原始数据
mysql> create database mdp charset utf8mb4;
mysql> use mdp
mysql> create table t1 (id int);
mysql> create table t2 (id int);
mysql> create table t3 (id int);
mysql> insert into t1 values(1);
mysql> commit;
mysql> insert into t2 values(1);
mysql> commit;
mysql> insert into t3 values(1);
mysql> commit;
(2) 模拟全备
mysqldump -uroot -p -A
(3) 模拟新的数据
use mdp
insert into t1 values(2);
commit;
insert into t2 values(2);
commit;
insert into t3 values(2);
commit;
(4) 搞破坏
drop database mdp;
(5) 恢复备份
full
截取 binlog 部分
恢复过程:
1.准备备份
vim /data/backup/full_2019-12-26.sql
| mysql-bin.000005 | 2420 | Query | 6 | 2509 | drop database mdp
2. 截取二进制日志
mysqlbinlog
3. 恢复备份
set sql_log_bin=0;
source /data/backup/full_2019-12-26.sql
source /data/backup/bin.sql
set sql_log_bin=1;
4.检查数据
show tables;
select * from t1;
扩展: 从全备中提取 单库 单表 的数据进行恢复
1、获得表结构
# sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `city`/!d;q' full.sql>createtable.sql
2、获得INSERT INTO 语句,用于数据的恢复
# grep -i 'INSERT INTO `city`' full.sqll >data.sql &
3.获取单库的备份
# sed -n '/^-- Current Database: `world`/,/^-- Current Database: `/p' all.sql >world.sql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构