mysql数据的备份与恢复

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
14天前
|
缓存 NoSQL 关系型数据库
13- Redis和Mysql如何保证数据⼀致?
该内容讨论了保证Redis和MySQL数据一致性的几种策略。首先提到的两种方法存在不一致风险:先更新MySQL再更新Redis,或先删Redis再更新MySQL。第三种方案是通过MQ异步同步以达到最终一致性,适用于一致性要求较高的场景。项目中根据不同业务需求选择不同方案,如对一致性要求不高的情况不做处理,时效性数据设置过期时间,高一致性需求则使用MQ确保同步,最严格的情况可能涉及分布式事务(如Seata的TCC模式)。
37 6
|
21天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
|
28天前
|
关系型数据库 MySQL
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
elasticsearch对比mysql以及使用工具同步mysql数据全量增量
21 0
|
30天前
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
20 1
|
30天前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
26 1
|
30天前
Mybatis+mysql动态分页查询数据案例——条件类(HouseCondition)
Mybatis+mysql动态分页查询数据案例——条件类(HouseCondition)
15 1
|
30天前
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
21 1
|
30天前
Mybatis+mysql动态分页查询数据案例——房屋信息的实现类(HouseDaoMybatisImpl)
Mybatis+mysql动态分页查询数据案例——房屋信息的实现类(HouseDaoMybatisImpl)
22 2
|
26天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
95 0
|
30天前
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
15 1