阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

493次阅读
没有评论

共计 6285 个字符,预计需要花费 16 分钟才能阅读完成。

续 lvm-snapshot:基于 LVM 快照的备份之准备工作  http://www.linuxidc.com/Linux/2014-05/101308.htm

Attention,Please! 重头戏开始啦

3. 基于 LVM 快照的备份

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

(1)事务日志跟数据文件必须在同一个卷上;

(2)创建快照卷之前,要请求 MySQL 的全局锁;在快照创建完成之后释放锁;

(3)请求全局锁完成之后,做一次日志滚动;做二进制日志文件及位置标记(手动进行);

————————————– 分割线 ————————————–

MySQL 管理之基于 LVM 实现几乎热备 http://www.linuxidc.com/Linux/2014-04/99672.htm

Ubuntu 12.04 KVM 之 VM 动态迁移 - 基于 LVM http://www.linuxidc.com/Linux/2014-04/99894.htm

RHEL5.9 LVM 的使用 http://www.linuxidc.com/Linux/2014-02/97268.htm

Linux 系统中对逻辑卷 (LVM) 的实现 http://www.linuxidc.com/Linux/2014-01/95004.htm

LVM 磁盘管理之扩展与缩小 LV http://www.linuxidc.com/Linux/2013-03/81262.htm

————————————– 分割线 ————————————–

备份步骤:

3.1 请求全局锁,并滚动日志

MariaDB [hellodb]> FLUSH TABLES WITH READ LOCK;

MariaDB [hellodb]> FLUSH LOGS;

 

3.2 查看并记录二进制日志文件及位置标记(手动进行);

MariaDB [hellodb]> SHOW MASTER STATUS;

+——————+———-+————–+——————+

| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000005 |      365 |              |                  |

+——————+———-+————–+——————+

1 row in set (0.00 sec)

此时不要退出 Mysql,一旦退出,就会我们手动施加的锁,就会自动释放

 

记录二进制日志文件及位置标记至指定文件

# mkdir /backups

# mysql -e ‘show master status’ >/backups/binlog.pos

 

3.3 创建快照卷(-L,指定快照卷大小;-n,指定快照卷名称;-p,指定快照卷的属性)

# lvcreate -L 100M -s -n mydata-snap -p r /dev/myvg/mydata

查看 lvm 卷使用使用情况

[root@www ~]# lvs

  LV          VG  Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert

  mydata      myvg owi-aos–  10.00g                                           

 mydata-snap myvg sri-a-s– 100.00m      mydata  0.01                         

  root        vg0  -wi-ao—  20.00g                                           

 swap        vg0  -wi-ao—  2.00g                                           

 usr        vg0  -wi-ao—  10.00g                                           

 var        vg0  -wi-ao—  20.00g 

 

3.4 释放全局锁

 MariaDB [hellodb]> UNLOCK TABLES;

 注:快照创建完毕,可在之前尚未退出 MariaDB 的终端执行解锁操作

 

3.5 挂载快照卷并备份

(1)将快照卷以只读方式挂载至 /mnt 目录

[root@www ~]# mount -o ro /dev/myvg/mydata-snap /mnt/

(2)查看快照卷挂载是否成功(即查看挂载点下是否有我们之前备份的数据)

[root@www ~]# cd /mnt/

[root@www mnt]# ls

binlogs  data

[root@www mnt]# cd data/

[root@www data]# ls

aria_log.00000001  ibdata1      multi-master.info  test

aria_log_control  ib_logfile0  mysql              www.linuxidc.com.err

hellodb            ib_logfile1  performance_schema  www.linuxidc.com.pid

细心的你应该注意到了,前面我们已经释放了全局锁,所以其他的用户是可以执行写入的操作了,因此

此处我们模拟的是,在我们完整备份以后,又有用户执行了写入操作实验环境,然而不幸的是,我们在此处导入数据没多久,就反了些很 ”2″ 的错误:一不小心关掉了数据库服务,并且误删除了数据 /mydata/data/ 下的所有数据

 

3.6 导入新数据,模拟用户的写操作

MariaDB [mydb]> source /root/mydb.sql;

3.7 备份快照中的数据至指定位置

# cp -a /mnt/data/ /backups/data-$(date +%F)

3.8 备份完成之后,删除快照卷

# umount /mnt/  卸载快照卷

# lvremove /dev/myvg/mydata-snap  移除快照卷

恢复:二进制日志一定要保存好,否则很难做到即时点还原

 

模拟数据库损坏

4. 不小心停掉了数据库,并且删除了数据目录下的所有文件

[root@www ~]# service mysqld stop

Shutting down MySQL…                                    [OK]

[root@www ~]# rm -rf /mydata/data/*

还好二进制日志尚在,不然没法做即时点还原(二进制日志文件很重要,要常备份)

[root@www ~]# ls /mydata/binlogs/

mysql-bin.000001  mysql-bin.000003  mysql-bin.000005  mysql-bin.state

mysql-bin.000002  mysql-bin.000004  mysql-bin.index

 

数据目录中的数据被误删除后,数据目录空空如也

[root@www ~]# ls /mydata/data/

 

还原数据目录下的所有数据,- a 保持用户属主属组等属性信息不变

[root@www ~]# cp -a /backups/data-2014-04-12/*  /mydata/data/

[root@www ~]# cd /mydata/data/

 

查看数据目录下的数据的属主属组是否都是 mysql,若不是,就自行修改

[root@www data]# ll 

total 110636

