zoukankan      html  css  js  c++  java
  • RDS MySQL物理备份文件恢复教程

    背景:

    在基础运维或必要取证时,我们需要对备份的数据库进行恢复,本文参考阿里云官方文档及实践整理教程。

    基本环境:

    1.系统要求: 建议CentOS 6.X/7.X, 本文使用的:7.8

    2.Xtrabackup的版本

    • MySQL 5.6及之前的版本需要安装 Percona XtraBackup 2.3,安装指导请参见官方文档Percona XtraBackup 2.3
    • MySQL 5.7版本需要安装 Percona XtraBackup 2.4,安装指导请参见官方文档Percona XtraBackup 2.4
    • MySQL 8.0版本需要安装 Percona XtraBackup 8.0,安装指导请参见官方文档Percona XtraBackup 8.0

     Tips: 在MySQL5.7阿里云官方文档推荐2.4,但是没有明确具体的版本,记得yum默认2.4.3, 在2.4.3版本存在若干BUG,建议直接根据链接下载RPM 本地yum安装。

    如果为8.0,安装8.0.4存在BUG,例如:

    Populating InnoDB table cache.
    Allocated tablespace ID 92 for dszgdb/dis_count, old maximum was 0
    xtrabackup: Unknown error 3613
    xtrabackup: Unknown error 3613
    xtrabackup: Unknown error 3613
    xtrabackup: Unknown error 3613

    需要安装8.0.7版本问题解决

    安装示例:

    1.如果已经安装了,在恢复中,发现工具的版本不对,需要下载对应的Percona XtraBackup,首先需要卸载当前版本:

    # yum移除xtrabackup
    yum remove percona-xtrabackup
    
    # 查询RPM包
    rpm -qa|grep -i  xtrabackup
    # 移除RPM
    rpm -e percona-xtrabackup-2.3.5-1.el7.x86_64

    2.正式安装:

    1.在官方文档找到RPM的安装方式

    2.以2.4版本进行安装(以下命令为官网示例,注意此版本存在BUG,实际安装参考建议使用2.4最新版本)

    wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm
    yum localinstall percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

    安装后结果:

    3.安装qpress

    XtraBackup的innobackupex命令依赖qpress命令,否则执行会提示: qpress command not found.

    wget "http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/183466/cn_zh/1608011575185/qpress-11-linux-x64.tar"
    tar xvf qpress-11-linux-x64.tar
    chmod 775 qpress
    cp qpress /usr/bin

    安装成功:

    数据恢复:

    在获得数据备份文件的前提下,根据文件类型不同,解压方式也不一样,阿里云目前大概类型如下:

    • tar 压缩包 (.tar.gz 后缀)
      • tar -izxvf <数据备份文件名> -C /home/mysql/data
    • xbstream 压缩包 (.xb.gz 后缀)
      •   
        gzip -d -c <数据备份文件名> | xbstream -x -v -C /home/mysql/data
    • xbstream 文件包(_qp.xb 后缀)
      • 2019年2月20日后创建的MySQL 5.6实例,数据备份文件的格式为xbstream文件包(_qp.xb后缀)  

        ## 解包
        cat <数据备份文件名> | xbstream -x -v -C /home/mysql/data
        
        ## MySQL 5.6/5.7解压
        innobackupex --decompress --remove-original /home/mysql/data
        ## MySQL 8.0解压
        xtrabackup --decompress --remove-original --target-dir=/home/mysql/data
    • xbstream qpress压缩包(_xb.qp后缀)
      •   
        qpress -do  <数据备份文件名>  | xbstream -x -v -C /home/mysql/data

    解压后,进入该目录,目录结构如下:

     这里有个小方法,mysql的数据目录可以看出,此目录结构为MySQL 8.0版本,使用对应8.0方式恢复即可。 

    ## MySQL 5.6/5.7
    innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
    
    ## MySQL 8.0
    xtrabackup --prepare --target-dir=/home/mysql/data
    xtrabackup --datadir=/var/lib/mysql --copy-back --target-dir=/home/mysql/data

    恢复根据数据大小,进行恢复,数据量大可能比较慢,最终结果类似,如果过程报错,大部分可能是安装的XtraBackup和Mysql版本对应错误:

     若系统返回如下报错,可以用rm -rf ,(提示,数据恢复最好用干净的环境进行恢复)

    rm -rf /var/lib/mysql
    chown -R mysql:mysql /var/lib/mysql

    修改数据配置:

    RDS的数据库阿里云进行了二次开发优化,原生mysql不支持部分参数,需要修改移除:

    vim /home/mysql/data/backup-my.cnf
    添加:
    lower_case_table_names=1
    移除或注释
    #innodb_log_checksum_algorithm
    #innodb_fast_checksum
    #innodb_log_block_size
    #innodb_doublewrite_file
    #innodb_encrypt_algorithm
    #rds_encrypt_data
    #redo_log_version
    #master_key_id
    #server_uuid

    按Esc键,然后输入:wq并回车进行保存

    赋予目录权限

    chown -R mysql:mysql /home/mysql/data

    启动MySQL,建议停止其他MySQL服务

    mysqld --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data

    mysqld根据情况进行指定,例如宝塔:/www/server/mysql/bin/mysqld,宝塔可以快速搭建使用MySQL各个版本。

    如果不知道MySQL root的密码,可在配置文件中[mysqld]添加

    [mysqld]
    skip-grant-tables

    最近使用mysql命令进入数据库:

    数据导出:

    如果希望对恢复的数据进行导出,可使用mysqldump进行导出,仍以宝塔路径示例:

    /www/server/mysql/bin/mysqldump  databases_name > databases.sql

    参考:

    https://help.aliyun.com/knowledge_detail/41817.html

    【版权所有@Sevck 博客地址http://www.cnblogs.com/sevck】 可以转载,注明出处.
  • 相关阅读:
    stringstream用法
    来到上海了
    [转]强悍!情书居然能写得如此专业
    asp.net控件开发基础(23)
    当你遇到internal的时候
    asp.net控件设计时支持(3)
    asp.net控件设计时支持(5)
    CS中的缓存类,保证都看的懂
    快要毕业了
    asp.net控件设计时支持(4)
  • 原文地址:https://www.cnblogs.com/sevck/p/14944670.html
Copyright © 2011-2022 走看看