• 数据库备份和恢复---MariaDB


    定义

    1. 数据备份:将源数据再次存储到新的位置
    2. 数据恢复:将备份好的数据重新应用到数据库系统

    常见的备份类型:

    1. 按照是否备份整个数据集来分
      完全备份:备份从开始到执行备份这一时刻的所有数据集
      增量备份:备份从上次备份到这次备份时刻变化的数据集
      差异备份:备份从上一次完全备份到这一备份时刻变化的数据集
    2. 按照备份的数据库对象来分
      物理备份:通过复制数据集在文件系统中的文件来备份
      逻辑备份:在数据库的客户端工具上使用SQL语句,应用程序或其他脚本文件做备份的操作
    3. 按照备份时,还能提供的服务分类
      热备份:备份的过程中,可以对备份的数据集做读写操作
      温备份:备份的过程中,只能对备份的数据集只能做读操作,不可有写操作
      冷备份:备份的过程中,直接将服务下线,读写操作均无法执行

    备份的数据内容:

    1. 数据;
    2. 二进制日志
    3. InnoDB存储以前的事务日志文件;
    4. 代码——存储过程,存储函数,触发器,事件调度器等;
    5. 当前服务器上用于启动数据服务是所使用的配置文件;
    6. 操作系统上与MySQL或MariaDB相关的配置——sudo任务、cron任务等;

    备份方法

    第一种方法:基于二进制文件的恢复

    通过客户端命令工具:mysqlbinlog和二进制日志恢复数据库文件

    mysqlbinlog [options] log_file ...
    --start-datetime=
    --stop-datetime=
    		
    		
    --start-position=
    --stop-position=
    
    
    
    #例:通过position日志位置直接恢复
    mysqlbinlog /var/lib/mysql/mysqlbin.000001 --stop-position=1093 | mysql -uroot -proot
    

    重定向输入到bin.sql文件中

    第一步:算好要恢复数据的时间段,重定向输入到bin.sql文件中

    #通过时间轴
    mysqlbinlog --start-datetime="2019-06-08 22:55:13" --stop-datetime="2019-06-08 22:55:13" binlog.0000011 > bin.sql
    #通过position日志
    mysqlbinlog --start-position=1008 --stop-position=1093 binlog.0000011 > bin.sql
    #整个文件
    mysqlbinlog /var/lib/mysql/binlog.000006 > /root/bin.sql
    mysqlbinlog /var/lib/mysql/binlog.000007 >> /root/bin.sql
    

    第二步:执行bin.sql文件还原

    source bin.sql     
    
    或
    
    # mysql -uroot   -pxxx  DATABASENAME  < bin.sql
    
    

    第二种方法:基于lvm2的备份

    第一步:请求锁定所有表

    flush tables with read lock;
    

    第二步:记录二进制日志文件及事件位置或时间点

    flush logs;
    mysql -uroot -proot -e 'show  master status;' > /path/to/somefile
    

    第三步:创建快照

    lvcreate -L # -s -p r -n NAME /DEV/VG_NAME/LV_NAME
    

    第四步:释放锁

    unlock tables;
    

    第五步:挂在快照卷,执行数据备份
    第六步:备份完成后,删除快照卷
    第七步:指定好策略,通过原卷备份二进制日志
    第八步:还原的时候确保属组和属主是mysql:mysql

    其中:如果是yum安装默认数据目录在/var/lib/mysql,如果需要更改

    ╭─root@localhost.localdomain /var/lib/mysql  
    ╰─➤  vim /etc/my.cnf.d/server.cnf    
    
    [mysqld]
    datadir=/mysql_data/
    pid_file=/mysql_data/localhost.pid
    socket=/mysql_data/mysql.sock
    wsrep_data_home_dir=/mysql_data/
    log-bin=mysql-bin
    
    [client]
    socket=/mysql_data/mysql.sock
    

    第三种方法:备份工具mariabackup/Xtrabackup

    注意:在MariaDB10.3.x及以上的版本用Percona XtraBackup工具会有问题;原因可能是MariaDB10.3以上版本的redo日志格式和之前不同了

    官方文档

    Percona的官方文档:https://www.percona.com/doc/percona-xtrabackup/2.4/index.html
    Mariabackup的官方文档:https://mariadb.com/kb/en/library/mariabackup-overview/

    安装方法

    yum install MariaDB-backup
    

    备份与恢复

    全备+恢复

    #全量备份
    
    mariabackup --backup --target-dir=/root/fullbackup --user=root --password=root
    
    #准备全备数据
    
    mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root
    
    #还原数据(请确保数据目录下是空的)
    
    mariabackup --copy-back --target-dir=/root/fullbackup/ --user=root --password=root
    
    #修改属组和属主
    
    chown -R mysql.mysql /var/lib/mysql
    
    

    全备+增量+恢复

    #1.全量备份
    
    mariabackup --backup --target-dir=/root/fullbackup --user=root --password=root
    
    #2.增量备份
    
    mariabackup --backup --target-dir=/root/inc1 --incremental-basedir=/root/fullbackup/ --user=root --password=root
    
    #3.准备全备数据
    
    mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root
    
    #4.增量和全备数据合并
    
    mariabackup --prepare --target-dir=/root/fullbackup/ --user=root --password=root --incremental-dir=/root/inc1/ --apply-log-only
    
    #5.恢复数据(请确保数据目录下是空的)
    
    mariabackup --copy-back --target-dir=/root/fullbackup/ --user=root --password=root
    
    #6.修改属组和属主
    
    chown -R mysql.mysql /var/lib/mysql
    
    

  • 相关阅读:
    Javascript学习中比较核心的知识(持续更新)
    深入理解Builder模式(转载)
    Git 对文件进行批量rm操作
    Android 记录代码执行时间
    Git已跟踪文件的忽略方法
    Linux shell command line process(命令行处理流程)
    线程 方面笔记01
    c#中索引器
    sql记录
    颜色的处理
  • 原文地址:https://www.cnblogs.com/du-z/p/11172099.html
Copyright © 2020-2023  润新知