使用LVM快照进行数据库备份

使用mysqldump备份时,如果存储引擎为MyISAM,则只能实现温备份,并需使用选项--lock-all-tables锁定所有表。如果存储引擎为InnoDB,则加上--single-transaction选项,可以实现热备。
使用mysqldump进行逻辑备份,还存在如下问题:
浮点数据丢失精度;

备份出的数据更占用空间;不过可压缩后以大大节省空间

不适合对大数据库(如一个库超过10G)做完全备份

另外对InnoDB而言,需要使用mysql> FLUSH TABLES WITH READ LOCK;刷新并锁定表时,可能需要花大量的时间

对InnoDB而言,即使锁定了,也不一定以为着没有数据的写入,此时事务日志可能还在同步到永久存储

一、备份单表数据另一个手段:
1.1 基本语法:
备份:
SELECT * INTO OUTFILE ‘/path/to/somefile.txt‘ FROM tb_name [WHERE clause];
还原:
LOAD DATA INFILE ‘/path/to/somefile.txt‘ INTO TABLE tb_name;
1.2 示例:
备份表:
mysql> SELECT * INTO OUTFILE ‘/tmp/tutors.txt‘ FROM tutors; 
Query OK, 8 rows affected (0.31 sec)
[[email protected] ~]# cat /tmp/tutors.txt 
2 HuangYaoshi M 63 
3 Miejueshitai F 72 
4 OuYangfeng M 76 
6 YuCanghai M 56 
7 Jinlunfawang M 67 
8 HuYidao M 42 
9 NingZhongze F 49 
14 HuFei M 31
注意:导出的仅仅是数据,表结构并不会被导出。
创建用于恢复数据的空表:
mysql> CREATE TABLE test_tb LIKE tutors; 
Query OK, 0 rows affected (1.28 sec)
还原数据到新表:
mysql> LOAD DATA INFILE ‘/tmp/tutors.txt‘ INTO TABLE test_tb; 
Query OK, 8 rows affected (0.17 sec) 
Records: 8 Deleted: 0 Skipped: 0 Warnings: 0

2.2.2 通过另一个终端,保存二进制日志文件及相关位置信息;
$ mysql -uroot -p -e ‘SHOW MASTER STATUS\G‘ > /path/to/master-`date +%F`.info

查看当前日志:
mysql> show master status; 
+----------------------+----------+--------------+------------------+-------------------+ 
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | 
+----------------------+----------+--------------+------------------+-------------------+ 
| mysqld-binlog.000007 | 650 | | | | 
+----------------------+----------+--------------+------------------+-------------------+ 
1 row in set (0.00 sec)
备份增量日志:需要注意的是,由于我使用了[FLUSH LOGS]滚动日志,因此理论上使用lvm快照卷备份后有两个日志的增量数据需要备份,即:mysqld-binlog.000006和mysqld-binlog.000007
查看备份开始时的日志位置:
[[email protected] ~]# cat /data/backup/master-2013-09-23.info 
*************************** 1. row *************************** 
File: mysqld-binlog.000006 
Position: 120
Binlog_Do_DB: 
Binlog_Ignore_DB: 
Executed_Gtid_Set:
导出日志:
[[email protected] ~]# mysqlbinlog --start-position=120 /data/mysql/mysqld-binlog.000006 >/data/backup/06.sql
[[email protected] ~]# mysqlbinlog /data/mysql/mysqld-binlog.000007 >/data/backup/07.sql

更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2013-10/91062p2.htm

相关阅读:

mysqldump和LVM逻辑卷快照 http://www.linuxidc.com/Linux/2013-09/90382.htm

LVM的综合性介绍及实现 http://www.linuxidc.com/Linux/2013-03/81482.htm

MySQL高性能备份方案解决数据不间断访问(LVM快照方式备份) http://www.linuxidc.com/Linux/2013-07/87887.htm

LVM上实施ASM  http://www.linuxidc.com/Linux/2012-11/73475.htm

2.3 恢复测试:
2.3.1 模拟损坏:
我这里还是采用直接删除数据文件目录:

此时已经无法正常停止mysqld了:
[[email protected] data]# service mysqld stop 
ERROR! MySQL server PID file could not be found!
[[email protected] data]# killall mysqld
2.3.2 恢复完全备份:直接cp
[[email protected] data]# cp -R /data/backup/full-bak-2013-09-23/mysql /data/ 
cp:是否覆盖"/data/mysql/localhost.localdomain.err"? yes
[[email protected] mysql]# chown mysql.mysql -R /data/mysql
2.3.3 启动服务器:
[[email protected] data]# service mysqld start 
Starting MySQL SUCCESS!
2.3.4 导入增量备份:
[[email protected] ~]# mysql -uroot -p </data/backup/06.sql
[[email protected] ~]# mysql -uroot -p </data/backup/07.sql
2.3.5 使用LVM快照卷备份注意事项:如果需要备份单一库,则InnoDB需设置为独立表空间
设置每个表独立使用一个表空间 
[[email protected] ~]# echo "innodb_file_per_table = 1" >>/etc/my.cnf 
重启生效: 
[[email protected] ~]# service mysqld restart

使用LVM快照进行数据库备份,布布扣,bubuko.com

时间: 2024-10-20 18:00:21

使用LVM快照进行数据库备份的相关文章

实现LVM逻辑卷数据库备份还原,二进制日志文件分离存放

首先需要做到的是就是数据库文件,以及二进制日志文件全部放在单独的逻辑卷存储. 实现LVM逻辑卷,数据,二进制日志文件分离存放 一,创建逻辑卷步骤 (1),创建新分区 1,查看分区情况看看还剩多少空间 [[email protected] backup]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 50G 0 part /

MariaDB数据库备份恢复之(二): 基于LVM逻辑卷快照实现数据库的几乎热备

数据库物理备份就是拷贝数据库数据文件,但是需要考虑的问题也有: 需要确保数据文件的时间一致性? 1.冷备:停止数据库,实现物理备份; 但是一个真正生产数据库不能实现离线操作,那我们就可以通过数据库的主从复制实现: 主数据库服务器的数据同步到从服务器,而我们在主从复制中从服务器停止数据库是不会影响业务的,就能够实现物理备份:备份完成从服务器上线后会自动从主服务器同步数据:这是一种理想的备份方案: 2.第二种方法是基于LVM2的快照实现数据库的备份,可以实现几乎热备, 前提数据库数据必须放置在物理卷

烂泥:KVM利用LVM快照备份与恢复虚拟机

本文首发于烂泥行天下. 最近一段时间一直在学习有关LVM逻辑卷方面的知识,前几篇文章介绍了有关LVM的逻辑卷的基本相关知识,包括逻辑卷及卷组的扩容与缩小.今天我们再来介绍LVM快照的功能. 注意:本次实验是与虚拟化KVM进行集成测试,通过KVM虚拟机是否正常启动来检查LVM的备份与恢复. 有关LVM的快照功能,我们可以通过lvcreate –help命令,查看帮助文档.如下: 先来查看系统中逻辑卷,使用lvs命令.如下: 通过上图,我们可以看到目前系统中只有一个逻辑卷/dev/vg1/vhost

烂泥:LVM学习之KVM利用LVM快照备份与恢复虚拟机

本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近一段时间一直在学习有关LVM逻辑卷方面的知识,前几篇文章介绍了有关LVM的逻辑卷的基本相关知识,包括逻辑卷及卷组的扩容与缩小.今天我们再来介绍LVM快照的功能. 注意:本次实验是与虚拟化KVM进行集成测试,通过KVM虚拟机是否正常启动来检查LVM的备份与恢复. 有关LVM的快照功能,我们可以通过lvcreate –help命令,查看帮助文档.如下: 先来查看系统中逻辑卷,使用lvs命令.如下: 通过上图,我们可以看到目前系统中只有一个逻辑卷/d

lvm快照备份mysql

快照备份原理(从其他博客看的): 原理:通过lvm快照给lvm真身拍个照片,当lvm真身发送改变时,lvm快照把lvm真身改变之前的内容存放在快照上,这样在lvm快照有效的这段时间内,我们看到的lvm快照上的内容始终是lvm真身在创建lvm快照时内容,通过备份lvm快照即可达到在线备份lvm真身的目的.需要注意的是,当lvm快照比lvm真身小时,若lvm真身发生的改变大于lvm快照,则lvm快照将变得无法读取而失效; 若lvm快照大于等于lvm真身,则不会发生前面的情况.当一个snapshot创

MySQL基于LVM快照的备份恢复

目录 1.数据库全备份 2.准备LVM卷 3.数据恢复到LVM卷 4.基于LVM快照备份数据 5.数据灾难恢复 6.总结 写在前面: 测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷,此次要演示基于LVM的数据备份和恢复,所以就把mysql的数据先迁移到LVM上再做快照卷的备份. 如果innodb表基于LVM来做备份,那事务日志文件和数据文件要在同一个LVM的逻辑卷上,因为在同一时刻我们只能对一个逻辑卷做快照,如果事务日志与数据文件不在同一卷上,那做快照后会导致事务

lvm-snapshot:基于LVM快照的备份之准备工作

选择lvm逻辑卷存储数据库数据目录的2大理由 (1) 一般来说,我们会将数据库的数据目录放在lvm逻辑卷上,因为数据库的数据增长速度可能会超出我们的预期 ,这样在将来即便是数据增长很快,我们也不必担心,因为lvm可以实现在线扩容 (2) 我们可以对数据目录做基于lvm快照的备份 1.创建用于存储数据目录lvm设备 1.1 创建一个新分区,并修改分区类型 # echo -e 'n\np\n1\n\n+10G\nw\n'|fdisk /dev/sdb # echo -e 't\n8e\np\nw\n

lvm-snapshot:基于LVM快照的备份

续 lvm-snapshot:基于LVM快照的备份之准备工作 Attention,Please! 重头戏开始啦 3.基于LVM快照的备份 (1)事务日志跟数据文件必须在同一个卷上: (2)创建快照卷之前,要请求MySQL的全局锁:在快照创建完成之后释放锁: (3)请求全局锁完成之后,做一次日志滚动:做二进制日志文件及位置标记(手动进行): 备份步骤: 3.1 请求全局锁,并滚动日志 MariaDB [hellodb]> FLUSH TABLES WITH READ LOCK; MariaDB [

mysql之lvm快照方式备份恢复

好像一般大家都不用这个吧,这里也仅是当做记录吧. 其实lvm快照不管是什么存储引擎都可以做到接近热备,看起来也还不错的样子.不过却也需要一些所必须的条件. 如:LVM卷,而且也有足够的空闲空间来做快照,并且事务日志也要与数据文件在一起. 好啦,废话不多说,我们先看看怎么用吧. 大体步骤: 1.全局锁. 2.滚动二进制日志,并做好记录 3.创建lvm快照. 4.释放锁. 5.从快照盘手动复制数据. 6.卸载并移除快照盘. 来吧. 先来看看lvm的情况: [[email protected] bac