本文基于 Ubuntu 14.04 系統和 mysql 5.5 版本進行演示。請確保云 RDS 數據庫的 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 目錄下,請根據實際情況修改路徑或創建該目錄。
將從阿里云下載的數據庫備份文件解壓到 /home/mysql/data 目錄:
cd /home/mysql/data tar -zxvf hins123123_data_20180107052346.tar.gz
更改數據庫文件權限(通常為 mysql:mysql):
chown -R mysql:mysql /home/mysql/data
使用 innobackupex 恢復數據庫:
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
嘗試啟動 MySQL 服務:
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data
檢查錯誤日志,并根據錯誤信息修改 /home/mysql/data/backup-my.cnf 文件。 例如,注釋掉 backup-my.cnf 文件中導致錯誤的行,示例如下:
# 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 <-- 注釋掉報錯的行
請根據實際報錯信息進行注釋,不要直接復制粘貼以上內容。
保存并退出后,重新啟動 MySQL 服務,并嘗試使用 root 用戶登錄 (RDS 數據庫的 root 密碼默認為空)。 如果無法登錄,請參考后續步驟。
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data mysql -uroot
在創建新用戶之前,執行以下命令清除 root 用戶權限:
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>
然后替換 /home/mysql/data/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 服務。
將 /home/mysql/data/backup-my.cnf 文件中的內容復制到 /etc/mysql/my.cnf 文件中,覆蓋原有內容。
最后,啟動 MySQL 服務并測試訪問:
/etc/init.d/mysql start
請務必仔細檢查每個步驟,并根據實際情況調整路徑和配置。 如有任何疑問,請參考 MySQL 和 Percona Xtrabackup 的官方文檔。