使用LVM快照做mysql完全备份与lvm扩容 详解

发布时间:2020-06-10编辑:脚本学堂
本文介绍下,使用lvm快照做mysql完全备份,以及lvm扩容的具体方法。有需要的朋友参考下。

在规划mysql/ target=_blank class=infotextkey>mysql数据库时最好将数据和日志分开放到LVM分区中。

使用LVM快照备份,需要将数据放在lvm分区。
试验中因mysql数据不是放在lvm分区,所以先将数据移到lvm分区。

1.把原来存放在普通分区的数据移至LVM中
 

复制代码 代码示例:
# lvcreate -n mysql_data -L 1G GLSvg  –建立lvm分区
# mkfs.ext3 /dev/GLSvg/mysql_data     –进行格式化
# mysqladmin -uroot -p123 shutdown  –关闭Mysql服务器
# tar cjvf /opt/mysql_data.tar.bz2 . –将原来数据库的数据打成包
# rm -rf /data2/*   –删除原数据
# vim /etc/fstab   –修改文件系统挂载表
/dev/GLSvg/mysql_data   /data2                  ext3    defaults        0 0
# tar xvf mysql_data.tar.bz2 -C /data2 将原来的数据解压至新存储(LV)上

启动mysql
 

复制代码 代码示例:
# cd /opt/mysql-glibc/
# ./bin/mysqld_safe –defaults-file=/data2/my.cnf &

2.为mysql_data做快照
 

复制代码 代码示例:
# lvcreate -n mysql-snap -L 100M -s /dev/GLSvg/mysql_data   -s给/dev/GLSvg/mysql_data建立大小为100M的快照
#ll /dev/mysqllvm/       –查看快照设备
lv_mysqllvm  mysql-snap
 
–>mysql-snap   快照设备
–>/dev/GLSvg/mysql_data 存放原始数据的lvm分区
–>cow(copy online write) 新写入数据,数据的写入量不能超过cow设备大小,不然整个LV存储都会坏掉,移除快照设备后,cow上写入的数据将写入到原lvm分区
# ll /dev/mapper/  –查看cow设备
mysqllvm-mysql–snap
mysqllvm-mysql–snap-cow
mysqllvm-lv_mysqllvm
mysqllvm-lv_mysqllvm-real

3、从快照上做完整备份
 

复制代码 代码示例:
# linuxjishu/9952.html target=_blank class=infotextkey>mount /dev/mysqllvm/mysql-snap /mnt/   –将快照设备挂载到/mnt目录
# cd /mnt        
# tar czvf /opt/mysql-snap.tar.gz ./  –备份快照上文件

4、删除快照
 

复制代码 代码示例:
# umount /mnt         –卸载挂载设备
# lvremove /dev/GLSvg/mysql-snap    –移除快照设备

5、从快照上还原数据:
 

复制代码 代码示例:
# mysqladmin -uroot -p147258369 shutdown  –关闭mysql服务器
# rm -rf /data2/*   –删除原Lvm上的所有数据
# tar xvf mysql-snap.tar.gz -C /data2 –还原数据
# cd /opt/mysql-glibc/   –进入到mysql安装目录
# ./bin/mysqld_safe –defaults-file=/data2/my.cnf &

快照后新的操作使用binlog日志进行恢复。

注意:使用LVM快照需要进行锁表和解锁
 

复制代码 代码示例:
mysql> flush tables with read lock;   –锁表
mysql> unlock tables;  —解锁

lvm的扩容

LVM (Logic Volume Management,逻辑卷管理),是传统商业Unix就带有的一项高级磁盘管理工具,异常强大。
后来LVM移植到了Linux操作系统上,尽管不像原来Unix版本那么强大,但瘦死的骆驼比马大,Linux的LVM仍然非常强大,可以在生产运行系统上面直接在线扩展硬盘分区,可以把分区umount以后收缩分区大小,还可以在系统运行过程中把一个分区从一块硬盘搬到另一块硬盘上面去等等,简直就像变魔术,而且这一切都可以在一个繁忙运行的系统上面直接操作,不会对你的系统运行产生任何影响,很安全。

查看磁盘使用状况:
 

复制代码 代码示例:
df -h 

竟然发现/home分区的磁盘消耗的很快:
 

复制代码 代码示例:
Filesystem                Size  Used  Avail Use%   Mounted on 
/dev/mapper/system-home    40G   32G    8G  80%    /home 

已经使用了80%,如果用光了,可就有点麻烦了,所以为了安全,把/home分区扩大5GB,多给它点硬盘空间,敲入两条shell命令
 

复制代码 代码示例:
lvextend -L +5G /dev/system/home 
resize_reiserfs -s +5G /dev/system/home  

先把逻辑卷扩大5GB,再把上面的reiserfs文件系统扩大5GB,前后耗时不超过3秒钟。

再df -h查看:
 

复制代码 代码示例:
Filesystem                Size  Used  Avail Use%   Mounted on 
/dev/mapper/system-home    45G   32G    13G  71%    /home 

然后,/home立刻多了5GB的空间。