MYSQL 的 LVM 快照备份、恢复
1、划分分区 【标识号:8e】
2、创建 lvm 分区:
(1)、建立 pv
Pvcreate
/dec/sda5
# 查看 pv:pvs
(2)、建立 vg(卷组)
Vgcreate
vgtest /dev/sda5
# 查看 vg:vgs
(3)、建立 lv(逻辑分区),并指定大小
Lvcreate
-L
4G
-n
lvtest
vgtest
# 查看 lv:lvs
(4)、格式化 lv(格式化逻辑分区)
Mkfs.ext4
/dev/vgtest/lvtest
3、迁移原 mysql 数据:
(1)、将建立的分区挂载到临时目录【不可以挂载到 /tmp 目录下】
Mount
/dev/vgtest/lvtest
/mysql
# /mysql 为临时新建的目录
(2)、迁移原 mysql 数据
①、停止 mysql 服务
Service mysqld
stop
②、cd
var/lib/mysql
③、tar
cf
-
.
| tar
-xf
-
-C
/mysql
#
将数据迁移到刚才挂载的逻辑分区上【/mysql】
#
-
指输出到屏幕
#
。 指当前目录
#
-C:指定解压的目录
(3)、卸载临时分区
Umount
/mysql
(4)、重新挂载到 mysql 服务的分区(/var/lib/mysql)
Mount
/dev/vgtest/lvtest
/var/lib/mysql
(5)、审核/var/lib/mysql 的权限,特别注意 selinux
恢复/var/lib/mysql 目录权限:
Restorecon
-R
/var/lib/mysql
(6)、启动 mysql 服务,若能正常启动,则 OK
Service
mysqld
restart
4、创建快照:
(1)、锁表:在命令行模式下
Mysql> flush tables with read lock
(2)、查看 position 号:
Mysql> Show
master
status
#
记录下 position 号,假定为 106
(3)、创建快照:
lvcreate -L 40M -s -n mysnap1 /dev/vgtest/lvtest
# -L:指定容量【容量一般为已知容量的 2 倍,用完后释放】
# -s:建立快照
-n
指定快照名
2
(4)、解锁
Mysql> unlock tables
5、备份:
(1)、挂载快照 【这里我们还是挂载到刚才建的临时目录】
Mount
/dev/vgtest/mysnap1
/mysql
# 默认快照建立后,位于卷组里
(2)、从快照里备份,默认日志不备份
Tar
cf
123.tar
文件 1
文件 2
文件 3
文件 4
。。。。。
(3)、删除快照,释放空间
Lvremove
/dev/vgtest/mysnap1
6、恢复:
(1)、停 mysql 服务
Service
mysqld stop
(2)、初始化 mysql 环境,日志保留
(3)、恢复备份的 tar 包【123.tar】
Tar
xf
123.tar
-C
/var/lib/mysql
(4)、重演日志,开始位置,为刚才记录 position 号
mysqlbinlog --start-posirion 106
mysql-bin.000013 | mysql -uroot -predhat
(5)、启动 mysql 服务
Service
mysqld
start
7、测试:
登陆到 mysql 数据库,查看数据是否完整,即可!!
*******************************************************************************
恢复时,注意日志里是否有误操作的,如果有,记得跳过