使用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)
[root@localhost ~]# 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
查看备份开始时的日志位置:
[root@localhost ~]# 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:
导出日志:
[root@localhost ~]# mysqlbinlog --start-position=120 /data/mysql/mysqld-binlog.000006 >/data/backup/06.sql
[root@localhost ~]# 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了:
[root@localhost data]# service mysqld stop
ERROR! MySQL server PID file could not be found!
[root@localhost data]# killall mysqld
2.3.2 恢复完全备份:直接cp
[root@localhost data]# cp -R /data/backup/full-bak-2013-09-23/mysql /data/
cp:是否覆盖"/data/mysql/localhost.localdomain.err"? yes
[root@localhost mysql]# chown mysql.mysql -R /data/mysql
2.3.3 启动服务器:
[root@localhost data]# service mysqld start
Starting MySQL SUCCESS!
2.3.4 导入增量备份:
[root@localhost ~]# mysql -uroot -p </data/backup/06.sql
[root@localhost ~]# mysql -uroot -p </data/backup/07.sql
2.3.5 使用LVM快照卷备份注意事项:如果需要备份单一库,则InnoDB需设置为独立表空间
设置每个表独立使用一个表空间
[root@localhost ~]# echo "innodb_file_per_table = 1" >>/etc/my.cnf
重启生效:
[root@localhost ~]# service mysqld restart
使用LVM快照进行数据库备份的更多相关文章
- Mysql数据库之备份还原(mysqldump,LVM快照,select备份,xtrabackup)
备份类型: 热备份:读写不受影响 温备份:仅可执行读备份 冷备份:离线备份,读写均不能执行,关机备份 物理备份和逻辑备份 物理备份:复制数据文件,速度快. 逻辑备份:将数据导出之文本文件中,必要时候, ...
- MySQL数据物理备份之lvm快照
使用lvm快照实现物理备份 优点: 几乎是热备(创建快照前把表上锁,创建完后立即释放) 支持所有存储引擎 备份速度快 无需使用昂贵的商业软件(它是操作系统级别的) 缺点: 可能需要跨部门协调(使用操作 ...
- 【第七章】MySQL数据库备份-物理备份
一.数据库备份 备份的目的: 备份: 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方. 冗余: 数据有多份冗余,但不等备份,只能防止机械故障还来的数据丢失,例如主备 ...
- 烂泥:LVM学习之KVM利用LVM快照备份与恢复虚拟机
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近一段时间一直在学习有关LVM逻辑卷方面的知识,前几篇文章介绍了有关LVM的逻辑卷的基本相关知识,包括逻辑卷及卷组的扩容与缩小.今天我们再来介绍LVM ...
- lvm快照备份数据库(Mysql5.7)
备份的目的 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方. 备份的分类 以操作过程中服务的可用性分: 冷备份:cold backup mysql服务关闭,mysq ...
- Mysql数据库备份—-通过LVM快照实现备份还原
一.实验环境 一台测试机:A(172.18.30.1) 操作系统:Centos7 操作对象数据库版本:mariadb-10.2 二.实现目的 从A机器(172.18.30.1)简单搭建数据库,创建测试 ...
- mysql数据库基于LVM快照的备份
lvm-snapshot: 基于LVM快照的备份 1.事务日志跟数据文件必须在同一个卷上 2.创建快照卷之前,要请求mysql的全局锁,在快照创建完成之后释放锁 3 ...
- mysql 基于lvm快照的备份
1.查看磁盘数 ls /dev/ | grep sd 2.快照备份 pvcreate /dev/sdb #制作成物理卷vgcreate testvg /dev/sdblvcreate -L200M - ...
- MySQL基于LVM快照的备份恢复(临时)
目录1.数据库全备份2.准备LVM卷3.数据恢复到LVM卷4.基于LVM快照备份数据5.数据灾难恢复6.总结 写在前面:测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷, ...
随机推荐
- C#与Java覆盖问题
C#继承类中如含有相同的方法,避免冲突使用new关键字.在不同对象中分别对应该方法.若使用override关键字则,基类中的方法被覆盖. 如需调用非覆盖的则使用base关键字. Java中的继承类方法 ...
- hadoop报错WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
19/06/14 10:44:58 WARN common.Util: Path /opt/hadoopdata/hdfs/name should be specified as a URI in c ...
- 20191112 Spring Boot官方文档学习(4.3)
4.3.Profiles Spring Profiles提供了一种隔离部分应用程序配置并使之仅在某些环境中可用的方法.任何@Component,@Configuration或@Configuratio ...
- 使用app.config中的数据对数据库链接信息初始化
看到别人数据库信息都是在app.config里面设置的,今天来尝试了一下,报了 "System.Configuration.ConfigurationSettings.AppSettings ...
- 第五周实验报告&学习总结
实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is a test of java".按要求执 ...
- 第四周总结 and 实验二
课堂总结 一.课堂笔记总览 1.String类两种实例方法区别 String str1 = "hello";String str2 = "hello"; ...
- Java第四周总结+实验报告
实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握用类作为类型声明变量和方法返回值: 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性 ...
- 在excel中如何计算两个时间之间的差[转]
因为时间是由序列号所代表的,用户可以用较晚的时间减去较早的时间以得到间隔.例如,单元格A3含有5:30,单元格B3含有14:00,下面的公式返回8:30(间隔8小时30分). =B3-A3 然而,如果 ...
- 图——图的Dijkstra法最短路径实现
1,最短路径的概念: 1,从有向图中某一顶点(起始顶点)到达另一顶点(终止顶点)的路径中,其权值之和最小的路径: 2,问题的提法: 1,给定一个带权有向图 G 与起始顶点 v,求从 v 到 G 中其它 ...
- centos7 安装redis 出现cc: command not found错误解决
安装过程 1. 下载并解压 cd /root/software wget http://download.redis.io/releases/redis-3.2.4.tar.gz tar -zxvf ...