-rw-rw—- 1 mysql mysql    16384 Apr 12 22:33 aria_log.00000001

-rw-rw—- 1 mysql mysql      52 Apr 12 22:33 aria_log_control

drwx—— 2 mysql mysql    4096 Apr 12 22:38 hellodb

-rw-rw—- 1 mysql mysql 12582912 Apr 12 22:34 ibdata1

-rw-rw—- 1 mysql mysql 50331648 Apr 12 22:34 ib_logfile0

-rw-rw—- 1 mysql mysql 50331648 Apr 12 22:32 ib_logfile1

-rw-rw—- 1 mysql mysql        0 Apr 12 22:34 multi-master.info

drwx—— 2 mysql mysql    4096 Apr 12 22:33 mysql

drwx—— 2 mysql mysql    4096 Apr 12 22:33 performance_schema

drwx—— 2 mysql mysql    4096 Apr 12 22:25 test

-rw-r—– 1 mysql root      3660 Apr 12 22:34 www.linuxidc.com.err

-rw-rw—- 1 mysql mysql        5 Apr 12 22:34 www.linuxidc.com.pid

 

确认数据目录权限正确的情况下,就可以启动 mysql 了

[root@www data]# service mysqld start

 

在数据目录下查看数据文件是否都已恢复

[root@www data]# ls

aria_log.00000001  ibdata1      multi-master.info  test

aria_log_control  ib_logfile0  mysql              www.linuxidc.com.err

hellodb            ib_logfile1  performance_schema  www.linuxidc.com.pid

在数据中查看数据文件是否都已恢复

MariaDB [(none)]> show databases;

+——————–+

| Database          |

+——————–+

| hellodb            |

| information_schema |

| mysql              |

| performance_schema |

| test              |

+——————–+

5 rows in set (0.01 sec)

 

此时,完整备份已成功恢复,但是我们模拟用户写操作时倒入的 mydb.sql 文件,生成的 mydb 数据库,及其中数据表还没恢复

由于该写入操作出现在我们完整备份之后,所以我们的完整备份中没有这个数据库和其中的数据,所以此时我们只能借助于二进制日志文件了。我们上次完整备份时的二进制日志文件是 mysql-bin.000005,在我们做了完整备份恢复之后,重启了 sql 服务,

于是生成了 mysql-bin.000006 二进制日志文件。

 

查看二进制日志文件

[root@www data]# ls /mydata/binlogs/

mysql-bin.000001  mysql-bin.000003  mysql-bin.000005  mysql-bin.index

mysql-bin.000002  mysql-bin.000004  mysql-bin.000006

 

查看我们完整备份之前保存的二进制日志 mysql-bin.000005 的信息

[root@www data]# cat /backups/binlog.pos

FilePositionBinlog_Do_DBBinlog_Ignore_DB

mysql-bin.000005365

 

查看二进制日志文件 mysql-bin.000005 的具体内容

# mysqlbinlog –start-position=365 /mydata/binlogs/mysql-bin.000005

# at 365

#140412 22:55:48 server id 1  end_log_pos 403GTID 0-1-2176

/*!100001 SET @@session.gtid_domain_id=0*//*!*/;

/*!100001 SET @@session.server_id=1*//*!*/;

/*!100001 SET @@session.gtid_seq_no=2176*//*!*/;

…… 省略一些不甚重要的信息

# at 4857

#140412 22:55:51 server id 1  end_log_pos 4895GTID 0-1-2200

/*!100001 SET @@session.gtid_seq_no=2200*//*!*/;

# at 4895

#140412 22:55:51 server id 1  end_log_pos 5009Querythread_id=4exec_time=0error_code=0

SET TIMESTAMP=1397314551/*!*/;

DROP TABLE IF EXISTS `t5` /* generated by server */

/*!*/;

# at 5009

#140412 22:55:51 server id 1  end_log_pos 5047GTID 0-1-2201

/*!100001 SET @@session.gtid_seq_no=2201*//*!*/;

# at 5047

#140412 22:55:51 server id 1  end_log_pos 5245Querythread_id=4exec_time=0error_code=0

SET TIMESTAMP=1397314551/*!*/;

CREATE TABLE `t5` (

  `ID` int(10) unsigned NOT NULL DEFAULT ‘0’,

  `Name` char(30) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

/*!*/;

# at 5245

#140412 22:55:51 server id 1  end_log_pos 5283GTID 0-1-2202

 

借助二进制日志文件实现增量备份的恢复

 

现在我们需要将这些二进制日志信息导入到 mysql 服务器

法 1:

# mysqlbinlog –start-position=365 /mydata/binlogs/mysql-bin.000005 >/tmp/incr.sql

# mysql </tmp/incr.sql 或 mysql> source /tmp/incr.sql

法 2:

# mysqlbinlog –start-position=365 /mydata/binlogs/mysql-bin.000005 | mysql

 

在数据库查看 mydb 数据库是否已经恢复了

MariaDB [(none)]> show databases;

+——————–+

| Database          |

+——————–+

| hellodb            |

| information_schema |

| mydb              |

| mysql              |

| performance_schema |

| test              |

+——————–+

6 rows in set (0.01 sec)

我们可以看到 mydb 数据库已成功恢复。

注:当数据库灾难恢复之后,我们要做的第一件事就是对当前数据库做一次完整备份,以备不时之需,有备无患

mylvbackup: perl 脚本,快速基于 lvm 备份 mysql

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计6285字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7992767
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...