美文网首页
使用 mariabackup 完整备份和恢复数据库

使用 mariabackup 完整备份和恢复数据库

作者: fbckf | 来源:发表于2022-02-08 12:49 被阅读0次

    官方文档:https://mariadb.com/kb/en/full-backup-and-restore-with-mariabackup/

    一、权限与配置

    创建用户与授权

    使用 mariabackup 工具备份时需要用一个具有全局权限的用户来执行备份操作

    -- 创建用户
    CREATE USER 'mariabackup'@'localhost' IDENTIFIED BY 'mypassword';
    -- 授权
    GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'mariabackup'@'localhost';
    

    指定用户信息

    备份时有两种方式指定用户信息,一种是使用命令行参数:--user --password

    mariabackup --backup \
       --target-dir=/var/mariadb/backup/ \
       --user=mariabackup --password=mypassword
    

    另一种是在配置文件中配置客户端参数组

    [mariabackup]
    user=mariabackup
    password=mypassword
    

    文件系统权限

    mariabackup 工具基于文件进行备份,在备份过程中需要读取到文件系统中的文件,因此需要确保执行 mariabackup 命令的用户具有读取这些文件的权限

    数据库文件位置

    在 MariaDB 10.1.36,MariaDB 10.2.18,MariaDB 10.3.10 之前,如果在执行命令时没有指定数据库的文件位置,MariaDB 将不会读取默认的值,并且返回一个错误

    Error: datadir must be specified.
    

    配置数据文件地址的方式也有两种,命令行

    # -h, --datadir
    mariabackup --backup -h /var/lib/mysql
    

    配置文件

    [mysqld]
    datadir=/var/lib/mysql
    

    二、备份

    备份指定数据库

    mariabackup --backup \
       --target-dir=/var/mariadb/backup/ \
       --user=mariabackup --password=mypassword
    
    • --target-dir 指定备份文件存放地址

    三、还原

    准备还原文件

    需要注意,mariabackup 在 target-dir 目录生成的文件时间点是不一致的,如果直接使用这些文件进行恢复的话,InnoDB会以数据损坏的方式拒绝执行
    所以,在使用这些文件恢复数据库前,需要先使用命令进行处理

    mariabackup --prepare \
       --target-dir=/var/mariadb/backup/
    

    还原备份

    在进行还原备份之前,需要确保以下条件:

    • 停止 MariaDB Server 进程
    • 确保 datadir 目录为空

    确认没有问题之后可以使用命令进行还原

    mariabackup --copy-back \
       --target-dir=/var/mariadb/backup/
    

    或者使用以下命令

    rsync -avrP /var/mariadb/backup /var/lib/mysql/
    chown -R mysql:mysql /var/lib/mysql/
    # 如果 mariabackup 是 10.2.10 之前的版本,需要删除所有已存在的 InnoDB 重做日志文件
    rm /var/lib/mysql/ib_logfile*
    

    相关文章

      网友评论

          本文标题:使用 mariabackup 完整备份和恢复数据库

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