RDS FOR MYSQL 各版本利用物理备份进行本地恢复的方法

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: RDS for mysql利用物理备份文件进行本地恢复笔记,包含5.5,5.6,5.7,8.0版本


下面文档讲述RDS FOR MYSQL 各版本利用物理备份进行本地恢复的方法(5.5(文档末尾才有5.5恢复方法),5.6,5.7 ,8.0):

说明:

1. 本地自建Mysql数据必须和云rds for mysql版本大版本保持一致 2. 64位的Linux系统 3. MySQL 5.6及之前(含5.5)的版本需要安装 Percona XtraBackup 2.3 ; MySQL 5.7版本需要安装 Percona XtraBackup 2.4;MySQL 8.0版本需要安装 Percona XtraBackup 8.0

4. 为了快速恢复,本地mysql安装都采用centos的yum安装方式



5.7/5.6恢复示例:

安装mysql:
1.下载yum源
centos6系统执行下面下载安装: wget 
https://repo.mysql.com//mysql80-community-release-el6-1.noarch.rpm

yum localinstall mysql80-community-release-el6-1.noarch.rpm
centos7系统执行下面下载安装: wget  https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm yum localinstall mysql80-community-release-el7-1.noarch.rpm 2.配置yum源
yum -y install yum-utils

#根据选择安装需要的版本 mysql5.7版本:
yum-config-manager --disable   mysql80-community yum-config-manager --enable   mysql57-community mysql5.6版本: yum-config-manager --disable   mysql80-community  yum-config-manager --enable   mysql56-community
3.安装mysql server (yum安装完成后不慌启动mysql)
yum install mysql-community-server
4.替换/etc/my.cnf文件,其中包括跳过权限表启动的配置项:

[mysqld]
innodb_checksum_algorithm=crc32
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=524288000
innodb_undo_directory=/var/lib/mysql/
basedir=/usr
datadir=/var/lib/mysql
innodb_undo_tablespaces=0
server_id=999098802
skip-grant-tables=1
sql_mode=''
1).配置yum源
yum install yum update percona-release


2). 查看yum源,选择要安装的percona xtrabackup软件
yum list | grep percona
yum -y install percona-xtrabackup.x86_64           5.6版本需要安装这个 yum -y install percona-xtrabackup-24.x86_64 5.7版本需要安装这个 yum -y install percona-xtrabackup-80.x86_64 8.0版本安装这个

6.下载备份文件并恢复:

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

  • tar 压缩包 (.tar.gz 后缀)
  • xbstream 压缩包 (.xb.gz 后缀)
  • xbstream 文件包 (_qp.xb 后缀)

根据RDS获取的下载地址下载相应物理备份文件,注意下载文件名可能有不同: wget -c 'rds备份文件下载地址 -O bak.tar.gz 这个到RDS控制台备份恢复里面去获取备份集下载地址,注意下载地址这里用wget下载需要用单引号引起来,否则会报403错误

例如: wget -c 'https://rdsbak-bj-v4.oss-cn-beijing.aliyuncs.com/custins15680923/hins8532551_data_20190812213747_qp.xb?OSSAccessKeyId=LTAIyKzxtSYNknVO&Expires=1565792827&Signature=kz%2F842LvRYwLuU6q9%2BVyZF70pZY%3D'   -O bak_qp.xb wget -c 'https://rdsbak-bj-v4.oss-cn-beijing.aliyuncs.com/custins15680923/hins8532551_data_20190812213747.tar.gz?OSSAccessKeyId=LTAIyKzxtSYNknVO&Expires=1565792827&Signature=kz%2F842LvRYwLuU6q9%2BVyZF70pZY%3D'     -O bak.tar.gz 备注: 获取的下载地址链接里面就包含了rds备份文件的名字,例如上面两个就分别是:hins8532551_data_20190812213747_qp.xb  hins8532551_data_20190812213747.tar.gz
解压备份文件:

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

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

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

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

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

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

