使用LVM快照做mysql完全备份和lvm的扩容

在规划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、从快照上做完整备份
# 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以后收缩分区大小,还可以在系统运行过程中把一个分区从一块硬盘搬到另一块硬盘上面去等等,简直就像变魔术,而且这一切都可以在一个繁忙运行的系统上面直接操作,不会对你的系统运行产生任何影响,很安全。
还是拿JavaEye的网站服务器随便举个小例子吧。话说今天晚上我登录JavaEye网站服务器随便这么一查看磁盘使用状况:

C代码 收藏代码
  1. df-h

竟然发现/home分区的磁盘消耗的很快
C代码 收藏代码
  1. FilesystemSizeUsedAvailUse%Mountedon
  2. /dev/mapper/system-home40G32G8G80%/home

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

C代码 收藏代码
  1. lvextend-L+5G/dev/system/home
  2. resize_reiserfs-s+5G/dev/system/home

先把逻辑卷扩大5GB,再把上面的reiserfs文件系统扩大5GB,前后耗时不超过3秒钟。再df -h查看一下:
C代码 收藏代码
  1. FilesystemSizeUsedAvailUse%Mountedon
  2. /dev/mapper/system-home45G32G13G71%/home

哈哈,/home立刻多了5GB,搞定收工,这是不是很像变戏法,我没停任何服务,没重起服务器,大家没有任何感觉,就一切搞定,说实话我也一直觉得LVM很cool,所以我一直是LVM+Reiserfs的忠实拥趸。有兴趣学习LVM的同学可以下载后面的附件,这可是我珍藏多年的LVM秘籍!

你可能感兴趣的:(mysql)