MySql8.0数据备份与恢复

以 SQL 格式文件转储并恢复

# 备份指定数据库实例
sudo mysqldump  -u 用户账号 -p用户密码 数据库实例名称 > 数据库实例名称.sql
# 备份指定表(1千万条数据大概占用1G磁盘空间)
sudo mysqldump  -u 用户账号 -p用户密码 数据库实例名称 表名 > 表名.sql
# 恢复数据
sudo mysql  -u 用户账号 -h 登陆主机ip -p用户密码 数据库实例名称 < /var/lib/mysql-files/已备份文件名称.sql

以分隔文本格式文件转储并恢复

show global variables like '%secure%';

在这里插入图片描述

# 默认指定导出目录:/var/lib/mysql-files/
sudo mysqldump -u 用户账号 -p密码 --tab=/var/lib/mysql-files/ 数据库实例
sudo mysqldump -u 用户账号 -p密码 --tab=/var/lib/mysql-files/ 数据库实例 表名
sudo mysqlimport -u 用户账号 -p密码 数据库实例名称 /var/lib/mysql-files/已备份文件名称.txt

使用二进制日志的时间点恢复

mysqlbinlog具有根据事件时间或日志中事件位置选择相应二进制日志并将二进制格式转换为文本

  • 确定数据被删除或修改的开始时间
# 登陆mysql
mysql -u用户账号 -p用户密码
# 查看日志文件列表,默认最后一个是最新的
SHOW BINARY LOGS; 
# 刷新binlog日志,生产新的日志文件便于测试
# flush logs; 
# 查看正在使用的日志文件
# SHOW MASTER STATUS; 

在这里插入图片描述

# 查看日志中的操作记录,如果日志太多建议下载到本地查看
show binlog events in 'binlog.000020'; 

在这里插入图片描述

# 下载日志(linux命令行下输入)到本地
sudo mysqlbinlog /var/lib/mysql/binlog.000020 > /home/lixing/binlog.000020
# 下载日志(linux命令行下输入)到本地【显示编码为 base-64 字符串】
mysqlbinlog -v --base64-output=DECODE-ROWS /var/lib/mysql/binlog.000022 > /home/lixing/binlog.000022
# 下载指定位置的日志到本地
sudo mysqlbinlog /var/lib/mysql/binlog.000020 --start-position=236 --stop-position=485 > /home/lixing/binlog.000020

在这里插入图片描述
在这里插入图片描述
根据日志可以看出:2022-04-09 20:39:34删除了一条数据,所以我们需要先恢复到最近一次的备份数据(2022-04-09凌晨的备份数据),然后跳过binlog.000020日志的236-485行并应用该日志

  • 还原最近一次备份
1、以 SQL 格式文件转储形式的恢复
2、以分隔文本格式文件转储形式的恢复
注意:如果是误删除、误更新的操作,需要先将目标表进行备份然后清空数据再进行恢复
CREATE TABLE table1 SELECT * FROM table2; -- 创建表1,同时拷贝表2的结构和数据
  • 应用二进制日志中的事件
    应用二进制日志中的事件,重新执行它们所表示的数据修改,这样就可以在给定的时间跨度内恢复数据更改
# 对二进制日志中指定位置进行应用(跳过误删除、误更新的位置)
mysqlbinlog --stop-position=236 /var/lib/mysql/binlog.000020 | mysql -u用户账号 -p账号密码 
mysqlbinlog --start-position=485 /var/lib/mysql/binlog.000020 | mysql -u用户账号 -p账号密码
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大能嘚吧嘚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值