博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RDS 5.7的物理备份恢复到本地的方法
阅读量:6924 次
发布时间:2019-06-27

本文共 3140 字,大约阅读时间需要 10 分钟。

需要本地安装的软件:

- mysql 5.7.24 版本- Percona Xtrabackup 2.4.12

注意事项:

- 本地必须是linux系统.- 不能有占用3306端口的其它程序执行.- 本次在 centos7.2 64 位系统下测试通过

恢复的详细步骤如下:

  1. 登录到RDS 控制台, 找到对应地域,在实例管理中,选择备份恢复,数据备份,点"下载".如图:
    image
  2. 在弹出的窗口中,选择复制外网地址,如图:
    image
  3. ssh登录到ecs, 执行下载命令,格式为:
wget -c '
<数据备份文件外网下载地址>
' -O
<自定义文件名>
.tar.gz
  1. 对下载的数据文件进行解压.命令如下:
tar -izxvf 
<数据备份文件名>
.tar.gz -C /home/mysql/data
  1. 查看解压后的文件:
ls /home/mysql/data

命令执行成功后,系统会返回如下结果,以 d 开头的蓝色目录表示数据库名称

image

  1. 下载并解压 percona Xtrabackup 2.4.12,并将解压后的目录改名为Xtrabackup2.4.12
wget -c 'https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/tarball/percona-xtrabackup-2.4.12-Linux-x86_64.libgcrypt11.tar.gz' -O  Xtrabackup2.4.12.tar.gztar zxvf  Xtrabackup2.4.12.tar.gzmv percona-xtrabackup-2.4.12-Linux-x86_64 Xtrabackup2.4.12
  1. 用 innobackex 恢复解压后的数据.命令如下:
./Xtrabackup2.4.12/bin/innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log  /home/mysql/data/

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

image

  1. 查看有没有在运行的mysql或占用3306端口的程序.命令如下:
    image

如上图结果为空,表示没有.

  1. 修改backup-my.cnf ,具体操作步骤如下:
    I: 用vi打开backup-my.cnf
vi /home/mysql/data/backup-my.cnf

II:按字母i键,进入编辑模式,注释如下参数,即在行首添加#号,并在尾部添加 skip-grant-tables项.

#innodb_log_checksum_algorithm=strict_crc32#innodb_fast_checksum=false#innodb_page_size=16384#innodb_log_block_size=512#redo_log_version=1#server_uuid=e4323bd1-072f-11e9-97a1-7cd30ad32d28#master_key_id=0

修改后的配置文件应是如下内容:

# The MySQL server[mysqld]innodb_checksum_algorithm=crc32#innodb_log_checksum_algorithm=strict_crc32innodb_data_file_path=ibdata1:200M:autoextendinnodb_log_files_in_group=2innodb_log_file_size=1048576000#innodb_fast_checksum=false#innodb_page_size=16384#innodb_log_block_size=512innodb_undo_directory=./innodb_undo_tablespaces=0server_id=1960504189#redo_log_version=1#server_uuid=e4323bd1-072f-11e9-97a1-7cd30ad32d28#master_key_id=0skip-grant-tables

III:按esc键,录入 :x 退出并保存修改.

  1. 修改目录属组和权限

  2. mysql:mysql -R /home/mysql/data/
  3. 755 -R /home/mysql/data/

  4. 执行命令,启动MySQL,命令如下:
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --datadir=/home/mysql/data/  --user=mysql

注意: mysqld_safe 必须是已经加入到了系统环境变量中,否则需要写上该命令的绝对路径.

  1. 检查是否启动成功.
    命令仍为:
ps -ef|grep -i mysql|grep -v grep

如下图所示,表示启动成功.

image

  1. 登录mysql.因为设置了 skip-grant-tables,所以无须密码.命令为:
mysql

下图表示登录成功:

image

  1. 查看并修改超级账号 aliyun_root 的密码. 命令为:
select host,user from mysql.user;update mysql.user set authentication_string=password('新密码') where user='aliyun_root';

这时会报错,Unknown system variable 'maintain_user_list',如图:

image
表示有触发器.
注意: 在mysql5.7 中, aliyun_root 才是真正超级权限账号.

  1. 查看并删除触发器.命令如下:
select trigger_schema,trigger_name from information_schema.triggers;

结果如图,发现有两个sys库下的触发器.

image
删除这两个触发器,命令如下:

drop trigger sys.sys_config_insert_set_user;drop trigger sys.sys_config_update_set_user;

如下图所示,表示删除成功了.

image

  1. 再次修改密码,仍然报错.错误和14步骤中一致.这时我们还要删除触发器文件.先退出mysql,在 shell 下查找.TRG 结尾的文件,命令如下:
find /home/mysql/data/ -iname *.trg

结果如下图,表示触发器文件还在.

image
为避免误删除其它文件,我们先将它移到家目录下.命令如下:

mv /home/mysql/data/mysql/*.TRG ~

再次查询,保证移除成功,下图表示移除成功.

image

  1. 再次登录并修改 aliyun_root 的密码.命令同上,下图表示修改成功.
    image

我们退出mysql.然后关闭 mysql 服务.命令为:

mysqladmin shutdown
  1. 修改 backup-my.cnf, 注释 skip-grant-tables, 保存, 并再次启动mysql.
  2. 这次登录需要密码验证,登录命令为:
mysql -ualiyun_root -p -h127.0.0.1

回车,录入刚修改的密码后,就能登录了.如图表示成功登录.

image

  1. 因为 aliyun_root 是超级账号,有超级权限.所以可以做任何操作.

好的,整个恢复步骤就完成了.

转载地址:http://ynujl.baihongyu.com/

你可能感兴趣的文章
iOS内存暴增问题追查与使用陷阱
查看>>
linux grep命令 (学习备份)
查看>>
139.00.007 Git学习-Cheat Sheet
查看>>
2017-11-06-构建之法:现代软件工程-阅读笔记
查看>>
vue 进行 gzip压缩和服务器如何开启gzip(转)
查看>>
组合模式-虚有其表的模式
查看>>
java8 peek
查看>>
Python实现字符串反转的几种方法
查看>>
目前国际上所用云计算平台IaaS、PaaS、SaaS简介
查看>>
模式识别之预测---一元线性回归
查看>>
响应式ie8兼容问题
查看>>
[16]CSS3 边框图片效果
查看>>
mysql group_concat方法用法
查看>>
[六省联考2017]摧毁“树状图”
查看>>
利用自然数的标准分解证明可数集合的所有有限子集形成的集合是可数集
查看>>
Excel中SEARCH和FIND函数的区别
查看>>
js继承综合
查看>>
[转译]5种方法提高你网站的登录体验
查看>>
关于Grunt
查看>>
linux基础名词
查看>>