环境:一台刚刚干净的linux服务器,使用centos系统
create_kz.sh 创建Lvm快照,实现备份
#!/usr/bin/bash
#创建一个lvm快照
read -p '请输入新加磁盘的名字:' cpname
a=`lsblk | grep 'sdb'| wc -l`
if [ ! $a -eq 1 ]
then
echo '- - -' > /sys/class/scsi_host/host0/scan
echo '- - -' > /sys/class/scsi_host/host1/scan
echo '- - -' > /sys/class/scsi_host/host2/scan
b=`lsblk | grep 'sdb'| wc -l`
if [ ! $b -eq 1 ]
then
echo '未找到该磁盘!!'
exit
fi
fi
pvcreate /dev/$cpname
if [ ! $? -eq 0 ]
then
echo '创建物理卷失败!!'
exit
fi
read -p '请输入vg的名称:' vgname
vgcreate $vgname /dev/$cpname
if [ ! $? -eq 0 ]
then
echo '创建卷组失败!!'
pvremove /dev/$cpname
exit
fi
read -p '请输入lv的名称:' lvname
read -p '请输入lv的大小:' lvsize
lvcreate -L $lvsize -n $lvname $vgname
if [ ! $? -eq 0 ]
then
echo '创建逻辑卷失败!!'
vgremove /dev/$vgname
pvremove /dev/$cpname
exit
fi
mkfs.xfs /dev/$vgname/$lvname
rpm -qa | grep mariadb-server
if [ $? -eq 0 ]
then
yum -y reinstall mariadb-server mariadb
else
yum -y install mariadb-server mariadb
fi
mount /dev/$vgname/$lvname /var/lib/mysql
if [ ! $? -eq 0 ]
then
echo 'lv挂载失败!!'
lvremove /dev/$vgname/$lvname
vgremove /dev/$vgname
pvremove /dev/$cpname
exit
fi
chown -R mysql.mysql /var/lib/mysql
systemctl restart mariadb
if [ ! $? -eq 0 ]
then
echo 'mariadb服务启动失败'
lvremove /dev/$vgname/$lvname
vgremove /dev/$vgname
pvremove /dev/$cpname
exit
fi
systemctl enable mariadb
read -p '请输入lvm快照名称:' kzname
read -p '请输入lvm快照大小:' kzsize
lvcreate -L $kzsize -s -n $kzname /dev/$vgname/$lvname
if [ $? -eq 0 ]
then
echo '创建lvm快照成功!!'
else
echo '创建lvm快照失败!!'
lvremove /dev/$vgname/$lvname
vgremove /dev/$vgname
pvremove /dev/$cpname
exit
fi
echo $vgname > /root/kz.txt
echo $lvname >> /root/kz.txt
echo $kzname >> /root/kz.txt
use_kz.sh 还原快照
#!/usr/bin/bash
#使用lvm快照还原
vgname=`head -1 kz.txt`
lvname=`head -2 kz.txt | tail -1`
kzname=`tail -1 kz.txt`
systemctl stop mariadb
umount /dev/$vgname/$lvname
if [ ! $? -eq 0 ]
then
echo 'lvm卸载失败!!'
exit
fi
lvconvert --merge /dev/$vgname/$kzname
if [ ! $? -eq 0 ]
then
echo '快照还原失败!!'
exit
fi
mount /dev/$vgname/$lvname /var/lib/mysql
if [ ! $? -eq 0 ]
then
echo '快照还原失败!!'
exit
fi
systemctl restart mariadb
if [ $? -eq 0 ]
then
echo '快照还原成功!!'
else
echo '快照还原失败!!'
fi