首页 > 技术文章 > 基于LVM的MySQL备份

jdxupt 2016-05-06 15:19 原文

LVM:使用逻辑卷的快照功能备份,几乎热备

前提:

1.数据文件要在逻辑卷上;

2.此逻辑卷所在组必须有足够空间使用快照卷;

3.数据文件和事物日志要在同一个卷上。

 

步骤:

1.打开会话,施加读锁,锁定所有表

mysql>flush tables  with read lock;

mysql>flush logs;

2.通过另一个终端,保存二进制日志文件及相关位置信息

$mysql -uroot -p -e ‘show master status\G;’ > /path/to/master.info

3.创建快照卷

#lvcreate -L 50M -s -p r -n lv_name  /path/to/source_lv

-s|--snapshot:指定创建快照

[-p|--permission {r|rw}]:设定创建的快照具有被读或读写特性

-n:指定快照名字

4.释放锁

mysql>unlock tables;

5.挂载快照卷,备份

$mount  /path/to/lv_name  /backup/fullbak

$cp -a /mysql/*  /backup

6.删除快照卷

7.增量备份二进制日志

$cat  /path/to/master.info;查看当前二进制日志位置

$mysqlbinlog --start-position=107 mysql-bin.000005 >/backup/bak.sql

当一个事务跨越不同的二进制文件时,开启通过时间备份--start-datetime

$mysqlbinlog --start-datetime=’2016-05-06 14:55:34’ mysql-bin.00005 mysql-bin.000006 > /backup/bak-`date +%F-%H-%M-%S`.sql

 

还原:

$cp -a  /backup/fullbak  /mysql 注意mysql目录下的文件属主是mysql

$/etc/init.d/mysqld restart

mysql>set sql_log_bin=0;关闭二进制日志

mysql>source /backup/bak-`date +%F-%H-%M-%S`.sql;还原数据

mysql>set sql_log_bin=1;

推荐阅读