mysql数据的备份与恢复

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介:

在科技迅速发展的今天,我们每个人都生活在大数据时代,谁掌握的数据越多,就越能了解消费者的需求,也就更能拥有更好的发展前景,因此数据变得很重要。这时数据的备份就不可缺少了。今天我们就来谈一下mysql数据的备份与恢复。                                                  

数据备份按业务划分可分为:完全备份,增量备份,差异备份。

1. 完全备份Full Backup)                               

所谓全备份就是对整个数据库的数据和数据结构进行备份。这种备份方式的好处就是很直观,容易被人理解。而且当发生数据丢失的灾难时,只要用灾难之前的备份文件,就可以恢复丢失的数据。然而它也有不足之处:首先由于每天都对系统进行完全备份,因此在备份数据中有大量是重复的。这些重复的数据占用了大量的空间,这对用户来说就意味着增加成本;其次,由于需要备份的数据量相当大,因此备份所需时间较长。对于那些业务繁忙,备份窗口时间有限的单位来说,选择这种备份策略无疑是不明智的。

2、增量备份(IncrementalBackup

就是每次备份的数据只是相当于上一次备份后增加的和修改过的数据。这种备份的优点很明显:没有重复的备份数据,即节省空间,又缩短了备份时间。但它的缺点在于当发生灾难时,恢复数据比较麻烦。举例来说,如果系统在星期四的早晨发生故障,丢失大批数据,那么现在就需要将系统恢复到星期三晚上的状态。这时管理员需要首先找出星期一的那份完全备份数据进行系统恢复,然后再找出星期二的数据来恢复星期二的数据,然后在找出星期三的数据来恢复星期三的数据。很明显这比第一种策略要麻烦得多。另外这种备份可靠性也差。在这种备份下,各备份数据间的关系就象链子一样,一环套一环,其中任何一个备份数据出了问题都会导致整条链子脱节。

3、差异备份(DifferentialBackup

就是每次备份的数据是相对于上一次全备份之后新增加的和修改过的数据。管理员先在星期一进行一次系统完全备份;然后在接下来的几天里,管理员再将当天所有与星期一不同的数据(新的或经改动的)备份到磁带上。

b139e6c6f93de5816966e61b50aa3001.png

按方式划分:可分为热备、温备、冷备

热备份Hot Backup)是指在数据库运行中直接备份,对正在运行的数据库没有任何影响。

冷备份Cold Backup)是指在数据库停止的情况下进行备份,这种备份最为简单,一般只需要拷贝相关的数据库物理文件即可。

温备份Warm Backup)备份同样是在数据库运行时进行,但是会对当前数据库的操作有所影响,例如加一个全局读锁以保证备份数据的一致性。


mysqldump逻辑备份工具,适用于所有存储引擎,可用于温备,能实现完全备份,部分备份;对InnoDB存储引擎支持热备;cp, tar等文件系统工具:物理备份工具,适用于所有存储引擎;用于冷备,能实现完全备份,部分备份;


mysqldump+binlog

命令的语法格式

mysqldump [OPTIONS] database [tables]:备份单个库,或库指定的一个或多个表

mysqldump [OPTIONS] --databases [OPTIONS]DB1 [DB2 DB3...]:备份一个或多个库

mysqldump [OPTIONS] --all-databases[OPTIONS]:备份所有库

mysqldump+binlog

其他选项

-x, --lock-all-tables:锁定所有表

-l, --lock-tables:锁定备份的表

--single-transaction:启动一个大的单一事务实现备份

-C, --compress:压缩传输

-E, --events:备份指定库的事件调度器

-R, --routines:备份存储过程和存储函数

--triggers:备份触发器

--master-data={0|1|2}

0:不记录

1:记录CHANGE MASTER TO语句;此语句未被注释

2:记录为注释语句

-F--flush-logs:锁定表之后执行flushlogs命令


实战训练


1、  准备备份目录

mkdir -pv /backup/binlog

2、  准备备份数据库及表

bc57a7ae5f9e1ad39daaa4adca9ac05f.png

3、  进行完整备份

mysqldump --all-databases --lock-all-tables --flush-log --master-data=2 >/backup/'data +%F_%T'-all.sql

查看备份数据:ls /backup/

4、  向表中插入数据

2eb91fa00ce5b29eff10ffc76540d4c7.png

5、  进行增量备份,备份二进制日志

mysqlbinlog --start-position=245 --stop-position=440 /var/log/mariadb/mariadb_bin.000004 > /backup/'data +%F_%T'-all.sql 

6、  继续插入数据,在没备份的情况下删除数据库,模拟误操作

1b94610649cfb49cdebd73a1a262fd79.png

7、数据恢复,由于最后我们没有备份就删除了数据库,所以我们首先需要保护最后的二进制日志,查看删除操作之前的position值 

