【每日一记】第7天 MySQL 全备份只恢复某个表数据
  

牵网线的 6592人觉得有帮助

{{ttag.title}}
本帖最后由 牵网线的 于 2022-8-18 12:06 编辑


一. 备份数据库(如: test):
  • 可直接进入后台即可.(MySQL的默认目录:/var/lib/mysql )
  • 输入命令:

  1. mysqldump -u root -p test>/home/bak/test.sql
复制代码
此时,已成功将数据库test备份到/home/bak目录下的test.sql中。

二. 还原整个数据库(如: test):
1.第一种方法
  1. mysql -u root -p test < /home/bak/test.sql
复制代码

2.第二种方法
  • 先登录mysql数据库,输入命令 mysql -u root -p,输入密码即可.
  • 再使用数据库test, use test;
  • 导入备份文件. source /home/bak/test.sql;


三.恢复全备数据库中某张表
恢复思路:
我们用全量备份+binlog备份,恢复t1表,需要处理全备,在全备中截取create.sql+insert.sql+binlog.sql

在全备中截取建表语句(路径根据自己的修改)
  1. sed -n '/CREATE TABLE `t1` /,/\;/p' /data/backup/all.sql >/data/backup/create.sql
复制代码

在全备中截取插入语句(路径根据自己的修改)
  1. grep -i 'INSERT INTO `t1`'  /data/backup/all.sql >/data/backup/insert.sql
复制代码

在全备中截取binlog(路径根据自己的修改)
在全备all.sql中查找binlog文件名和起点
  1. vi /data/backup/all.sql
复制代码
查找binlog最后位置点,用mysqlbinlog解析日志,找到drop之前最后操作的位置点
  1. mysqlbinlog mysql_bin.000007
复制代码

截取binlog的日志(路径根据自己的修改)
  1. mysqlbinlog --skip-gtids --start-position=1775 --stop-position=2152 /data/3306/log/mysqlbinlog/mysql_bin.000007> /data/backup/binlog.sql
复制代码

恢复数据(create.sql+insert.sql+binlog.sql)
  1. use db01;
  2. set sql_log_bin=0;
  3. source /data/backup/create.sql
  4. source /data/backup/insert.sql
  5. commit;
  6. source /data/backup/binlog.sql
  7. set sql_log_bin=1;
复制代码

打赏鼓励作者,期待更多好文!

打赏
3人已打赏

发表新帖
热门标签
全部标签>
每日一问
2024年技术争霸赛
技术盲盒
干货满满
技术笔记
产品连连看
信服课堂视频
2023技术争霸赛专题
自助服务平台操作指引
每周精选
功能体验
技术咨询
GIF动图学习
新版本体验
秒懂零信任
标准化排查
信服圈儿
安全攻防
技术晨报
在线直播
通用技术
问题分析处理
每日一记
社区帮助指南
安装部署配置
运维工具
终端接入
天逸直播
以战代练
齐鲁TV
畅聊IT
答题自测
专家问答
技术圆桌
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
流量管理
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
答题榜单公布
纪元平台
卧龙计划
华北区拉练
山东区技术晨报
文档捉虫活动
华北区交付直播
北京区每日一练

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人