• MySQL 基于lvm2的备份实战演练 (快照备份)


    前言: lvm2实现热备的原理是基于lvm2的快照功能,lvm2可以实现数据集不大的情况下的热备。

    实战过程如下:这里的演示是在一台Mariadb服务器上进行创建快照,将快照中的文件scp到备份服务器上的Mariadb的数据目录中,这样就实现了基于lvm2的备份
     
     
        (1)新添加一块磁盘,将磁盘进行分区之后,先在分区上创建pv物理卷,然后在pv物理卷上创建vg卷组,之后在vg卷组上创建lv逻辑卷,将lv逻辑卷创建文件系统(使用ext4文件系统),将创建了文件系统的lv逻辑卷挂载至数据库目录,这里最好是创建两个lv逻辑卷,两个lv逻辑卷可以实现将数据库目录与二进制日志文件分开,分别放在不同的lv逻辑卷上,那么当使用lvcreate命令进行快照的时候,只对数据库目录进行快照,不对二进制文件进行快照,可以将
     
        0: 添加一块硬盘,sdb给个40G就ok
     
        1:fdisk /dev/sdb  # 创建分区/dev/sdb1、/dev/sdb2,设置分区类型为linux lvm
     
        2:partx -a /dev/sdb # 让内核重读
     
        3:pvcreate /dev/sdb1 /dev/sdb2 # 创建两个pv
     
        4:vgcreate myvg /dev/sdb1 /dev/sdb2 # 在两个pv上创建一个vg
     
        5:lvcreate -L 20G -n mysql_data myvg # 创建一个名为mysql_data的逻辑卷
     
        6:lvcreate -L 19.9G -n mysql_binlog myvg # 创建一个名为mysql_binlog的逻辑卷
     
        7:mkfs -t ext4 /dev/myvg/mysql_data  # 在mysql_data的逻辑卷逻辑卷上创建文件系统
     
        8:mkfs -t ext4 /dev/myvg/mysql_binlog # 在mysql_binlog的逻辑卷上创建文件系统
     
        9:mkdir -pv /data/{mysql,binlog} # 创建数据库目录和二进制文件目录
     
        10:mount /dev/myvg/mysql_data /data/mysql # 挂载数据库目录
     
        11:mount /dev/myvg/mysql_binlog  /data/binlog # 挂载数据库目录
     
        12:chown -R mysql.mysql /data  # 让mysql用户可以读写
     
        13:修改/etc/my.cnf配置文件:log-bin=/data/binlog/mysql-bin 和 datadir = /data/mysql
     
        14:cd /usr/local/mysql/;
     
        ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql # 如果是二级制或者编译安装的Mariadb这样初始化数据库,如果是yum安装的Mariadb,那么在数据库重启的时候自动hui
     
        15:systemctl start mariadb.service # 启动Mariadb
     
     
     
        (2)在数据库依然提供服务的情况下,首先登入mysql数据库,请求锁定所有的表,添加读锁,这个时候所有的数据表只能够读数据,不能够写数据
     
     
        1:flush tables with read lock;
     
     
     
        (3)让二进制日志文件滚动跟新,并且记录新的二进制文件的开始位置,那么数据库新的数据更改操作将记录到新的二进制文件中,做增量备份的时候需要再次滚动二进制日志,并且导出当前的日志为SQL文件
     
        # 这里的日志滚动其实可以不要
     
        flush logs;
     
     
     
        (4)使用lvcreate 命令创建快照
     
        查看现在数据目录有多大了,如果是40M,那么创建快照的时候给个50M就ok了
     
        du -sh /data/mysql
     
     
        创建名为lvm_snap的快照 ,-s 表示创建快照,-p r 表示快照的权限是只读的,-n 表示快照的名,此时就会在生成一个/dev/myvg/lvm_snap的快照
     
        lvcreate -L 50M -s -p r -n lvm_snap /dev/myvg/mysql_data
     
     
        (5)释放读锁,MySQL服务器可以读写正常工作,此时立马让日志滚动一下,让之后的所有操作都记录在新的二进制文件中
     
     
        unlock tables;
     
        flush tables
     
        (6)将快照挂载,将数据库目录通过文件系统命令cp -a等不修改属性和时间戳的情况下拷贝
     
     
        mount /dev/myvg/lvm_snap /mnt
     
        scp -rp /mnt/* 192.168.23.32:/data/mysql
     
     
        # 上课的时候试一试这里是否需要拷贝二进制文件,如果不拷贝二进制文件,那么备份服务器使用的二进制文件应该是从第一个开始的。但是,现在只需要备份数据,所以拷贝二进制文件也是可以的。
     
        scp -rp /data/binlog/* 192.168.23.32:/data/binlog/
     
     
        此时在192.168.23.32这台Mariadb备份服务器中,已经存在Mariadb的数据目录/data/mysql和二进制目录/data/binlog/,且配置文件/etc/my.cnf都已经配置完毕。在这个时候,还需要修改/data目录的属主和属组,在192.168.23.32这台Mariadb备份服务器中操作如下:
     
        chown -R mysql.mysql /data
     
     
        (7)使用客户端命令mysqlbinlog 导出SQL文件
     
     
            mysqlbinlog /data/binlog/`mysql -p123456 -e 'show master status;' | grep mysql-bin | awk '{print $1}'` > increment.sql
     
     
        (8)使用scp命令将数据库目录、导出的SQL文件拷贝到备份的MySQL服务器上,在备份的MySQL服务器上将数据库目录放在对应的数据库目录,并且导入增量备份的SQL文件
     
     
            scp -rp increment1.sql 192.168.23.11:/root/
     
            mysql -p123456  < increment.sql
     
     
        (9)之后的备份,均使用二进制文件做增量备份即可,备份前切记先滚动新的日志文件,再将当前二进制日志文件导出为SQL文件即可
     
     
            mysql -p123456 -e 'flush logs;'
     
            mysqlbinlog /data/binlog/`mysql -p123456 -e 'show master status;' | grep mysql-bin | awk '{print $1}'` > increment2.sql
     
            scp increment2.sql 192.168.23.32:/root/
     
     
            # 在备份的服务器上执行导入增量的sql备份文件
     
            mysql -p123456 increment2.sql
  • 相关阅读:
    【Mobius绮丽的辗转】莫比乌斯反演
    【BZOJ2301】【HAOI2011】Problem b 莫比乌斯反演
    【JZOJ3636】【BOI2012】Mobile(mobile)
    【JZOJ3640】【COCI2014】utrka
    VMware虚拟机无法上网 无法启动VMnet0等问题【转载】
    java map 遍历
    java List<String> 转换成带逗号的字符串
    javascript 请求action传递中文参数乱码问题
    jQuery ajax 传递JSON数组到Spring Controller
    Eclipse 在线安装properties编辑插件
  • 原文地址:https://www.cnblogs.com/liu1026/p/7467720.html
Copyright © 2020-2023  润新知