恢复阿里云数据库mysql的备份文件到自定义数据库

 

开源软件Percona Xtrabackup可以用于对数据库进行备份恢复,您可以使用该软件将云数据库MySQL的备份文件恢复到自建数据库中,本文将介绍详细的操作步骤。

说明

注意事项

本文使用Linux7的操作系统以及MySQL5.7版本为例进行演示。

  • 操作系统中已安装数据恢复工具Percona XtraBackup,您可以从Percona 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

  • 2019年2月20日后创建的MySQL 5.6实例,数据备份文件的格式为xbstream文件包 (_qp.xb 后缀)。
  • 本地MySQL数据库安装在64位的Linux系统中,且与云数据库MySQL版的版本相同。

    说明 由于软件限制,目前只支持将云数据库MySQL的备份文件恢复到安装在Linux系统中的自建MySQL数据库中。

前提条件

实例版本如下:

  • MySQL 8.0高可用本地盘版
  • MySQL 5.7高可用本地盘版
  • MySQL 5.6
  • MySQL 5.5

备份恢复操作步骤

  1. 登录RDS管理控制台
  2. 在页面左上角,选择实例所在地域。
  3. 找到目标实例,单击实例ID。
  4. 在左侧导航栏中单击备份恢复
  5. 选择数据备份标签页。
  6. 选择查询的时间范围,然后单击查询。
  7. 在数据备份列表中,找到要下载的数据备份,并单击其右侧的下载。

    说明 如果没有下载按钮,请确认您的实例版本是否支持下载物理备份文件


    下载数据备份
  8. 在实例备份文件下载窗口,单击复制外网地址,获取数据备份文件外网下载地址。
    复制外网下载地址
  9. 登录云服务器ECS。
  10. 执行如下命令,下载数据备份文件。
    wget -c '<数据备份文件外网下载地址>' -O <自定义文件名>.tar.gz
    					
    或者 wget -O '文件名' "外网下载地址"
  11. 说明
    • -c:启用断点续传模式。
    • -O:将下载的结果保存为指定的文件(使用URL中包含的文件名后缀 .tar.gz 、.xb.gz 或 _qp.xb)。
  12. 执行如下命令,解压已下载的数据备份文件。

    说明 本文以自定义路径/home/mysql/data为例,您可以根据实际情况将其替换成实际路径。

    目前物理备份集文件有3种格式:

    • tar 压缩包 (.tar.gz 后缀)
    • xbstream 压缩包 (.xb.gz 后缀)
    • xbstream 文件包 (_qp.xb 后缀)(注:采取这种方式需要把文件后缀更改为_qp.xb)

    说明 2019年2月20日后创建的MySQL 5.6实例,数据备份文件的格式为xbstream文件包 (_qp.xb 后缀)。

    对于tar 压缩包 (.tar.gz 后缀),使用命令:

    tar -izxvf <数据备份文件名>.tar.gz -C /home/mysql/data

    对于xbstream 压缩包 (.xb.gz 后缀),使用命令:

    gzip -d -c <数据备份文件名>.xb.gz | xbstream -x -v -C /home/mysql/data

    对于xbstream 文件包 (_qp.xb 后缀),使用命令:

    ## 解包
    cat <数据备份文件名>_qp.xb | xbstream -x -v -C /home/mysql/data
    ## 解压
    innobackupex --decompress --remove-original /home/mysql/data

    说明 -C:指定文件要解压到的目录。可选参数,若不指定就解压到当前目录。

  13. 执行如下命令,查询解压后生成的文件。
    ls -l /home/mysql/data
    					

    命令执行成功后,系统会返回如下结果,其中蓝色字体为生成备份文件时RDS实例所包含的数据库。


    查看解压文件
  14. 执行如下命令,恢复解压好的备份文件。
    innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
    					

    若系统返回如下类似结果,则说明备份文件已成功恢复到本地数据库。


    恢复成功

    说明 请确保您的Percona XtraBackup版本正确,MySQL 5.6及之前的版本需要安装 Percona XtraBackup 2.3,MySQL 5.7版本需要安装 Percona XtraBackup 2.4,MySQL 8.0版本需要安装 Percona XtraBackup 8.0。

  15. 为避免版本问题,需修改backup-my.cnf参数,具体操作步骤如下。
    1. 执行如下命令,以文本方式编辑backup-my.cnf文件。
      vi /home/mysql/data/backup-my.cnf
      							
    2. 自建数据库不支持如下参数,需要注释掉。
      #innodb_log_checksum_algorithm
      #innodb_fast_checksum
      #innodb_log_block_size
      #innodb_doublewrite_file
      #rds_encrypt_data
      #innodb_encrypt_algorithm
      #redo_log_version
      #master_key_id
      说明
      • 如果本地使用的是MyISAM引擎,和阿里云的InnoDB不兼容,需要多注释掉如下参数并增加skip-grant-tables参数:
        #innodb_log_checksum_algorithm=strict_crc32
        #redo_log_version=1
        skip-grant-tables
      • 如果本地使用的是MyIAM引擎,且对系统表进行操作时报错(存储引擎相关),请按如下操作进行存储引擎的转换:
        alter engine <表名> engine=myisam;
    3. Esc键,然后输入:wq并回车进行保存。
  16. 执行如下命令,修改文件属主,并确定文件所属为MySQL用户。
    chown -R mysql:mysql /home/mysql/data
    					
  17. 重置mysql数据库密码  参考 https://www.cnblogs.com/itor/p/6339505.html
  18. 执行如下命令,登录MySQL数据库以验证进程启动成功。

    mysql -uroot -p<数据库密码>
    					

    若系统返回如下结果,进程启动成功,则说明已成功执行参数注释和修改文件属主。


    启动成功

### 如何在阿里云上进行Docker数据库备份 #### 使用Docker命令进行MySQL RDS备份 对于位于阿里云上的关系型数据库服务(RDS),可以通过进入容器内部执行`mysqldump`来完成全量的手动备份操作。具体来说,在拥有相应权限的情况下,可以利用如下命令实现: ```bash docker exec -it mysql-xhy bash mysqldump -h fks.mysql.rds.aliyuncs.com -uroot -p123456789 -R -E --set-gtid-purged=OFF boot_security_new > boot_security_new.sql ``` 这条指令会连接到指定地址的MySQL服务器,并导出名为`boot_security_new`的数据表结构及其内容至当前工作路径下的SQL脚本文件中[^2]。 #### 利用Docker Volume机制保护重要资料 为了确保即使主机发生故障也能安全保存重要的应用数据,建议采用Docker Volumes特性。这允许用户定义持久化的存储区域,使得即便容器被删除或重建时也不会丢失其中的信息。当涉及到数据库实例时,通常的做法是把实际存放表格记录的位置映射给宿主机的一个固定位置,从而简化后续可能需要做的迁移或是恢复流程[^4]。 #### 创建自定义镜像作为另一种形式的备份方案 除了传统的逻辑层面上的备份手段外,还可以考虑构建基于现有环境配置而成的新版本镜像。这样做不仅能够保留整个系统的状态,而且便于分发和部署。例如,如果有一个正在运行中的PostgreSQL容器,则可通过下面的方式将其转化为可移植的形式: ```bash docker commit -a="Your Name" -m="Description of changes made" container_id repository_name:tag ``` 此过程将会生成一个新的镜像条目于本地仓库之中,之后便能上传至诸如阿里云这样的第三方平台供以后调用了[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值