阿里云RDSMySql还原到本地Linux
本文使用的是:MySql5.7;centos 7.x;Percona xtrabackup 2.4
具体可以参考:阿里云RDS还原官方文档
因centos7.x 默认自带MariaDB,所以得先卸载掉MariaDB,不卸载后续会出现mysql起不来的问题。
centos7.x 卸载MariaDB命令:首先运行命令
rpm -qa | grep mariadb
查看MariaDB版本名称
卸载MariaDB命令
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 #mariadb-libs-5.5.56-2.el7.x86_64是查询到的版本名称
至此卸载MariaDB完成。
为了方便mysql采用yum安装方式:
MySql5.7下载地址:
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
下载完成后执行
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
执行完成后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo
注意: 必须进入到 /etc/yum.repos.d/目录后再执行以下脚本
yum install mysql-server
后续一直y即可
安装这一步时候会很慢,可以同时多开窗口同时下载RDS文件备份(磁盘空间原因本文下载在/usr/local/src/)同时下载Percona xtrabackup2.4(5.7使用2.4版本)
rds下载命令:
wget -c '阿里云rds备份还原外网地址' -O 数据备份文件名(可以自由取名).tar.gz
Percona xtrabackup工具:
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm
MySql安装完不要启动mysql服务
yum安装是my.cnf 默认在/etc下面;执行命令
Vim /etc/my.cnf
在my.cnf配置中添加如下配置:
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
innodb_undo_tablespaces=0
server_id=999098802
sql_mode=''
kip-grant-tables
安装percona-release;percona-xtrabackup
先安装percona-release :
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
再次执行:
yum update percona-release
在percona-xtrabackup文件目录下执行:
yum install percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm
安装完成可以在任何目录下执行:inno
后加table健 如出现innobackupex innochecksum
则安装成功
注:如果出现安装冲突
Transaction check error: file /etc/my.cnf from install of Percona-Server-shared-56-5.6.37-rel82.2.el7.x86_64 conflicts with file from package mysql-community-server-5.7.19-1.el7.x86_64
解决办法:
1查看是否存在:
rpm -qa|grep -i mysql
得出下列结果
mysql-community-common-5.7.28-1.el7.x86_64
mysql57-community-release-el7-9.noarch
mysql-community-client-5.7.28-1.el7.x86_64
mysql-community-server-5.7.28-1.el7.x86_64
perl-DBD-MySQL-4.023-6.el7.x86_64
mysql-community-libs-5.7.28-1.el7.x86_64
mysql-community-libs-compat-5.7.28-1.el7.x86_64 #此时这个是不存在的
需要把标识出来不存在的安装
2执行命令
yum list |grep -i mysql|grep libs-compat
出现如下
mysql-community-libs-compat.i686 5.7.23-1.el7 mysql57-community
mysql-community-libs-compat.x86_64 5.7.23-1.el7 mysql57-community
3执行安装
yum install mysql-community-libs-compat -y
yum install percona-toolkit -y
都执行完,在重新执行
yum install percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm
解压rds下载的文件
yum安装 mysql 数据文件夹默认在 /var/lib/mysql
进入下载的rds备份文件夹(本文的地址在/usr/local/src/
)
解压指令:tar -izxvf 数据备份文件名(可以自由取名).tar.gz -C /var/lib/mysql
根据备份文件大小,解压时间不一
解压完成进入
cd /var/lib/mysql
执行附加命令:
innobackupex --defaults-file=backup-my.cnf --apply-log /var/lib/mysql
注:会解压出来的大小和my.cnf配置的innodb_log_file_size大小不一致错误
#错误提示如下:
dbi:mysql:;mysql_read_default_group=xtrabackup;host=10.192.200.107;port=3307;mysql_socket=/tmp/mysql.sock' as 'root' (using password: YES).
160419 09:40:49 version_check Connected to MySQL server
160419 09:40:49 version_check Executing a version check against the server...
160419 09:40:53 version_check Done.
160419 09:40:53 Connecting to MySQL server host: 10.192.200.107, user: root, password: set, port: 3307, socket: /tmp/mysql.sock
Using server version 5.5.29-log
innobackupex version 2.3.2 based on MySQL server 5.6.24 Linux (x86_64) (revision id: 306a2e0)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /data/server/mysql_3307/data
xtrabackup: open files limit requested 0, set to 1024
xtrabackup: using the following InnoDB configuration:
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 5242880
InnoDB: Error: log file ./ib_logfile0 is of different size 50331648 bytes
InnoDB: than specified in the .cnf file 5242880 bytes!
解决方法:
1进入
/var/lib/mysql
查看是否有ib_logfile
文件,不要直接删除 最好备份
mv ib_logfile ib_logfile_bak
2修改mysql配置文件my.cnf
中innodb_log_file_size
值大小为50331648 (根据上面报错的信息修改)
操作完再次执行:
innobackupex --defaults-file=backup-my.cnf --apply-log /var/lib/mysql
完成后出现completed OK!
表示成功
成功后执行:
chown -R mysql:mysql /var/lib/mysql
后续:
此时登录mysql.因为设置了 skip-grant-tables,所以无须密码。
查询:select user,host from mysql.user;
出现有aliyun_root@127.0.0.1账号或者线上数据库账号也在,说明rds的账号已经还原进来了。
此时账号只能在本机访问:修改访问权限update mysql.user set host='%' where user='aliyun_root';
修改密码:update mysql.user set authentication_string=password('新密码') where user='aliyun_root';
注:出现Unknown system variable 'maintain_user_list错误;表示有触发器
解决办法:
mysql中执行:select trigger_schema,trigger_name from information_schema.triggers;
发现有两个sys库下的触发器
±---------------±---------------------------+
| trigger_schema | trigger_name |
±---------------±---------------------------+
| sys | sys_config_insert_set_user |
| sys | sys_config_update_set_user |
±---------------±---------------------------+
删除这两个触发器:drop trigger sys.sys_config_insert_set_user;drop trigger sys.sys_config_update_set_user;
再次修改进行修改后如果还是报错;
进入cd /var/lib/mysql/
后在执行:cd ./mysql
执行 find -iname *.trg
会发现:user.TRG;proxies_priv.TRG这两个文件
保险起见把他们拷贝到跟目录下:mv *.TRG ~
执行完成再次执行修改访问权限,修改密码。
后续就是开放防火墙端口。
至此全部完成。