说明: 你下载的备份文件在哪个目录下,就在下载的备份文件目录执行解压,-C指定解压到/var/lib/mysql目录,因为yum安装的datadir是这个
cd  /var/lib/mysql
innobackupex --defaults-file=backup-my.cnf --apply-log /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
/etc/init.d/mysqld start
更新aliyun_root@127.0.0.1密码:
mysql     #shell里面执行mysql连接mysql并修改密码 mysql>select user,host from mysql.user; 查看是否有aliyun_root@127.0.0.1这个用户,可根据需要来设置根据这个sql查看到有的账号密码
mysql>flush privileges;
mysql>SET PASSWORD FOR 'aliyun_root'@'127.0.0.1' = PASSWORD('MyNewPass');
mysql>exit
删除/etc/my.cnf里面的skip-grant-tables=1​​​​​​
/etc/init.d/mysqld restart
账号也迁移过来了的,可以用账号云mysql的账号登陆了:

登陆:
mysql -ualiyun_root -h127.0.0.1 -pMyNewPass 这里注意登陆需要用到-h127.0.0.1,因为RDS里面没有localhost主机的链接地址,不指定会报错
mysql>use mysql;
mysql>alter table proc engine=myisam;
mysql>alter table event engine=myisam;
mysql>alter table  func engine=myisam;

==================================================================== mysql 8.0恢复:

1.下载yum源

centos6系统执行下面下载安装:
wget 
https://repo.mysql.com//mysql80-community-release-el6-1.noarch.rpm

yum localinstall mysql80-community-release-el6-1.noarch.rpm

centos7系统执行下面下载安装:
wget  https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
yum localinstall mysql80-community-release-el7-1.noarch.rpm



2.配置yum源

yum -y install yum-utils

3.安装mysql server (yum安装完成后不慌启动mysql)

yum install mysql-community-server


4.替换/etc/my.cnf文件,其中包括跳过权限表启动的配置项:
[mysqld]
lower_case_table_names = 1
innodb_checksum_algorithm=crc32
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=524288000
innodb_undo_directory=/var/lib/mysql/
basedir=/usr
datadir=/var/lib/mysql
#innodb_undo_tablespaces=0
server_id=999098802
skip-grant-tables=1
sql_mode=''
log_error=/var/lib/mysql/mysqld.err





1).配置percona yum源

yum update percona-release





2). 查看yum源,选择要安装的percona xtrabackup软件

yum list | grep percona

yum -y install percona-xtrabackup-80.x86_64       8.0版本安装这个
yum -y install qpress



6.下载备份文件并恢复:


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



  • tar 压缩包 (.tar.gz 后缀)
  • xbstream 压缩包 (.xb.gz 后缀)
  • xbstream 文件包 (_qp.xb 后缀)



根据RDS获取的下载地址下载相应物理备份文件,注意下载文件名可能有不同:
wget -c '
rds备份文件下载地址' -O bak.tar.gz     这个到RDS控制台备份恢复里面去获取备份集下载地址,注意下载地址这里用wget下载需要用单引号引起来,否则会报403错误

例如:
wget -c 'https://rdsbak-bj-v4.oss-cn-beijing.aliyuncs.com/custins15680923/hins8532551_data_20190812213747_qp.xb?OSSAccessKeyId=LTAIyKzxtSYNknVO&Expires=1565792827&Signature=kz%2F842LvRYwLuU6q9%2BVyZF70pZY%3D'     -O bak_qp.xb

wget -c 'https://rdsbak-bj-v4.oss-cn-beijing.aliyuncs.com/custins15680923/hins8532551_data_20190812213747.tar.gz?OSSAccessKeyId=LTAIyKzxtSYNknVO&Expires=1565792827&Signature=kz%2F842LvRYwLuU6q9%2BVyZF70pZY%3D'     -O bak.tar.gz

备注: 获取的下载地址链接里面就包含了rds备份文件的名字,例如上面两个就分别是:hins8532551_data_20190812213747_qp.xb   hins8532551_data_20190812213747.tar.gz



解压备份文件:



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



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



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



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



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



## 解包
cat <数据备份文件名>_qp.xb | xbstream -x -v -C /var/lib/mysql
## 解压
cd /var/lib/mysql
xtrabackup  --decompress --remove-original --target-dir=/var/lib/mysql
   


说明: 你下载的备份文件在哪个目录下,就在下载的备份文件目录执行解压,-C指定解压到/var/lib/mysql目录,因为yum安装的datadir是这个

cd  /var/lib/mysql

xtrabackup --prepare --apply-log-only --target-dir=/var/lib/mysql

说明,如果用到分区表这步可能会有下面类似报错,这个报错直接忽略

2019-08-19T12:33:14.761704Z 0 [ERROR] [MY-010520] [Server] Invalid (old?) table or database name 'zzlogger_sale_order#p#p40'
2019-08-19T12:33:14.772460Z 0 [ERROR] [MY-010520] [Server] Invalid (old?) table or database name 'zzlogger_sale_order#p#p42'
2019-08-19T12:33:14.772736Z 0 [ERROR] [MY-010520] [Server] Invalid (old?) table or database name 'zzlogger_sale_order#p#p43'
2019-08-19T12:33:14.772900Z 0 [ERROR] [MY-010520] [Server] Invalid (old?) table or database name 'zzlogger_sale_order#p#p44'
2019-08-19T12:33:14.773254Z 0 [ERROR] [MY-010520] [Server] Invalid (old?) table or database name 'zzlogger_sale_order#p#p60'
2019-08-19T12:33:14.773650Z 0 [ERROR] [MY-010520] [Server] Invalid (old?) table or database name 'zzlogger_sale_order#p#p45'



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

mysqld --datadir=/var/lib/mysql --upgrade=force --user=mysql


更新aliyun_root@127.0.0.1密码:

mysql     #shell里面执行mysql连接mysql并修改密码
mysql>select user,host from mysql.user;   查看是否有aliyun_root@127.0.0.1这个用户,可根据需要来设置根据这个sql查看到有的账号密码

mysql>flush privileges;

mysql>alter user'aliyun_root'@'127.0.0.1' identified by 'some34QA';

mysql>exit


删除/etc/my.cnf里面的skip-grant-tables=1​​​​​​ ps -ef |grep mysql 查看先前启动的mysql进程,然后Kill下 kill -9 线程id

/etc/init.d/mysqld start (centos6执行这个) systemctl start mysqld (centos7执行这个)

账号也迁移过来了的,可以用账号云mysql的账号登陆了:



登陆:

mysql -ualiyun_root -h127.0.0.1 -pMyNewPass       这里注意登陆需要用到-h127.0.0.1,因为RDS里面没有localhost主机的链接地址,不指定会报错

==================================================================== 5.5版本的恢复: 2)   yum localinstall mysql80-community-release-el6-1.noarch.rpm
3)   yum -y install yum-utils
4)   yum-config-manager --disable mysql80-community
5)   yum-config-manager --enable mysql55-community
6)   yum install mysql-community-server -y
7)   vi /etc/my.cnf   添加下面内容,注意区别于5.6,5.7版本的内容
[mysqld]
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=524288000
basedir=/usr
datadir=/var/lib/mysql
server_id=999098802
skip-grant-tables=1
sql_mode=''


步骤3:
安装percona2.3

1)yum install 2)yum install percona-xtrabackup.x86_64


步骤4:
准备好mysql5.5的物理备份安装包,省略
假设这里获取的物理备份文件名字叫:a.tar.gz


步骤5:
开始恢复


