• 阿里云RDS备份的tar格式包恢复到本地自建数据库


    说明

    阿里云RDS-mysql数据库是通过percona-Xtrabackup进行备份的,所以恢复时也需要安装该软件。

    另外注意的是:你自己下载的MySQL版本要和阿里云上的MySQL版本一致,不然会出问题!

      1、下载percona-Xtrabackup

    安装这个软件的方式有很多种,推荐二进制方式,这样下载解压后就可以直接使用,省去了编译的麻烦。

    下面是链接:

    https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.2/binary/

    安装好之后使用如下命令测试是否成功安装:

    ls data/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex --version
    
    ls (GNU coreutils) 8.4
    Copyright (C) 2010 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    Written by Richard M. Stallman and David MacKenzie.
    

      2、解压备份文件(就是tar包)

    阿里云官网文档推荐使用一个工具来解压,rds_backup_extract.sh,其实就是一个shell脚本!

    然后执行如下命令行:

    bash rds_backup_extract.sh -f /home/mysql/backup/hins575175_xtra_20150429091224.tar.gz -C /home/mysql/data
    

      这里有一个坑!官网没有说清楚,要把文件解压到MySQL的数据目录,而不是随便的一个目录!

      (其实直接使用tar xf解压是一样的,个人觉得,为了保险还是推荐官网的方式!)

      3、恢复数据文件

    使用过percona软件的人都了解,会有一个恢复文件的步骤,执行如下命令行即可:

    innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
    

      说明:backup-my.cnf也是在数据目录下,--apply-log选项后面接的也是数据目录。

         命令执行成功后会有completed ok!的显示。

      4、修改配置文件

    编辑数据目录下的backup-my.cnf文件,注释三行代码即可:

    [mysqld]
    innodb_checksum_algorithm=innodb
    innodb_log_checksum_algorithm=innodb
    innodb_data_file_path=ibdata1:200M:autoextend
    innodb_log_files_in_group=2
    innodb_log_file_size=1048576000
    #innodb_fast_checksum=false
    #innodb_page_size=16384
    #innodb_log_block_size=512
    innodb_undo_directory=.
    innodb_undo_tablespaces=0
    
    
    rds_encrypt_data=false
    innodb_encrypt_algorithm=aes_128_ecb
    

      5、修改文件的权限

    需要将数据目录下的文件属主和属组改为mysql,执行如下命令行:

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

      6、启动mysql进程并登陆验证

    service mysqld restart
    
    mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
    

      命令的执行完成可能要等一会儿,有点耐心,一般几分钟而已(园主的2分钟以内)。

    登陆数据库验证:

    mysql -uroot -p
    
    >show databases;

      7、重新建立授权用户

    恢复完成后,表 mysql.user 中是不包含 RDS 中创建的用户,需要新建。

    创建授权用户之前执行下面3条sql
    >delete from mysql.db where user<>'root' and char_length(user)>0;
    >delete from mysql.tables_priv where user<>'root' and char_length(user)>0;
    >flush privileges;
    
    如果直接复制粘贴官网的语句会报错!原因是引号错误,自己需要把引号改一改!
    
    >grant all on 'user01'@'%' IDENTIFIED BY 'password01';
    >flush privileges;
    
    说明:%表示可以远程连入数据库,不想远程连接可以改为localhost。
    

      好了!到此为止,数据恢复完成!因为软件的原因,恢复仅限Linux系统进行,但是可以在Windows上用客户端工具连入数据库。

  • 相关阅读:
    好玩的SQL
    Oracle常用函数
    树控件DeleteAllItems之前先SelectItem(NULL)
    MFC控件位置调整
    C++中一个0xC0000005访问冲突问题
    为MFC按钮添加各种图片
    LVN_ITEMCHANGED(OnItemchanged)通知响应多次的问题
    android 里边的mk文件的解析
    定义属于自己的标题栏
    block 影响代码执行由上往下执行顺序 从而影响功能的解决
  • 原文地址:https://www.cnblogs.com/leomei91/p/7135833.html
Copyright © 2020-2023  润新知