mysql lvm快照_利用LVM快照备份mysql数据库

cb53ac708bb239cf21f4c809f78743df.png

类型:国产软件大小:337.2M语言:中文时间:16-12-13评分:10.0

一、步骤

1、首先对数据库施加读锁

2、记录二进制日志文件的文件名和事件位置

3、创建快照卷

4、解锁数据库

5、挂载快照卷,复制数据文件

6、删除快照卷

二、准备工作

首先,要对LVM的快照有所了解(http://svenman.blog.51cto.com/6867097/1357510这篇博客写了LVM的快照),并将数据文件放在LVM上。

其次,在数据库中新建一张测试用的表1

2

3

4

5

6

7

8

9

10

11

12mysql> select * from data.info;

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

| sid | name  | age  |

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

|   1 | tom   |   25 |

|   2 | jerry |   26 |

|   3 | jim   |   40 |

|   4 | ccr   |   34 |

|   5 | dss   |   21 |

|   6 | safe  |   44 |

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

6 rows in set (0.00 sec)

三、开始备份

1. 首先对数据库施加读锁1

2mysql> flush tables with read lock;

Query OK, 0 rows affected (0.00 sec)

2. 记录二进制日志文件的文件名和事件位置1

2

3

4

5

6

7mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000002 |      964 |              |                  |                   |

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

1 row in set (0.00 sec)

3. 创建快照卷1

2

3

4

5

6

7

8

9

10

11

12[root@mysql ~]# cat /etc/my.cnf

[client]

user=root

password=mysql

[mysqld]

datadir=/mysql/data

socket=/tmp/mysql.sock

user=mysql

[root@mysql ~]# df -Th

/dev/mapper/myvg-mydata

ext4    689M  128M  527M  20% /mysql

#可以看到mysql的数据放在myvg下的mydata这个逻辑卷上1

2

3[root@mysql ~]# lvcreate -n snap-data -L 100M -p r -s /dev/myvg/mydata

Logical volume "snap-data" created

#快照完成

4. 解锁数据库1

2mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

5. 挂载快照卷,复制数据文件1

2

3

4

5

6

7

8[root@mysql mnt]# mount -o ro /dev/myvg/snap-data /mnt/

[root@mysql mnt]# cd /mnt/

[root@mysql mnt]# ls

data  lost+found

[root@mysql mnt]# tar -jcvf /root/mysql-backup-`date +%F`.tar.bz2 data/

[root@mysql mnt]# cd ~

[root@mysql ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  mysql-backup-2014-02-22.tar.bz2

6. 删除快照卷1

2

3

4[root@mysql ~]# umount /mnt/

[root@mysql ~]# lvremove /dev/myvg/snap-data

Do you really want to remove active logical volume snap-data? [y/n]: y

Logical volume "snap-data" successfully removed

这样就备份完成了。

三、恢复测试

1. 在新建的info表中再插入2行数据1

2

3mysql> insert into info(name,age) values('seven',30),('eight',49);

Query OK, 2 rows affected (0.01 sec)

Records: 2  Duplicates: 0  Warnings: 0

2. 备份上次lvm快照开始的position号以后的二进制文件1[root@mysql ~]# mysqlbinlog --start-position=964 /mysql/data/mysql-bin.000002 > /root/bak.sql

mysqlbinlog的用法:

A.指定恢复时间     --start-date和--stop-date选项,格式“2014-2-22 16:33:04”

B.指定恢复位置     --start-position和--stop-position选项

3. 删除所有文件1

2[root@mysql ~]# service mysqld stop

[root@mysql ~]# rm /mysql/* -fr

4. 开始恢复(LVM完全备份的恢复)1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16[root@mysql ~]# tar -jxvf mysql-backup-2014-02-22.tar.bz2 -C /mysql/

[root@mysql ~]# service mysqld start

Starting MySQL                                             [  OK  ]

[root@mysql ~]# mysql

mysql> select * from data.info;

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

| sid | name  | age  |

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

|   1 | tom   |   25 |

|   2 | jerry |   26 |

|   3 | jim   |   40 |

|   4 | ccr   |   34 |

|   5 | dss   |   21 |

|   6 | safe  |   44 |

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

6 rows in set (0.00 sec)

进行LVM快照后,我们新插入的数据没有恢复过来

5. 利用二进制文件基于时间点恢复(增量备份的恢复)1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17mysql> source /root/bak.sql

#这是第2步从二进制文件中导出的脚本

mysql> select * from data.info;

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

| sid | name  | age  |

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

|   1 | tom   |   25 |

|   2 | jerry |   26 |

|   3 | jim   |   40 |

|   4 | ccr   |   34 |

|   5 | dss   |   21 |

|   6 | safe  |   44 |

|   7 | seven |   30 |

|   8 | eight |   49 |

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

8 rows in set (0.00 sec)

#新插入的2行数据也恢复了

这样,完全备份+增量备份的备份和恢复就完成了。

附:

逻辑备份工具mysqldump介绍

-u                        #指定用户名

-p                        #指定用户密码

-h                        #指定主机地址

-A|--all-databases        #备份所有数据库

--databases               #备份指定数据库

--single-transcation      #基于此项可以实现对InnoDB表做热备份

--lock-a--flush-logs      #备份之前刷新日志

--lock-all-tables         #执行备份时为所有表请求加锁

-E|--events               #备份事件调度器代码

-R|--routines             #备份存储过程和存储函数

--triggers                #备份触发器

--master-data=2           #该选项将会记录binlog的日志位置与文件名并追加到文件中,如果为1将会输出CHANGE1

2

3

4

5

6

7#导出全库

mysqldump  -u root  -p  --all-databases > dump.sql

#导出单个库,或者单个库中的某个表

mysqldump --u root -p data > dump.sql

mysqldump --u root -p data info > dump.sql

#导出多个数据库

mysqldump --u root -p  --databases data mysql > dump.sql

7cb3f6724ddd11a843c617f99efacfae.png

mysql数据库64位是最新的mysql数据库版本了,同时也是支持中文的版本,在现在这个版本是可以支持win10的系统以及win8.1的版本,有需要体验下这个mysql数据库64位怎么样的,可以先来本站免费的下载试试效果怎么样!

语言:中文

大小:350.9M

类型:数据库

更新:2016-12-13

推荐等级:6a4684d474ee0db840b1e0721202c606.png

厂商:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值