前提条件:
本地 MySQL 数据库安装在 64 位的 Linux 系统中, 且与云数据库 MySQL 版的版本相同
操作系统中已安装数据恢复工具 Percona XtraBackup 2.2.9 或以上版本
请从 Percona XtraBackup 官网下载: https://www.percona.com/downloads/XtraBackup/LATEST/
percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm 是 rpm 包安装快速
# yum localinstall percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm
操作系统中已安装数据备份文件解压工具 rds_backup_extract.sh
下载地址: http://oss.aliyuncs.com/aliyunecs/rds_backup_extract.sh?spm=a2c4g.11186623.2.6.Ng5QVG&file=rds_backup_extract.sh
操作步骤:
在阿里云 RDS 管理控制台, 在数据备份列表中, 找到要下载的数据备份, 并单击其对应的下载
具体操作步骤如下:
执行如下命令, 下载数据备份文件
wget -c '<数据备份文件外网下载地址>' -O < 自定义文件名 >.tar.gz
-c: 启用断点续传模式
-O: 将下载的结果保存为指定的文件 (建议使用 URL 中包含的文件名)
将下载的数据备份恢复到本地 MySQL 数据库中, 具体操作步骤如下:
执行如下命令, 解压已下载的数据备份文件
说明: 本文以自定义路径 / home/mysql/data 为例, 您可以根据实际情况将其替换成实际路径
1.bash rds_backup_extract.sh -f < 数据备份文件名 >.tar.gz -C /home/mysql/data
-f: 指定要解压的备份集文件
C: 指定文件要解压到的目录可选参数, 若不指定就解压到当前目录
# bash rds_backup_extract.sh -f hins2642811_data_20180227013214.tar.gz -C data
2. 执行如下命令, 查询解压后生成的文件
# ls -l data/
3. 执行如下命令, 恢复解压好的备份文件
- innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
- # innobackupex --defaults-file=data/backup-my.cnf --apply-log data
4. 为避免版本问题, 需修改 backup-my.cnf 参数, 具体操作步骤如下
执行如下命令, 以文本方式编辑 backup-my.cnf 文件
# vi /home/mysql/data/backup-my.cnf
执行如下命令, 注释掉如下参数
- #innodb_fast_checksum
- #innodb_page_size
- #innodb_log_block_size
如果报错这两个也注释
- # innodb_checksum_algorithm=innodb
- # innodb_log_checksum_algorithm=innodb
- # innodb_undo_directory=.
- # innodb_undo_tablespaces=0
- # rds_encrypt_data=false
- # innodb_encrypt_algorithm=aes_128_ecb
按 Esc 键, 然后输入: wq 进行保存并关闭编辑器
=============================================================
安装 mysql-server
下载地址: https://dev.mysql.com/downloads/mysql/
mysql 5.6 下载地址:
https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-server-5.6.39-1.el6.x86_64.rpm
mysql 5.7 下载地址:
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-server-5.7.21-1.el6.x86_64.rpm
这个版本是: Server version: 5.1.73
# yum -y install mysql-server mysql-develop mysql
升级 mysql 版本:
- # yum -y remove mysql-server mysql-develop mysql
- # yum localinstall MySQL-server-5.6.39-1.el6.x86_64.rpm
报错: file /usr/share/mysql/charsets/dec8.xml from install of MySQL-server-5.6.39-1.el6.x86_64
conflicts with file from package mysql-libs-5.1.73-8.el6_8.x86_64
看到 conflicts, 是产生冲突了, 文件 / usr/share/mysql/charsets/*
需要 MySQL-server-5.6.19-1.linux_glibc2.5.x86_64 版本的, 而系统已经存在 mysql-libs-5.1.73-8.el6_8.x86_64 版本的!
解决办法:
执行以下命令, 删除 mysql-libs-5.1.73-8.el6_8.x86_64:
# yum -y remove mysql-libs-5.1.73*
再执行以下命令安装 MySQL:
# yum localinstall MySQL-server-5.6.39-1.el6.x86_64.rpm
安装成功了
安装 mysql 客户端:
下载地址: https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-client-5.6.39-1.el6.x86_64.rpm
- # yum -y localinstall MySQL-client-5.6.39-1.el6.x86_64.rpm
- =============================================================
5. 执行如下命令, 修改文件属主, 并确定文件所属为 MySQL 用户
- chown -R mysql:mysql /home/mysql/data
- # chown -R mysql:mysql data
6. 执行如下命令, 启动 MySQL 进程
- mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
- # mysqld_safe --defaults-file=/opt/data/backup-my.cnf --user=mysql --datadir=/opt/data &
7. 执行如下命令, 登录 MySQL 数据库以验证进程启动成功
mysql -uroot
8. 恢复完成后, 表 mysql.user 中不包含在 RDS 实例中创建的用户, 需要新建在新建用户前, 执行如下命令
- 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;
9. 创建用户:
报错: mysql> grant all on *.* to xiaoyeyun@"%" identified by "xiaoyeyun";
- ERROR 1558 (HY000): Column count of mysql.user is wrong. Expected 43, found
- 42. Created with MySQL 50518, now running 50639.
- Please use mysql_upgrade to fix this error.
按照问题描述执行修复:
- mysql_upgrade mysql -h 192.168.1.2 -u xxx -p
- # mysql_upgrade mysql
创建用户成功
- mysql> grant all on *.* to xiaoyeyun@"%" identified by "xiaoyeyun";
- Query OK, 0 rows affected (0.00 sec)
- mysql> select user,host from mysql.user;
- +-----------+-----------+
- | user | host |
- +-----------+-----------+
- | xiaoyeyun | % |
- | root | 127.0.0.1 |
- | root | ::1 |
- | root | localhost |
- +-----------+-----------+
- 4 rows in set (0.00 sec)
- mysql>
来源: http://www.bubuko.com/infodetail-2509934.html