mysqlbinlog /mydata/data/mysql-bin.000015

、将最后操作的二进制日志备份

mysqlbinlog --stop-position=630 /var/lib/mysql/mysql_bin.000004 > /backup/binlog/binlog-`date +%F_%T`.sql

查看备份的日志:ls /backup/binlog/

9导入之前的所有备份

mysql < /backup/2017.....-all.sql 完全备份

mysql < /backup/2017......sql 增量备份

mysql < /backup/2017 .......sql 误操作之前的备份

10、查看数据库及数据



lvm2快照+binlog

LVM 快照简单来说就是将所快照源分区一个时间点所有文件的元数据进行保存,如果源文件没有改变,那么访问快照卷的相应文件则直接指向源分区的源文件,如果源文件发生改变,则快照卷中与之对应的文件不会发生改变。快照卷主要用于辅助备份文件。


实验

、添加硬盘,并划分磁盘类型为lvm 类型

在设置里添加硬盘以后,要使其写入内核,可以用 echo '- - -'/sys/class/scsi_host/host0/scan

partx -a/dev/sdb 使内核识别新磁盘

pvcreate/dev/sdb1 添加物理卷

vgcreatemyvg /dev/sdb1 添加卷组

 lvcreate -nmydata -L 5G myvg 添加逻辑卷

mkfs.ext4/dev/mapper/myvg-mydata 格式化逻辑卷

挂载mount/dev/mapper/myvg-mydata /lvm_data 使用,挂载点若没有,要提前创建

修改Mysql 配置,使得数据文件在逻辑卷上 datadir=/lvm_data

       修改文件:vim /etc/my.cnf

service mysqld restart 启动Mysql 服务

10  创建数据库,进行操作

11 mysql>FLUSH TABLES WITH READ LOCK; 锁定表

12 lvcreate -L1G -n mydata-snap -p r -s /dev/mapper/myvg-mydata # 创建快照卷Logicalvolume "mydata-snap" created.

13 mysql>UNLOCK TABLES; # 解锁所有表

14  mount/dev/myvg/mydata-snap /lvm_snap/ # 挂载snap

15 tar cvf/tmp/mysqlback.tar ./* # 打包物理备份

16 umount/lvm_snap/ # 卸载snap

17 lvremovemyvg mydata-snap # 删除snap

18 删除mysql 数据 rm -rf/lvm_data/*

19 解压恢复删除数据tar xvf /tmp/mysqlback.tar ./

20 验证数据库数据是否正确恢复


本文转自    honeyorange   51CTO博客,原文链接:http://blog.51cto.com/13172732/1983291

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
存储 关系型数据库 MySQL
mysql数据库备份与恢复
MySQL数据库的备份与恢复是确保数据安全性和业务连续性的关键操作。
27 4
|
10天前
|
关系型数据库 MySQL 数据库
ORM对mysql数据库中数据进行操作报错解决
ORM对mysql数据库中数据进行操作报错解决
35 2
|
10天前
|
SQL 关系型数据库 MySQL
MySQL如何排查和删除重复数据
该文章介绍了在MySQL中如何排查和删除重复数据的方法,包括通过组合字段生成唯一标识符以及使用子查询和聚合函数来定位并删除重复记录的具体步骤。
29 2
|
1月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
207 4
|
2月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
5天前
|
消息中间件 canal 关系型数据库
Maxwell:binlog 解析器,轻松同步 MySQL 数据
Maxwell:binlog 解析器,轻松同步 MySQL 数据
39 11
|
4天前
|
关系型数据库 MySQL 数据库
MySQL的语法涵盖了数据定义、数据操作、数据查询和数据控制等多个方面
MySQL的语法涵盖了数据定义、数据操作、数据查询和数据控制等多个方面
18 5
|
11天前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
37 4
|
19天前
|
存储 关系型数据库 MySQL
技术解析:MySQL中取最新一条重复数据的方法
以上提供的两种方法都可以有效地从MySQL数据库中提取每个类别最新的重复数据。选择哪种方法取决于具体的使用场景和MySQL版本。子查询加分组的方法兼容性更好,适用于所有版本的MySQL;而窗口函数方法代码更简洁,执行效率可能更高,但需要MySQL 8.0及以上版本。在实际应用中,应根据数据量大小、查询性能需求以及MySQL版本等因素综合考虑,选择最合适的实现方案。
90 6
|
19天前
|
关系型数据库 MySQL 数据处理
针对MySQL亿级数据的高效插入策略与性能优化技巧
在处理MySQL亿级数据的高效插入和性能优化时,以上提到的策略和技巧可以显著提升数据处理速度,减少系统负担,并保持数据的稳定性和一致性。正确实施这些策略需要深入理解MySQL的工作原理和业务需求,以便做出最适合的配置调整。
73 6
下一篇
无影云桌面