美文网首页
LVM快照备份流程

LVM快照备份流程

作者: 朱溪江 | 来源:发表于2019-01-17 20:49 被阅读6次

    LVM备份MYSQL的前提(2选1):将已运行mysql迁移到LVM卷

    #! bin/bash
    echo "数据库信息将被备份在/backup目录下,并确定添加磁盘/dev/sdb"
    read -p "请输入你的数据库密码:"   mysql_password
    back_dir=/backup
    if [ ! -d $back_dir ];then
            mkdir -p /backup
    fi
    file=`date +%F`-msyql.tar
    
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ##将mysql迁移到lvm上
    ##若是生产环境,不会有此步骤,mysql 会装在lvm上
    lvm_remove_mysql(){
    systemctl stop mysqld
    umount /var/lib/mysql
    lvremove /dev/mysqlvg/lv-mysql -y
    mkfs.xfs -f /dev/sdb
    pvcreate /dev/sdb  -y
    vgcreate mysqlvg /dev/sdb
    lvcreate -n lv-mysql -L 2G mysqlvg -y
    mkfs.xfs -f /dev/mysqlvg/lv-mysql
    ##. 将数据迁移到LVM         先将新建的逻辑卷lv-mysql 挂在在mnt上,
    ##然后将数据库原始的信息拷贝到mnt中即拷贝到逻辑卷(lv-mysql)中,这样
    ##逻辑卷就有了数据库的原始信息,然后将逻辑卷从mnt取消挂载,挂载在/var/lib/mysql下,启动数据库,以后所有的信息都会存入逻辑卷中;(若/var/lib/mysql没人挂载,默认是系统盘,如果手动挂载,则读写存储会是你>挂载的盘)。至此,MySQL将迁移到lvm卷上。
    systemctl stop mysqld
    mount /dev/mysqlvg/lv-mysql /mnt/
    cp -arf /var/lib/mysql/* /mnt
    
    umount /mnt/ # 数据库原始的文件已经到逻辑卷中,目的达成,卸载临时>挂载
    
    echo "/dev/mysqlvg/lv-mysql /var/lib/mysql  xfs defaults 0 0" >>/etc/fstab ## //加入fstab开机挂载   将已经含有数据库原始信息的逻辑卷
    ##挂载在数据库的默认路径下(/var/lib/mysql),这样所有的数据信息会存>到逻辑卷(sdb)中,而不是系统盘(sda)中
    mount -a
    if [ $? -ne 0 ];then
            echo '开机自动挂载'
    fi
    
    chown -R mysql.mysql /var/lib/mysql
    systemctl restart mysqld
    }
    
    ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ###LVM快照备份
    lvm_back(){
    echo "flush tables with read lock;
                    system lvcreate -L 500M -s -n lv-mysql-snap /dev/mysqlvg/lv-mysql;
                    unlock tables;" | mysql -p"$mysql_password"
    mysql -p"$mysql_password" -e 'show master status' > /backup/`date +%F_postion.txt`
    mount -o nouuid /dev/mysqlvg/lv-mysql-snap /mnt/
    cd /mnt/
    tar -cf /backup/$file ./*
    cd
    umount /mnt/
    lvremove -f /dev/mysqlvg/lv-mysql-snap
    }
    
    
    
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ##LVM快照恢复
    lvm_recover(){
    systemctl stop mysqld
    rm -rf /var/lib/mysql/*
    ls /var/lib/mysql/*
    echo "已经模拟数据库损坏,清空/var/lib/mysql~~~~~~~~~~~~~~~~~~~~~~"
    sleep 2
    echo "导入数据~~~~~~~~~~~~~~"
    tar -xf /backup/$file -C /var/lib/mysql/
    chown -R mysql.mysql /var/lib/mysql/
    systemctl restart mysqld
    }
    
    lvm_remove_mysql
    lvm_back
    
    ```

    相关文章

      网友评论

          本文标题:LVM快照备份流程

          本文链接:https://www.haomeiwen.com/subject/wkjwdqtx.html