mysql恢复备份快照_MySQL备份恢复:磁盘LVM快照

本文介绍了如何利用LVM逻辑卷快照进行MySQL数据库的备份和恢复。首先,通过创建LVM逻辑卷并挂载使用,然后详细阐述了在LVM上创建快照的过程,包括锁定数据库、滚动二进制日志、记录日志信息、创建快照、解锁数据库、复制数据和删除快照的步骤。此外,还提到了利用mysqlbinlog工具处理二进制日志以实现数据恢复。
摘要由CSDN通过智能技术生成

LVM快照备份数据

LVM快照属于几乎热备,因为要先请求全局锁,而后创建快照,并在创建快照完成后释放全局锁,无法做到增量备份,并且数据目录必须在LVM逻辑卷上存放。

一、创建一个逻辑卷并挂载使用

1)先创建两个主分区类型为8e

$ fdisk /dev/sdb

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-2610, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +5G

Command (m for help): t

Partition number (1-4): 1

Hex code (type L to list codes): 8e

Changed system type of partition 1 to 8e (Linux LVM)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

$fdisk/dev/sdb

Command(mforhelp): n

Commandaction

e extended

p primarypartition(1-4)

p

Partitionnumber(1-4): 1

Firstcylinder(1-2610,default1):

Usingdefaultvalue1

Lastcylinder,+cylindersor+size{K,M,G}(1-2610,default2610): +5G

Command(mforhelp): t

Partitionnumber(1-4): 1

Hexcode(typeLtolistcodes): 8e

Changedsystemtypeofpartition1to8e(LinuxLVM)

$ partprobe

$ cat /proc/partitions | grep sdb

8       16   20971520 sdb

8       17    5253223 sdb1

1

2

3

4

$partprobe

$cat/proc/partitions|grepsdb

8   16 20971520sdb

8   17  5253223sdb1

2)创建物理卷

$ pvcreate /dev/sdb1

1

$pvcreate/dev/sdb1

3)创建卷组,组名vg

$ vgcreate vg /dev/sdb1

1

$vgcreatevg/dev/sdb1

4)创建逻辑卷,卷名lv,大小2G

$ lvcreate -L +2G -n lv vg

1

$lvcreate-L+2G-nlvvg

5)格式化逻辑卷

$ mkfs -t ext4 /dev/vg/lv

1

$mkfs-text4/dev/vg/lv

6)挂载逻辑卷

$ mkdir /mydata

$ mount /dev/vg/lv /mydata

$ df -H | grep /mydata

/dev/mapper/vg-lv             2.2G   71M  2.0G   4% /mnt

1

2

3

4

$mkdir/mydata

$mount/dev/vg/lv/mydata

$df-H|grep/mydata

/dev/mapper/vg-lv      2.2G 71M 2.0G 4%/mnt

7)自动挂载逻辑卷(/etc/fstab文件中添加一行)

/dev/vg/lv  /mydata   ext4  defaults  0 2

1

/dev/vg/lv /mydata ext4 defaults 02

二、编译安装MySQL5.6

详情请看“MySQL5.6多方式安装”章节,主要是把MySQL的数据目录定义为/mydata目录,因为只有MySQL数据目录在逻辑卷上,做LVM快照才有意义。

三、LVM上创建快照

# 锁表;

mysql> flush tables with read lock;

# 滚动二进制日志;

mysql> flush logs;

# 记录当前二进制日志文件以及位置;

$ mysql -e 'show master status;' > /tmp/master-info

# LVM上创建快照卷;

$ lvcreate -L 100M -s -p r -n db-snap /dev/vg/lv

# 解锁;

mysql> unlock tables;

# 挂载快照卷,并复制/mnt下的数据,然后删除快照卷;

$ mount -o or /dev/vg/db-snap /mnt

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# 锁表;

mysql>flushtableswithreadlock;

# 滚动二进制日志;

mysql>flushlogs;

# 记录当前二进制日志文件以及位置;

$mysql-e'show master status;'>/tmp/master-info

# LVM上创建快照卷;

$lvcreate-L100M-s-pr-ndb-snap/dev/vg/lv

# 解锁;

mysql>unlocktables;

# 挂载快照卷,并复制/mnt下的数据,然后删除快照卷;

$mount-oor/dev/vg/db-snap/mnt

PS:做MySQL数据恢复的话,可以停机把备份的数据库直接复制到数据目录下,然后也可以根据二进制日志文件来进行完整备份后改动的数据(可以参考Mysqldump数据恢复部分)。

Mysqlbinlog工具处理二进制日志

# 查看二进制日志;

$ mysqlbinlog /mydata/mysql-bin.00001 > root.sql

# 指定开始时间并开始查看;

$ mysqlbinlog --start-datetime='2014-03-24 15:23:45' mysql-bin.00002

# 指定开始文件并开始查看;

$ mysqlbinlog --start-position=177 --stop-position=358 mysql-bin.00002

1

2

3

4

5

6

7

8

# 查看二进制日志;

$mysqlbinlog/mydata/mysql-bin.00001>root.sql

# 指定开始时间并开始查看;

$mysqlbinlog--start-datetime='2014-03-24 15:23:45'mysql-bin.00002

# 指定开始文件并开始查看;

$mysqlbinlog--start-position=177--stop-position=358mysql-bin.00002

PS:这里的mysql-bin.00002是完整备份后数据改动记录的第一个二进制日志文件,这里只恢复了一个因为数据较少,如果增量数据量大的话,后面的所有日志文件也同样要提取出来进行恢复。

如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值