美文网首页
物理备份案例

物理备份案例

作者: 心疼你萌萌哒 | 来源:发表于2018-05-11 10:41 被阅读0次

    例一:tar备份数据库(物理备份)

    注意:备份期间,服务不可用
    备份过程

    1.停止数据库:systemctl stop mariadb ; mkdir /backup
    2.tar备份数据: tar -cvf  /backup/mysqlbackup.tar /var/lib/mysql
    3.启动数据库:systemctl start mariadb
    

    还原过程

    1.停止数据库:systemctl stop mariadb 
    2.导入备份数据:tar -xf mysqlbackup.tar /var/lib/mysql
    3.权限 :chown -R mysql.mysql /var/lib/mysql
    4.启动数据库:systemctl start mariadb
    

    例二:快照实现物理备份

    lvm创建逻辑卷管理

    [root@localhost ~]#pvcreate /dev/sdb
    [root@localhost ~]#vgcreate vg_mariadb /dev/sdb
    [root@localhost ~]#lvcreate -l 100 -n lv_mariadb vg_mariadb
    [root@localhost ~]#mkfs.xfs /dev/vg_mariadb/lv_mariadb
    [root@localhost ~]#mount /dev/vg_mariadb/lv_mariadb /var/lib/mysql
    

    挂载:

    MySQL运行一段时间,数据并没有存储LVM:将现在的数据迁移到LVM
    1. 将数据迁移到LVM
    [root@tianyun ~]# systemctl stop mysqld
    [root@tianyun ~]# mount /dev/datavg/lv-mysql /mnt/                        //临时挂载点
    [root@tianyun ~]# cp -a /var/lib/mysql/* /mnt                                   //将MySQL原数据镜像到临时挂载点
    
    [root@tianyun ~]# umount /mnt/
    [root@tianyun ~]# vim /etc/fstab                                                       //加入fstab开机挂载
    /dev/datavg/lv-mysql    /var/lib/mysql          xfs     defaults        0 0
    
    [root@tianyun ~]# mount -a
    [root@tianyun ~]# chown -R mysql.mysql /var/lib/mysql
    [root@tianyun ~]# systemctl start mysqld
    

    二进制日志

    【如何开启mysql5.7的binlog日志呢?
    在my.inf主配置文件中直接添加三行
    [plain] view plain copy
    log_bin=ON  
    log_bin_basename=/var/lib/mysql/mysql-bin  
    log_bin_index=/var/lib/mysql/mysql-bin.index  
    三个参数来指定,
    第一个参数是打开binlog日志
    第二个参数是binlog日志的基本文件名,后面会追加标识来表示每一个文件
    第三个参数指定的是binlog文件的索引文件,这个文件管理了所有的binlog文件的目录
    
    当然也有一种简单的配置,一个参数就可以搞定
    [plain] view plain copy 
    1.log-bin=/var/lib/mysql/mysql-bin  
    这一个参数的作用和上面三个的作用是相同的,mysql会根据这个配置自动设置log_bin为on状态,自动设置log_bin_index文件为你指定的文件名后跟.index
    
    这些配置完毕之后对于5.7以下版本应该是可以了,但是我们这个时候用的如果是5.7及以上版本的话,重启mysql服务会报错。这个时候我们必须还要指定一个参数
    [plain] view plain copy 
    2.server-id=123454  
    随机指定一个不能和其他集群中机器重名的字符串,如果只有一台机器,那就可以随便指定了
    
    有了上述的配置之后,我们就可以重新启动我们的mysql了
    3.service mysqld restart
    
    启动成功之后,我们可以登陆查看我们的配置是否起作用
    [plain] view plain copy 
    4.show variables like '%log_bin%'  】
    
    开启mariadb二进制日志
    vim /etc/my.cnf
    log-bin=/var/log/mysql/mylog
    systemctl restart mariadb
    cd /var/lib/mysql
    ls
    
    
    1\. 重启mysqld 会截断
    2\. flush logs 会截断
    3\. reset master 删除所有binlog rm -rf /
    4\. 删除部分
    PURGE BINARY LOGS TO 'mysql-bin.010';
    PURGE BINARY LOGS BEFORE '2016-04-02 22:46:26';
    
    5\. 暂停 仅当前会话 SET SQL_LOG_BIN=0;
    SET SQL_LOG_BIN=1;
    
    6\. 截取binlog
    all:
    # mysqlbinlog mysql.000002
    
    datetime:
    
    # mysqlbinlog mysql.000002 --start-datetime="2018-12-05 10:02:56" --stop-datetime="2018-12-05 11:02:54"| mysql -u root -p'Qingyang@123'
    
    position:
    mysqlbinlog --start-position 744 --stop-position 844  mysql-bin.000001 | mysql -u root -p'Qingyang@123'
    
    
    **Slow Query Log**
    slow_query_log=1
    slow_query_log_file=/var/log/mysql-slow/slow.log
    long_query_time=3
    
    # mkdir /var/log/mysql-slow/
    # chown mysql.mysql /var/log/mysql-slow/
    # systemctl restart mysqld
    
    查看慢查询日志
    测试:BENCHMARK(count,expr)
    SELECT BENCHMARK(50000000,2*3);
    
    

    快照备份

    创建LVM逻辑卷的时候,并不会发生数据的物理复制。再换句话说,>复制元数据,不复制物理数据
    使用前提:
    1.数据文件要在逻辑卷上
    2.此逻辑卷所在卷组必须有足够的空间使用了快照卷
    3.数据文件和事务日志要在同一个逻辑卷上

    将数据迁移到LVM
    systemctl stop mariadb
    pvcreate /dev/sdb1
    vgcreate myvg /dev/sdb1
    lvcreate -n mydata -L +1G myvg
    mkfs.ext4 /dev/myvg/mydata
    mkdir /mysql_data
    mount /dev/myvg/mydata /var/lib/mysql
    or
    vim /etc/fstab                                      //加入fstab开机挂载
    /dev/datavg/lv-mysql    /var/lib/mysql          xfs     defaults        0 0
    cp -a /var/lib/mysql/* /mnt
    chown -R mysql.mysql /var/lib/mysql
    systemctl start mariadb
    
    关闭锁 创建快照
    echo "FLUSH TABLES WITH READ LOCK; SYSTEM lvcreate -L 100M -s -n lv_snap /dev/myvg/mydata; \
    UNLOCK TABLES;" | mysql -uroot
    
    从快照中备份
    mount -o ro /dev/myvg/lv_snap /lvm_data       //xfs -o ro,nouuid
    cd /lvm_data
    mkdir /backup
    tar -cf /backup/`date +%F`-mysql-all.tar ./*
    
    移除快照
    cd; umount /lvm_data/
    lvremove -f /dev/myvg/lv_snap
    
    LVM快照恢复流程:
    1. 停止数据库  systemctl stop mariadb 
    2. 清理环境    rm -rf /var/lib/mysql/*
    3. 导入数据
    4. 修改权限
    5. 启动数据库
    6. binlog恢复
    [root@slave2 ~]# tar -xf /backup/2016-12-07-mysql-all.tar -C /var/lib/mysql/
    [root@slave2 ~]# chown -R mysql.mysql /var/lib/mysql/*
    [root@slave2 ~]# systemctl start maria
    

    相关文章

      网友评论

          本文标题:物理备份案例

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