MySQL数据库的备份与恢复(下)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一、数据备份的重要性备份的主要目的是灾难恢复。在生产环境中,数据的安全性至关重要。任何数据的丢失都可能产生严重的后果。

示例1:

只想恢复"小号"和"长号"(即恢复最后两行,第7~8行)

use yuji;
 delete from class where cid between 5 and 8; #删除cid为5到8的数据记录
 cat /bak/binlog.txt    #查看二进制文件内容,找到小号的位置点
 #从小号的位置点3876一直恢复到结尾
 mysqlbinlog --no-defaults --start-position='3876' /bak/mysql-bin.000003 | mysql -u root -p
  mysql -u root -p -e 'select * from yuji.class;' #查看表数据
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


示例2:

只想恢复"竹笛"(即只恢复第5行)

use yuji;
 delete from class where cid between 5 and 8;  #删除cid为5到8的数据记录
 cat /bak/binlog.txt    #查看二进制文件内容,找到竹笛后面的位置点
 #从头开始恢复,在"竹笛"的SQL语句后面截止 
 mysqlbinlog --no-defaults --stop-position='3512' /bak/mysql-bin.000003 | mysql -u root -p
 mysql -u root -p -e 'select * from yuji.class;' #查看表数据
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


示例3:

只想恢复"古琴"和"小号"(即只恢复第6~7行)

use yuji;
 delete from class where cid between 5 and 8;  #删除cid为5到8的数据记录
 cat /bak/binlog.txt    #查看二进制文件内容,找到"古琴"和"小号"的位置点
 #从“古琴”前面的位置点开始恢复,一直到"小号"后面的位置点
 mysqlbinlog --no-defaults --start-position='3591' --stop-position='4082' /bak/mysql-bin.000003 | mysql -u root -p
 mysql -u root -p -e 'select * from yuji.class;'   #查看表数据
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|



网络异常,图片无法展示
|


2)基于时间点的断点恢复

注意:日期必须是"yyyy-mm-dd"的格式。

mysqlbinlog --no-defaults --start-datetime='时间点' 文件名 | mysql -u root -p
 #从某一个时间点开始恢复,一直到日志结尾
 mysqlbinlog --no-defaults --stop-datetime='时间点' 文件名 | mysql -u root -p
 #从日志开头,一直恢复到某一个时间点前结束
 mysqlbinlog --no-defaults --start-datetime='起始时间点' --stop-datetime'结束时间点' 文件名 | mysql -u root -p
 #从某一个时间点开始恢复,一直到某一个位置点前结束
复制代码


示例:

只想恢复"古琴"和"小号"(即只恢复第6~7行)

use yuji;
 delete from class where cid between 5 and 8;  #删除cid为5到8的数据记录
 cat /bak/binlog.txt    #查看二进制文件内容,找到"古琴"和"小号"的时间点
 #从“古琴”前面的时间点开始恢复,一直到"小号"后面的时间点
 mysqlbinlog --no-defaults --start-datetime='2022-06-06 0:18:26' --stop-datetime='2022-06-06 0:18:37' /bak/mysql-bin.000003 | mysql -u root -p
 mysql -u root -p -e 'select * from yuji.class;'   #查看表数据
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|




八、使用脚本备份

  • 使用脚本每周三进行一次完全备份,之后每天进行增量备份。
  • 如果数据量很大,可以一周做2次完全备份,比如星期一和星期四各一次。
  • 增量备份减少磁盘空间的占用,但恢复起来比较麻烦。需要一个一个恢复。
  • 一般使用crontab在凌晨进行备份。

获取最新的二进制文件名称

查看索引文件,可获取最新的二进制文件。

tail -1 /usr/local/mysql/data/mysql-bin.index
 或者
 sed -n '$p' /usr/local/mysql/data/mysql-bin.index
复制代码


网络异常,图片无法展示
|


完全备份脚本(每周三完全备份一次):

vim /opt/mysqlquan.sh      #编写脚本
 #!/bin/bash
 mysqldump -u root -p123456 --all-databases > /bak/all_$(date +%F).sql
 chmod 700 /opt/mysqlquan.sh    
 crontab -e                        #定时任务执行脚本
 00 1 * * 3  /opt/mysqlquan.sh     #每周三凌晨1点备份一次
复制代码


增量备份脚本(每天凌晨3点备份一次):

vim /opt/binlog.sh
 #!/bin/bash
 #使用sed命令打印二进制日志文件最后一行内容作为filename变量的值
 filename=$(sed -n '$p' /usr/local/mysql/data/mysql-bin.index | awk -F '/' '{print $2}')
 #将二进制日志移动到备份目录下,并将移动后的文件名称加上日期
 mv /usr/local/mysql/data/$filename  /bak/binlog_$(date +%F)
 #生成新的二进制日志文件
 mysqladmin -uroot -pabc123 flush-logs
 chmod 700 /opt/binlog.sh
 crontab -e 
 00 1 * * 3   /opt/mysqlquan.sh    #完全备份,每周三凌晨1点备份一次  
 00 3 * * *   /opt/binlog.sh       #增量备份,每天凌晨3点备份一次
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 关系型数据库 MySQL
mysql数据库备份与恢复
MySQL数据库的备份与恢复是确保数据安全性和业务连续性的关键操作。
77 4
|
11天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
29 3
|
11天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
25 3
|
25天前
|
存储 定位技术 数据库
介绍一下数据库的备份和恢复策略
【10月更文挑战第21】介绍一下数据库的备份和恢复策略
|
11天前
|
数据库
【赵渝强老师】数据库的备份方式
备份数据库是指将数据库中的数据及相关信息保存起来,以便在系统故障时恢复。备份对象不仅限于数据本身,还包括数据库对象、用户权限等。根据备份策略、类型和模式的不同,可分为整体/部分备份、完全/增量备份、一致/非一致备份。文中还附有相关视频讲解。
|
1月前
|
安全 关系型数据库 MySQL
MySQL用户备份
【10月更文挑战第2天】MySQL用户备份
53 3
|
1月前
|
存储 关系型数据库 MySQL
MySQL如何备份?
【10月更文挑战第2天】MySQL如何备份?
99 3
|
2月前
|
关系型数据库 MySQL 数据库
Navicat备份数据库
涵盖`Navicat`数据库备份、数据安全及备份策略等主题。文库采用精美主题,提升阅读体验。
41 1
Navicat备份数据库
|
2月前
|
SQL 数据库 数据安全/隐私保护
如何手动备份数据库?
如何手动备份数据库?
112 1
|
3月前
|
SQL 数据库
Microsoft SQL Server 2014如何来备份数据库
Microsoft SQL Server 2014如何来备份数据库
377 3