阿里雲 RDS 資料庫恢復到本地記錄

本文環境 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 啟動訪問即可。


分享到:


相關文章: