如何将阿里云mysql RDS备份文件恢复到自建数据库

参考地址:https://help.aliyun.com/knowledge_detail/41817.html

PS:目前恢复只支持 Linux 下进行。Linux下恢复的数据文件,无论 Windows、Linux 操作系统,MySQL 都可以正常使用

1、概述和软件说明

1.1 概述

  RDS MySQL 使用开源软件 percona-Xtrabackup 对 MySQL 数据库进行备份。需要下载该软件,然后使用该软件进行恢复。

  

  1.2 软件说明

  • 1.2.1 解压软件
  • a)  RDS的备份文件是一个压缩包,需要先解压出来,才能恢复,这里下载解压工具 rds_backup_extract.sh,目前只支持 64 位 Linux 系统
  • b) 软件使用方式:
  1. bash rds_backup_extract.sh -f backup.tar.gz/back.xb.gz  -C directory
  1. # -f 指定要解压的备份集文件
  1. # -C 指定解压到的目录;-C 参数是可选的,如果不指定就解压到当前目录,如 bash rds_backup_extract -f backup.tar.gz
  • 1.2.2 恢复软件
  • 恢复软件请下载官方的 Percona-XtraBackup(下载地址:https://www.percona.com/downloads/XtraBackup/)官方提供各种平台的安装包,请根据自己的需要下载。RDS 备份使用的版本是 2.2.9,建议下载 2.2.9 或更新的版本使用。
  • (PS: 注意要选择与自己的系统版本(查看版本命令:lsb_release -a)相对应的软件包,我当时选错了包安装时就出问题了)

2、恢复流程

2.1 下载rds备份文件

2.2 使用 rds_backup_extract.sh 工具解压备份文件

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

PS:

如果数据太大有可能解压时报错(blocked for more than 120 seconds),需要修改linux内核参数把下面内容追加到 /etc/sysctl.conf 文件中

vm.dirty_ratio = 10

vm.dirty_background_ratio = 5

原因:这个版本的内核 2.6.32 默认情况下会预留内存的 20% (由参数 vm.dirty_ratio 指定)作为 IO 的缓存,当脏页达到这个阈值时,内核会将内存中的数据写到磁盘上。写到磁盘上这个过程是有 120 秒的超时限制的,所以我们看到了 blocked for more than 120 seconds 这句话。在大内存机器上,比如64G,那么预留给 IO 缓存的内存有 12.8G。如果需要在 120秒内将 12.8G 到磁盘上需要 109MB/s (873Mbit/s) 的写速度,这个在一般磁盘上都很难达到,所以发生了这个问题

2.3 恢复数据文件

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

出现如上图说明恢复成功

2.4 配置文件修改

由于存在的版本问题,请将解压文件 backup-my.cnf 中的 红框内的参数项注释掉,如下图:

2.5 修改文件属主

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

2.6 启动 MySQL 进程并且登录验证

启动mysqld进程:

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

PS: 如果服务器原来的mysql已经启动,则需要将mysql关闭

登录mysql验证

  1. mysql -u root

PS:这里不要输入mysql的密码,直接用无密码登录

注意:

  • 恢复完成后,表 mysql.user 中是不包含 RDS 中创建的用户,需要新建。
  • 新建用户前请执行如下 SQL:
  1. delete from mysql.db where user<>‘root‘ and char_length(user)>0;
  1. delete from mysql.tables_priv where user<>‘root‘ and char_length(user)>0;
  1. flush privileges;

BY bjr 15:43:50

原文地址:https://www.cnblogs.com/widgetbox/p/8157841.html

时间: 2024-08-01 15:30:02

如何将阿里云mysql RDS备份文件恢复到自建数据库的相关文章

将GitLab数据库从阿里云PostgreSQL RDS迁移至自建的PostgreSQL服务器

阿里云RDS目前支持的是PostgreSQL 9.4,而gitlab支持的最低版本是PostgreSQL 9.6.1,不升级PostgreSQL,gitlab就无法升级,阿里云RDS短期内不进行升级,被迫无奈下只能改用自己用阿里云ECS搭建的PostgreSQL服务器.这篇随笔记录一下数据库迁移的主要步骤. 在ubuntu时安装好PostgreSQL之后,首先进入 /etc/postgresql/9.6/main 修改2个配置文件: postgresql.conf listen_addresse

我是怎么通过zabbix监控60台阿里云的RDS和redis数据库的

前言: 最近一直在做监控方面的东东,一些基本的东西基本到处都有资料也就不多说了.但是,让监控阿里云的数据库真是把我难住了.研究了许久的阿里云api,虽然代码写出来了,但是遇到一个坑,所以转换了思路,分别用redis和mysqladmin连接数据库,获取连接数和请求数,但是却获取不到实例的CPU使用率.又只好回头研究阿里云的api.花了几天终于踩完所有坑,达到自己想要的效果,具体实现过程如下: 正文: 主要添加了以下三条自定义key,第一条通过redis_cli客户端连接redis获取统计数据,第

Android应用通过JDBC直连阿里云MySQL数据库

1.设置白名单,获取外网连接地址 外部设备要访问阿里云MySQL数据库,则需要设置白名单,具体操作链接: https://help.aliyun.com/document_detail/43185.html?spm=a2c4g.11186623.2.14.d8c4110bf110vr#concept-pdr-k2f-vdb 设置白名单,再获取外网连接地址 2. 配置JDBC 配置JDBC的时候的时候将外网地址替换称IP地址即可. 外网连接地址类似:rdssoxxxxxxxxx.mysql.rds

数据从腾讯云mysql转移到阿里云mysql

条件: 1 本机和腾讯云联通 2 本机和阿里云联通 步骤: 1 通过腾讯云的跳板机,将mysql中某个指定表的数据导出,并下载到本机(~/download),导出脚本如下: mysqldump -uroot -proot db_name table_name > /tmp/table_name.sql 2 通过本机登陆阿里云上的mysql mysql -h阿里云IP -u阿里云mysql用户名 -p阿里云mysql密码 3 远程登陆阿里云mysql之后,通过如下命令来导入 从腾讯云下载的数据:

为上阿里云(RDS),有人掏钱又出力?Why?

周剑飞是阿里云几十万客户中的一个.我们在阿里云的一次线上活动上认识,经过几次聊天知道了他的故事.现在整个阿里云关系型数据库RDS团队的人都知道,周剑飞是RDS的一个"死忠"客户,自己花了好几天时间,把MySQL数据库从4.0升级到5.5,研究编码重构,就是为了用上RDS. 这其实挺触动神经的.屏幕另一头我们从未见过,身处深圳的客户,对我们竟然有如此的信任,愿意为使用我们的一个产品,将自己另一个能继续用的产品换了.这就是王坚博士那句"云计算是个信任生意" 的真实写照.

开发反应执行阿里云mysql语句报错

错误图片: 解决: 对比测试服务器与阿里云正式服务器mysql字符编码格式如下:(不同的字符集全部更换,因为测试服上的都是可行的,挪到正式服上就出现问题了) 执行语句: show variables like "char%"; SET character_set_results=utf8mb4;(不重启) show variables like "collation%"; set collation_database=utf8mb4_general_ci;(重启)

阿里云-mysql托管错误日志ajax获取

function collectionLog() { var str = ""; $.get('/api/rds/DescribeErrorLogs.json?DBInstanceId=rdsa4rpdz4cyig0qteo0g&EndTime=2016-08-14T16:00Z&PageNumber=1&StartTime=2016-08-13T16:00Z&__preventCache=1471255093654', function(data) {

Navicat连接阿里云Mysql遇到的的坑

连上去那一刻,心态真是起飞了?? 下面笔者总结安装Mysql开始所遇到的坑(Ps 笔者是阿里云的Centos6.8): ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 出现类似上面问题的,就是说 你登录的账号是需要密码的,意思是没有使用密码的[email protected] 拒绝访问 先走一遍安装流程: 1 . 进入系统 使用 su 命令 进入 root 权限. 2 . 使用

将GitLab的数据库导入阿里云PostgreSQL RDS

GitLab的数据库用的是PostgreSQL,之前由于阿里云RDS不支持PostgreSQL,只能将GitLab的数据库部署在云服务器上. 6月1日得知阿里云推出了PostgreSQL RDS,于是立马将GitLab的数据库迁移至PostgreSQL RDS. 下面分享一下迁移的主要操作步骤: 1)在GitLab服务器上备份GitLab数据库 操作命令: sudo gitlab-rake gitlab:backup:create SKIP=db 注:这个命令原本是只备份数据库,但实际运行时也会