快照与备份有什么区别?快照是备份的其中一种么?还是两种不同的概念?

快照与备份有什么区别?快照是备份的其中一种么?还是两种不同的概念?,第1张

快照是数据存储的某一时刻的状态记录;备份则是数据存储的某一个时刻的副本。这是两种完全不同的概念。

快照和备份的区别:

快照和云硬盘备份均是重要的数据容灾手段,两者存储方案不同。

快照数据与云硬盘数据存储在一起,可以支持快速备份和恢复。

备份数据则存储在对象存储(OBS)中,可以实现在云硬盘存储损坏情况下的数据恢复。

快照当前不支持设置自动创建。备份支持设置自动创建,您可以指定备份策略,系统会根据策略自动对云硬盘进行数据备份。

存储快照的实现原理

目前,快照的实现方式均由各个厂商自行决定,但主要技术分为2类,一种是写时拷贝COW(Copy On Write),另一种,是写重定向ROW(Redirect On Write)。

写时拷贝COW(Copy-On-Write),也称为写前拷贝。

创建快照以后,如果源卷的数据发生了变化,那么快照系统会首先将原始数据拷贝到快照卷上对应的数据块中,然后再对源卷进行改写。

快照与备份是两个不同的概念.

先来看快照.

快照,其本质类似于数据库的照片,也就是在某个特定时间点(创建快照的时间点)给数据库拍个照放在那儿.但是这个照片是一个新的数据库,可以应用SQL语句.

快照数据库里的数据是不变的.创建快照后,系统会对原数据库的所有数据页做个标识,如果数据页在创建快照后被修改,会复制一个数据页出来,没有修改的数据页则不会有快照(原数据库和快照数据库共用该数据页).

从这样来看,快照存在的时间越长,对系统的压力会越大(要维护的变化数据页太多).

一般来说,快照用在数据库的镜像机上,因为镜像机上的数据库永远是Restoring状态,可以在某个特定的时间点生成一个快照,这样就可以在镜像机上提供一个可访问的数据库,用来为数据仓库提供数据源比较合适.

再来看备份.

备份,其本质是一个副本.相当于在某个时间点把数据库里的所有对象内容都COPY一份,放到一个特定的文件里(备份文件,一般是.bak).

这个文件不是一个数据库,不能直接应用SQL,必须先通过还原的方式还原到一个数据库(可以是和原数据库名称一致,也可以是一个新的数据库),之后才能访问里面的数据.

因为备份的结果是文件,这个文件可以被COPY走,或者写入磁带(放到银行里),从而实现离线容灾.

此外,备份是个很复杂的概念,还涉及到数据库的恢复模型、日志处理等很复杂的东西,需要自己先系统学习下备份还原的相关概念。

新建一个lvm磁盘,这里我建的lv为mydatalv,挂载到了/data下

[root@localhost

~]#

lvs

LV

VG

Attr

LSize

Pool

Origin

Data%

Meta%

Move

Log

Cpy%Sync

Convert

mydatalv

mydata

-wi-ao----

1.00g

[root@localhost

~]#

df

-h

文件系统

容量

已用

可用

已用%

挂载点

/dev/mapper/mydata-mydatalv

976M

2.6M

907M

1%

/data

将原数据库文件复制到/data目录下

[root@localhost

~]#

cp

-a

/var/lib/mysql

/data/

修改配置文件,将mysql数据库文件放在lvm盘中,二进制文件放在非lvm盘的/var/lib/mysql/目录下

[root@ns1

~]#

vim

/etc/my.cnf

[mysqld]

log_bin=/var/lib/mysql/mysql-bin

datadir=/data/mysql

[root@localhost

~]#

service

mariadb

restart

[root@localhost

~]#

ls

/data/mysql

aria_log.00000001

ibdata1

ib_logfile1

mysql-bin.000001

mysql-bin.000003

performance_schema

aria_log_control

ib_logfile0

mysql

mysql-bin.000002

mysql-bin.index

test

可以看到重启后数据库文件已存放在了/data/mysql目录中了

对mysql进行锁表备份

[root@localhost

~]#

mysql

-e

'flush

tables

with

read

lock'

锁表

[root@localhost

~]#

mysql

-e

'flush

logs'

对日志进行滚动,

[root@localhost

~]#

mysql

-e

'show

master

status'

>

/root/back.$(date

+%F+%T)

[root@localhost

~]#

ls

back.2016-07-13+10:14:29

对lv创建快照

[root@localhost

~]#

lvcreate

-L

1G

-n

mysqlback

-p

r

-s

/dev/mydata/mydatalv

释放锁

[root@localhost

~]#

mysql

-e

'unlock

tables'

在别的磁盘上创建备份目录,只读挂载快照后备份至备份目录

[root@localhost

~]#

mkdir

/myback

[root@localhost

~]#

mount

-r

/dev/mydata/mysqlback

/mnt

[root@localhost

~]#

cp

-a

/mnt/mysql

/myback

修改表内容,然后删除掉数据库文件内容即/data/mysql中的内容

[root@localhost

~]#

mysql

MariaDB

[hellodb]>

use

hellodb

MariaDB

[hellodb]>

insert

into

classes

(class,numofstu)

values

('xxoo',39)

[root@localhost

~]#

rm

-rf

/data/*

修改配置文件中二进制日志和数据库文件的位置

[root@localhost

~]#

vim

/etc/my.cnf

[mysqld]

log_bin=/data/mysql/mysql-bin

datadir=/data/mysql

利用/myback/中的内容还原

[root@localhost

~]#

cp

-a

/myback/*

/data/

[root@localhost

~]#

service

mariadb

restart

利用二进制日志还原快照后的 *** 作,由下面这个文件来查看快照执行时二进制日志的位置

[root@localhost

~]#

cat

back.2016-07-13+10\:14\:29

File

Position

Binlog_Do_DB

Binlog_Ignore_DB

mysql-bin.000014

245

将000014中245之后的 *** 作做成sql文件,进行还原

[root@localhost

~]#

mysqlbinlog

--start-position=245

/var/lib/mysql/mysql-bin.000014

>

binlog.sql

[root@localhost

~]#

mysql

<

/root/binlog.sql

查看恢复情况

[root@localhost

~]#

mysql

MariaDB

[(none)]>

use

hellodb

MariaDB

[hellodb]>

select

*

from

classes

+---------+----------------+----------+

|

ClassID

|

Class

|

NumOfStu

|

+---------+----------------+----------+

|

1

|

Shaolin

Pai

|

10

|

|

2

|

Emei

Pai

|

7

|

|

3

|

QingCheng

Pai

|

11

|

|

4

|

Wudang

Pai

|

12

|

|

5

|

Riyue

Shenjiao

|

31

|

|

6

|

Lianshan

Pai

|

27

|

|

7

|

Ming

Jiao

|

27

|

|

8

|

Xiaoyao

Pai

|

15

|

|

9

|

xxoo

|

39

|

+---------+----------------+----------+

9

rows

in

set

(0.00

sec)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9878838.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存