25

阿里云 RDS 数据库恢复到本地记录

 5 years ago
source link: https://www.linuxprobe.com/rds-recovery-local.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文环境 Ubuntu14.04 / Mysql 5.5

注:云RDS的 mysql 要与本地的 mysql 版本一致

安装Percona Xtrabackup
# wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc)_all.deb
# dpkg -i percona-release_0.1-3.$(lsb_release -sc)_all.deb
# apt-get update
# apt-get install percona-xtrabackup-24
安装mysql服务和客户端,记住这里设置的 root 密码
# apt-get install mysql-server mysql-client
停止 mysql 数据库
# /etc/init.d/mysql stop
本文以 /home/mysql/data 目录为例,请自行修改或者自行创建
# cd /home/mysql/data
解压从阿里云下载的数据库备份文件
# tar -zxvf hins123123_data_20180107052346.tar.gz  
更改数据库文件权限(默认是 mysql:mysql)
# chown -R mysql:mysql /home/mysql/data
恢复解压好的数据库文件
# innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
尝试启动数据库,注意路径,本文以 /home/mysql/data 目录为例,请自行修改或者自行创建
# mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data
自行查看报错日志,在 backup-my.cnf 里面把所有报错的项目注释掉

看 error 行就行了,自己解决或者百度都有答案,下面以本人为例,报错项目已经被标红且注释掉

# vim /home/mysql/data/backup-my.cnf

# This MySQL options file was generated by innobackupex.
# The MySQL server
[mysqld]
datadir=/home/mysql/data
user=mysql
skip-grant-tables
#innodb_checksum_algorithm=innodb
#innodb_log_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1048576000
#innodb_fast_checksum=false
#innodb_page_size=16384
#innodb_log_block_size=512
#innodb_undo_directory=.
#innodb_undo_tablespaces=0

# 请根据自己的错误进行注释,不要照搬。

修改后保存退出,重新启动服务,并尝试访问(RDS数据库的 root 密码默认为空)

# mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data
#mysql -uroot
正常即可进入 mysql 的控制台界面。在创建用户前,需要执行以下命令
mysql> delete from mysql.db where user'root' and char_length(user)>0;
mysql> delete from mysql.tables_priv where user'root' and char_length(user)>0;
mysql> flush privileges;

如果不能成功进入数据库,需要先停止 mysql 服务进行修改

# ps -ef |grep mysql
# kill mysql的进程ID

然后把最开始安装的 mysql 库替换掉备份下来的 mysql 库

# rm -R /home/mysql/data/mysql
# cp -R /var/lib/mysql/mysql /home/mysql/data/mysql

再次启动 mysql 服务

# mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data
# mysql -uroot -p 

成功后检查数据库是否能正常访问,查看日志是否有报错。确定无异常后,关闭 mysql 服务进程。

修改 /etc/mysql/my.cnf

把 backup-my.cnf 文件里的内容覆盖到 my.cnf 里

然后/etc/init.d/mysql start 启动访问即可。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK