mysql数据的备份与恢复                

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

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

1. 完全备份(Full Backup)

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

2、增量备份(IncrementalBackup)

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

3、差异备份(DifferentialBackup)

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

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

热备份(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、  准备备份数据库及表

3、  进行完整备份

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

查看备份数据:ls /backup/

4、  向表中插入数据

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

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

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

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

mysqlbinlog /mydata/data/mysql-bin.000015

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

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

实验

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

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

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

3 、pvcreate/dev/sdb1 添加物理卷

4 、vgcreatemyvg /dev/sdb1 添加卷组

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

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

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

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

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

9 、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 、验证数据库数据是否正确恢复

时间: 2024-11-05 16:24:46

mysql数据的备份与恢复                的相关文章

详细介绍MySQL中数据的备份与恢复,防止数据丢失

在日常的生产环境中为什么要进行备份 ??备份可以使生产中的数据进行有效的灾难恢复:硬件故障.软件故障.自然灾害.**.误操作测试等数据丢失场景. 备份注意要点 能容忍最多丢失多少数据 恢复数据需要在多长时间内完成 需要恢复哪些数据 还原要点 做还原测试,用于测试备份的可用性 还原演练 备份类型 完全备份.不分备份 完全备份:整个数据集 部分备份:只备份数据子集,如部分库或表 增量备份.差异备份 增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较快,还原复杂 差异备份

第四章:MySQL数据库的备份与恢复

目录 1. 备份数据的意义 2. 数据库备份... 1 2.1 备份单个数据库练习多种参数使用... 1 2.1 mysqldump的工作原理... 8 .3. 数据库备份实践... 9 3.1 备份多个库... 9 3.2 分库备份... 10 3.3 备份单表及分表备份... 11 3.4 备份多个表... 13 3.5 备份数据库表结构(不包含数据)... 13 3.6 备份表中数据... 14 3.7 小结... 15 3.8 刷新binlog的参数... 15 3.9 mysqldum

MySQL/MariaDB数据库备份与恢复

前言 数据库一般存放着企业最为重要的数据,它关系到企业业务能否正常运转,数据库服务器总会遇到一些不可抗拒因素,导致数据丢失或损坏,而数据库备份可以帮助我们避免由于各种原因造成的数据丢失或着数据库的其他问题.本文将讲解MySQL/MariaDB数据库的几种备份方法. 基础知识 备份类型 完全备份:备份整个数据库 部分备份:仅备份其中的一张表或多张表 增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分 差异备份:备份上次备份后变化的数据部分,和增量备份区别在于差异备份只可以相对完全备份做备份

数据的备份与恢复与用户权限管理

一.数据的备份与恢复 将已有的数据复制一份,存放到其他的服务器上.MySQL提供的备份有很多,常见的有文本备份.数据备份.sql备份等 1.文本备份 文本备份是最简单的一种备份方式! 一般认为,文本备份只适合Myisam存储引擎的数据表,就是将数据表的三个文件(结构.数据.索引)备份到其他服务器就行了 文本备份的特点: 简单(只需要复制粘贴),每次都需要备份全部的文件,非常浪费磁盘空间 2.数据备份 1)备份语法 select *|字段列表 into outfile 文件地址 from 表名;

MySQL数据库的备份与恢复的三种方法

MySQL数据库的备份与恢复的三种方法 1.利用mysqldump实现从逻辑角度完全备份mysql,配合二进制日志备份实现增量备份 2.利用lvs快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份 3.利用percona公司的xrabackup实现完全热备份与增量热备份 实验环境:RHEL5.8 ,SElinux关闭,MySQL是tar包初始化安装版本5.5.28 一.测试环境准备 1.1 mysql的安装就不说了,见http://laoguang.blog.51cto.com

MySQL创建用户以及授权、常用的sql语句、MySQL数据库的备份与恢复

MySQL创建用户以及授权 常用的sql语句 MySQL数据库的备份与恢复 对于大数据的备份请查阅资料 原文地址:http://blog.51cto.com/13515599/2090425

MySQL数据的备份还原及数据修复

在日常的生产环境中为什么要进行备份??备份可以使生产中的数据进行有效的灾难恢复:硬件故障.软件故障.自然灾害.误操作测试等数据丢失场景. 备份注意要点能容忍最多丢失多少数据恢复数据需要在多长时间内完成需要恢复哪些数据还原要点做还原测试,用于测试备份的可用性还原演练备份类型完全备份.不分备份完全备份:整个数据集部分备份:只备份数据子集,如部分库或表增量备份.差异备份增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较快,还原复杂差异备份:仅备份最近一次完全备份以来变化的

MySQL之Xtrabackup备份与恢复

MySQL之Xtrabackup备份与恢复 MySQL之Xtrabackup备份与恢复 一.Xtrabackup介绍 MySQL冷备.mysqldump.MySQL热拷贝都无法实现对数据库进行增量备份.在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据备份策略.例如每周实用完整备份,周一到周六实用增量备份.而Percona-Xtrabackup就是为了实现增量备份而出现的一款主流备份工具,xtra

java对MySql数据访问

终于解决了所有困难,通过java程序实现对MySql数据的访问,其中有许多困难,尤其对于一个新接触JDBC编码来说,每一次的错误都让人有些摸不着头脑,趁现在对一些产生的问题还记得,帮大家记录下来. 1.首先通过上篇对MySql环境的一些配置,?需要先学习一些MySql基本语法,在MySql中创建新的数据库:MySql语法:create database if not exists 数据库名;然后在其中加入你所需要存储的数据. 2.第二种方法:在.sql文本中添加MySql语法通过cmd命令提示符