MySQL[2] 快照方式备份lvm

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

MySQL的第一款备份工具mysqldump,我们在上篇文章中已经和大家聊过,如果大家还有疑惑,请点击mysqldump

MySQL的第二款备份工具lvm快照,那么今天我们就聊聊它lvm快照卷温备


mysqldump能够实现对InnoDB存储引擎实现热备,但是却无法实现对MyISAM引擎进行热备;

而今天将要和大家介绍lvm能够实现对MyISAM引擎实现几乎热备


使用lvm快照进行mysql的备份时,需要满足以下条件:

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

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

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


实现lvm快照进行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
1 、打开会话,施加读锁,锁定所有表
mysql> FLUSH TABLES WITH READ LOCK;
mysql> FLUSH LOGS;
 
2 、通过另外一个终端,保存二进制日志文件及相关位置信息;
# mysql -e 'show mater status' > /proc/master.info
 
3 、创建快照卷
# lvcreate -L # -s -p r -n LV_NAME /path/to/source_lv
 
4 、释放锁
mysql> UNLOCK TABLES;
 
5 、挂在快照卷、备份
# mount
# cp -a
 
6 、删除快照卷和无用数据
# lvremove --force LV_NAME
# rm -rf mysql-bin.*
 
7 、增量备份二进制日志
# cp
 
8 、故障发生、恢复数据
# source


mysql数据库lvm快照备份

1、打开会话,施加读锁,锁定所有表,并刷新日志;

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

2、通过另一个终端,保存二进制日志文件及湘椴信息;

1
2
# mysql -uroot -p -e 'show master status\G;' > /backup/master-`date +%F`.info     
# cat /backup/master-`date +%F`.info

3、创建快照卷

1
# lvcreate -L 3G -s -p r -n mydata_snap /dev/myvg/mydata

4、释放锁

1
mysql> UNLOCK TABLES;

5、挂在快照卷、备份

1
2
3
4
5
# mkdir /mnt/mydata_snap
# mount /dev/myvg/mydata_snap /mnt/mydata_snap/ -o ro
     
# mkdir /backup/full-backup-`date +%F`
# cp -a /mnt/mydata_snap/* /backup/full-backup- 2015 - 03 - 05 /

6、删除快照卷和无用数据

1
2
3
4
5
6
删除快照卷
# umount /mnt/mydata_snap/
# lvremove --force /dev/myvg/mydata_snap 
 
由于这里备份的日志文件爱你是无用的,因此可以删除
# rm -rf /backup/full-backup-2015-03-05/data/mysql-bin.*

7、增量备份二进制日志

(1)首先在mysql数据库中做一些写入操作:

1
2
3
4
5
6
7
8
9
10
11
mysql> FLUSH LOGS;
mysql> USE mydb;
mysql> INSERT INTO tutor(Tname) VALUES( 'it' );
mysql> INSERT INTO tutor(Tname) VALUES( '3dmax' );
mysql> show master status;     #日志文件变化、数据偏移位发生变化
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 |      584 |              |                  |
+------------------+----------+--------------+------------------+
1 row  in  set  (0.00 sec)   

(2)备份增量日志:需要注意的是,由于我使用了FLUSH LOGS滚动日志,因此理论上是引用lvm快照卷备份后有两个日志的增量数据需要备份即mysql-bin.000004和mysql-bin.000005


(3)查看备份开始时的日志位置:

1
2
3
4
5
6
[root@localhost ~]# cat /backup/master-2015-03-05.info 
*************************** 1. row ***************************
             File: mysql-bin.000004
         Position: 107
     Binlog_Do_DB: 
Binlog_Ignore_DB: 

(4)导出日志:

1
2
# mysqlbinlog --start-position=107 /mydata/data/mysql-bin.000004 > /backup/04.sql
# mysqlbinlog /mydata/data/mysql-bin.000005 > /backup/05.sql

8、恢复数据库

1)模拟损坏:

我这里还是采用这直接删除数据文件和目录的方式:

1
# rm -rf /mydata/data*

2)恢复完全备份:直接cp

1
# cp -a /backup/full-backup-2015-03-05/data/* /mydata/data/

3)启动mysql服务

1
# service mysqld start

4)导入增量备份

1
2
# mysql -uroot -p < /backup/04.sql
# mysql -uroot -p < /backup/05.sql

5)使用lvm快照卷备份注意事项:如果需要备份单一库,则InnoDB需设置为独立表空间

1
2
3
4
5
6
7
8
设置每个表独立使用一个表空间
mysql> SHOW GLOBAL VARIABLES LIKE  '%innodb_file_per_table%' ;
+---------------- -------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row  in  set  (0.00 sec)


  • 个人愚见:

  • 这种热备工作我用的不是很多,可能是公司的环境不同吧!我会在后续章节中和大家介绍第三款开源备份工具xtrabackup,这款备份工具个人感觉是非常不错,在性能方面远超mysqldump,那么我们下回聊。

  • 下几篇mysql文章的方向:






     本文转自zys467754239 51CTO博客,原文链接:http://blog.51cto.com/467754239/1621252 ,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
348
分享
相关文章
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
从 MySQL 到时序数据库 TDengine:Zendure 如何实现高效储能数据管理?
TDengine 助力广州疆海科技有限公司高效完成储能业务的数据分析任务,轻松应对海量功率、电能及输入输出数据的实时统计与分析,并以接近 1 : 20 的数据文件压缩率大幅降低存储成本。此外,taosX 强大的 transform 功能帮助用户完成原始数据的清洗和结构优化,而其零代码迁移能力更实现了历史数据从 TDengine OSS 与 MySQL 到 TDengine 企业版的平滑迁移,全面提升了企业的数据管理效率。本文将详细解读这一实践案例。
33 0
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
166 82
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等