Lvm快照实现物理备份之自动化

环境:一台刚刚干净的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





猜你喜欢

转载自blog.51cto.com/12152985/2376896