首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[MYSQL案例][007] 备份部分表&&快速备份大表

[MYSQL案例][007] 备份部分表&&快速备份大表

原创
作者头像
大大刺猬
发布2023-05-24 20:57:07
发布2023-05-24 20:57:07
1.4K0
举报
文章被收录于专栏:大大刺猬大大刺猬

环境/读前须知

要求mysql版本大于5.6.6

MYSQL版本

innodb_file_per_table

难易程度(共5级)

> 5.6.6

true

3

需求分析

需求:

要备份部分表, 部分表中有个别表很大. 比如5000W行

分析

备份大致分为两种: 物理备份和逻辑备份.

物理备份: 速度快, 但是不支持异构恢复

逻辑备份: 速度慢, 支持异构恢复, 方便备份部分表.

所以整体使用逻辑备份(mysqldump), 个别大表使用物理备份(导出表空间)

实现

逻辑备份和恢复

mysql备份部分表, 比较简单, 直接参考如下命令即可

代码语言:javascript
复制
mysqldump -h127.0.0.1 -P3308 -uroot -p123456 \
--set-gtid-purged=off \
--quick \
--single-transaction \
--master-data=2 db1 \
--tables t1 t2 > backup_db1_20230524.sql

--set-gtid-purged 不含gtid信息

--quick 不缓存查询

--single-transaction 以事务模式备份数据

--master-data=2 含change master信息, 并注释掉(可选)

--tables 指定的表, 表之间用空格隔开

恢复也比较简单, 参考如下命令

代码语言:javascript
复制
mysql -h127.0.0.1 -uroot -P3308 -p123456 -D db1 < backup_db1_20230524.sql

注意备份的时候指定了数据库的, 但是.sql文件里面没得use db信息, 所以导入的时候要指定数据库

物理备份和恢复

本次使用官方的表空间导出导入.

分区表也是支持的. 本文只演示非分区表(不建议使用分区表....)

备份/导出

注意: 备份导出的时候目标表是只读的状态

代码语言:javascript
复制
mysql> flush table t1 for export; -- 窗口不要关, 不然锁(metadata lock)就释放了

shell> mkdir -p /backup/t20230524/
shell> cp -ra /data/mysql_3308/mysqldata/db1/t1.ibd /backup/t20230524/
shell> cp -ra /data/mysql_3308/mysqldata/db1/t1.cfg /backup/t20230524/ #flush for export产生的

mysql> unlock tables; -- 释放锁, 退出会话也会自动释放

恢复/导入

代码语言:javascript
复制
mysql> ALTER TABLE t1 DISCARD TABLESPACE; -- 移除表空间

shell> cp -ra /backup/t20230524/t1.ibd /data/mysql_3308/mysqldata/db1 #拷贝回去
shell> cp -ra /backup/t20230524/t1.cfg /data/mysql_3308/mysqldata/db1
shell> chown mysql:mysql /data/mysql_3308/mysqldata/db1/t1.* #记得修改权限

mysql> ALTER TABLE t1 IMPORT TABLESPACE; -- 导入表空间

校验

代码语言:javascript
复制
checksum table t1; -- 对比下和备份的时候校验值是否一样. 可选.

注: ddl发生变化之后, 会导入失败

总结/题外话

mysql备份工具很多, 根据自己的需求搭配使用. 还可以备份下binlog. 都是为了需要的时候能恢复数据,

空间比较充足的还是建议全备. 当然也可以只备份部分重要的表(部分表可能会破坏事务的完整性).

定时任务参考

代码语言:javascript
复制
30 23 * * 6 /usr/bin/sh /path/backup_dbn.sh #每周六23:30备份

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境/读前须知
  • 需求分析
    • 需求:
    • 分析
  • 实现
    • 逻辑备份和恢复
    • 物理备份和恢复
      • 备份/导出
      • 恢复/导入
  • 总结/题外话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档