使用LVM快照实现对mysql数据库的备份

数据库备份有多种方法,今天介绍下使用lvm的快照功能完成对mysql数据库的备份。lvm在对数据进行备份的时候可以提供近乎热备的方式,它的工作机制是这样的:在某一时刻对数据库所在目录创建快照卷,由此,通过快照卷访问的数据就是保存快照那一刻时的数据,而后将快照卷中的数据拷贝至其他目录即可,之所以称他为近乎热备是因为在创建快照的时候需要对数据库施加读锁,在这期间数据库不能进行写操作。

使用lvm备份数据库的前提

 1,数据文件必须在lv中

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

3, 数据文件和事务日志要在同一个逻辑卷上

这里以数据库mytest为例实现备份

mysql> use mytest;
mysql> show tables;   
+------------------+
| Tables_in_mytest |
+------------------+
| students         | 
+------------------+
1 row in set (0.00 sec)
mysql> select * from students;
+----+-------+-----+--------+
| id | Name  | Age | Gender |
+----+-------+-----+--------+
|  1 | Tom   |  20 | M      | 
|  2 | Jerry |  23 | F      | 
|  3 | Sara  |  19 | F      | 
+----+-------+-----+--------+
3 rows in set (0.09 sec)

操作步骤:

1,打开mysql会话,施加读锁,滚动二进制日志

mysql> FLUSH TABLES WITH READ LOCK;
mysql> FLUSH LOGS;

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

# mysql -uroot -p -e "SHOW MASTER STATUS\G" > /backup/master-`date +%F`.info

3.创建快照卷

# lvcreate -L 30M -s -p r -n mydata-snap /dev/vg_root/mydata

4,释放锁

mysql> UNLOCK TABLES;

5,挂载快照卷,开始备份

# mkdir /mnt/snap
# mount /dev/vg_root/mydata-snap /mnt/snap -o ro
# mkdir /backup/full-backup-`date +%F`
# cp -a /mnt/snap/data/* /backup/full-backup-2015-09-20/
# cd /backup/full-backup-2015-09-20/
# rm -f mysql-bin.*   # 完全备份后,二进制日志可以删除

6,卸载快照卷并删除

# cd 
# umount /mnt/snap
# lvremove --force /dev/vg_root/mydata-snap

7,增量备份二进制日志

 # mysqlbinlog  --start-datetime="2015-09-20 11:34:57" mysql-bin.000026 mysql-bin.000027 > /backup/increment-`date +%F-%H-%M-%S`.sql

至此,基于lvm快照备份数据库已完成

时间: 2025-01-04 22:32:37

使用LVM快照实现对mysql数据库的备份的相关文章

利用shell脚本实现对mysql数据库的备份

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #!/bin/bash     #保存备份个数  number=3  #备份保存路径  backup_dir=/root/mysqlbackup  #日期  dd=`date +%Y%m%d`  #备份工具  tool=mysqldump  #用户名  username=mracale  #密码  pass

Windows下Java程序实现对Mysql数据库的插入,删除,修改和查询

运行环境:Windows7,Eclipse,MySql,JDK1.7,mysql-connector-java-5.1.17-bin.jar 1 //import java.io.*; 2 import java.util.*; 3 import java.sql.*; 4 5 /** 6 * 7 * @date 2014-05-20 8 * @author asif 9 * @作用 java实现对mysql数据库的增减删查 10 * @bug 插入,删除,更新的时候异常停止 11 * 12 *

shell实现对mysql数据库的增、删、改、查操作

shell实现对mysql数据库的增.删.改.查操作 #!/bin/bash #数据库信息 HOSTNAME="192.168.111.84" PORT="3306" USERNAME="root" PASSWORD="" DBNAME="test_db_test" TABLENAME="test_table_test" #也可以写 HOSTNAME="localhost&qu

MySQL数据库-完全备份及恢复

MySQL数据库-完全备份及恢复 数据库备份的分类 物理角度: 冷备份:也称脱机备份,特点:关掉数据库再备份 热备份:也称联机备份,特点:开启数据库再备份 温备份:数据库只有可读权限的状态下备份 逻辑角度: 对数据库的对象的备份,例如数据表,及数据表中的一些sql语句等 备份策略角度: 完全备份:每次对数据进行整体的备份 差异备份:在第一次完整备份a数据后,以后的每次的备份是a+b,b就是针对于a数据发生变化的数据,称之为'差异数据'.缺点:b的数据内存会越来越大b+=b,导致数据恢复缓慢.恢复

Windows Server服务器端MySQL数据库自动备份

1.给root账户授权所有sql权限 grant all privileges on *.* to [email protected]"%" identified by "."; flush privileges; 2.建立bat批处理文件 @echo off set path=%path%;D:\Program Files\MySQL\MySQL Server 5.5\bin set y=%date:~0,4% set m=%date:~5,2% set d=%d

mysqldump常用于MySQL数据库逻辑备份

mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文件(转储文件)中,比如: mysqldump -uroot -p123 test > test.dump 生成的test.dump文件中包含建表语句(生成数据库结构哦)和插入数据的insert语句. B. --opt 如果加上--opt参数则生成的du

[知了堂学习笔记]_Java代码实现MySQL数据库的备份与还原

通常在MySQL数据库的备份和恢复的时候,多是采用在cmd中执行mysql命令来实现. 例如: mysqldump -h127.0.0.1 -uroot -ppass test > d:/test.sql ---备份test数据库到 D 盘 mysql -h127.0.0.1 -uroot -ppass test< test.sql ---将D备份的数据库脚本,恢复到数据库中 更多命令参看:http://www.cnblogs.com/xcxc/archive/2013/01/30/28828

mysql数据库定时备份

操作步骤:1.将脚本放到任意位置下,不容易被误删即可2.定时任务,一周执行一次脚本 脚本如下:#!bin/bash backuppath=/data/mysql/backup date=$(date +%Y%m%d%H%M) SQLuser=root SQLpwd=password mysqldump=/usr/local/mysql/bin/mysqldump mysql=/usr/local/mysql/bin/mysql HIS_Date=`date -d $(date -d "-30 d

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: import pymysql # 导入py模块 conn= pymysql.connect("数据库ip","用户","密码","数据库" ) # 打开数据库连接 cursor.execute("SELECT VERSI