1)tar -izxvf a.tar.gz  -C /var/lib/mysql
2)  cd /var/lib/mysql
3)  innobackupex --defaults-file=backup-my.cnf --apply-log /var/lib/mysql
4)  chown -R mysql:mysql /var/lib/mysql
5)  /etc/init.d/mysqld start
6)  mysql    直接进入mysql命令会话,进入后依次执行下面命令
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from mysql.user;
+---------------+--------------+
| user          | host         |
+---------------+--------------+
| aurora        | %            |
| replicator    | 10.151.82.81 |
| root          | 127.0.0.1    |
| root          | ::1          |
| rdsflashback  | localhost    |
+---------------+--------------+
8 rows in set (0.00 sec)

mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('MyNewPass');
Query OK, 0 rows affected (0.00 sec)

mysql> exit

可以再登陆mysql查看数据库信息:
mysql -uroot -pMyNewPass -h127.0.0.1
mysql>use mysql;
mysql>alter table proc engine=myisam;
mysql>alter table event engine=myisam;
mysql>alter table  func engine=myisam;
mysql>show databases;


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
7月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
1327 1
|
5月前
|
存储 关系型数据库 MySQL
MySQL数据库中进行日期比较的多种方法介绍。
以上方法提供了灵活多样地处理和对比MySQL数据库中存储地不同格式地日子信息方式。根据实际需求选择适当方式能够有效执行所需操作并保证性能优化。
597 10
|
5月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
491 10
|
7月前
|
存储 关系型数据库 MySQL
【赵渝强老师】使用select...into outfile语句备份MySQL
本文介绍了MySQL中使用`SELECT...INTO OUTFILE`语句将表数据导出为文本文件的方法。通过示例演示了如何备份员工表(emp)的数据,包括创建存储目录、设置权限、配置参数`secure_file_priv`以及解决相关错误的过程。字段分隔符和行终止符可自定义,确保数据格式符合需求。最后展示了备份文件的内容,验证操作成功。
551 36
|
6月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
346 11
|
7月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mysqldump备份MySQL
本文介绍了 MySQL 自带的逻辑备份工具 mysqldump 的使用方法。通过 mysqldump,可以将数据库中的数据转换为对应的 SQL 插入语句,便于备份和还原。文章详细说明了如何备份所有数据库、指定数据库及特定表,排除某些表不备份的操作,以及删除数据库后如何通过备份文件恢复数据。同时提供了视频讲解和具体命令示例,帮助用户更好地理解和应用该工具。
668 5
|
7月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mydumper备份MySQL
本文介绍了使用mydumper工具进行MySQL数据库备份与恢复的操作方法。相比单线程工作的mysqldump,mydumper支持多线程,速度提升可达10倍。其功能包括事务性表快照、快速压缩、导出binlog等,并提供详细的参数说明和操作步骤。文章通过实例演示了安装mydumper、创建存储目录、全库备份、指定数据库及表备份、删除数据库以及使用myloader恢复数据的完整流程,并附带视频讲解,帮助用户更好地理解和应用该工具。
508 0
|
7月前
|
关系型数据库 MySQL
MySQL字符串拼接方法全解析
本文介绍了四种常用的字符串处理函数及其用法。方法一:CONCAT,用于基础拼接,参数含NULL时返回NULL;方法二:CONCAT_WS,带分隔符拼接,自动忽略NULL值;方法三:GROUP_CONCAT,适用于分组拼接,支持去重、排序和自定义分隔符;方法四:算术运算符拼接,仅适用于数值类型,字符串会尝试转为数值处理。通过示例展示了各函数的特点与应用场景。
|
3月前
|
SQL 关系型数据库 MySQL
阿里云RDS云数据库全解析:产品功能、收费标准与活动参考
与云服务器ECS一样,关系型数据库RDS也是很多用户上云必买的热门云产品之一,阿里云的云数据库RDS主要包含RDS MySQL、RDS SQL Server、RDS PostgreSQL、RDS MariaDB等几个关系型数据库,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,帮助您解决数据库运维的烦恼。本文为大家介绍阿里云的云数据库 RDS主要产品及计费方式、收费标准以及活动等相关情况,以供参考。
|
4月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。

推荐镜像

更多