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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 一、数据备份的重要性备份的主要目的是灾难恢复。在生产环境中,数据的安全性至关重要。任何数据的丢失都可能产生严重的后果。

示例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点备份一次
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
关系型数据库 MySQL 数据库
rds备份与恢复
rds备份与恢复
56 3
|
2月前
|
SQL 关系型数据库 MySQL
mysql怎么备份
mysql怎么备份
193 7
|
14天前
|
数据库
使用Navicat Premium 12进行数据库定期自动备份(定时任务)--图文详解
使用Navicat Premium 12进行数据库定期自动备份(定时任务)--图文详解
19 0
|
14天前
|
SQL 存储 关系型数据库
mysql数据库备份与恢复
mysql数据库备份与恢复
|
1月前
|
SQL 存储 数据库
数据安全无忧,SQL Server 2014数据库定时备份解密
数据安全无忧,SQL Server 2014数据库定时备份解密
|
2月前
|
关系型数据库 MySQL Linux
Linux环境下定时备份mysql数据库
Linux环境下定时备份mysql数据库
|
2月前
|
数据库 对象存储 数据安全/隐私保护
在oceanbase数据库中,有没有遇到备份到oss环境,备份进度到98%就一直卡着的问题?
在oceanbase数据库中,有没有遇到备份到oss环境,备份进度到98%就一直卡着的问题?
29 6
|
2月前
|
存储 关系型数据库 MySQL
mysql怎么备份
mysql怎么备份
21 7
|
2月前
|
SQL 存储 关系型数据库
备份数据库
备份数据库
22 9
|
2月前
|
监控 容灾 安全
规划阿里云RDS跨区迁移并构建容灾与备份策略
规划阿里云RDS(Relational Database Service)跨区迁移并构建容灾与备份策略
111 2