說明
阿里雲RDS-mysql數據庫是通過percona-Xtrabackup進行備份的,所以恢復時也需要安裝該軟件。
另外注意的是:你自己下載的MySQL版本要和阿里雲上的MySQL版本一致,不然會出問題!
1、下載percona-Xtrabackup
安裝這個軟件的方式有很多種,推薦二進制方式,這樣下載解壓后就可以直接使用,省去了編譯的麻煩。
下面是鏈接:
https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.2/binary/
安裝好之后使用如下命令測試是否成功安裝:
ls data/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex --version ls (GNU coreutils) 8.4 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Richard M. Stallman and David MacKenzie.
2、解壓備份文件(就是tar包)
阿里雲官網文檔推薦使用一個工具來解壓,rds_backup_extract.sh,其實就是一個shell腳本!
然后執行如下命令行:
bash rds_backup_extract.sh -f /home/mysql/backup/hins575175_xtra_20150429091224.tar.gz -C /home/mysql/data
這里有一個坑!官網沒有說清楚,要把文件解壓到MySQL的數據目錄,而不是隨便的一個目錄!
(其實直接使用tar xf解壓是一樣的,個人覺得,為了保險還是推薦官網的方式!)
3、恢復數據文件
使用過percona軟件的人都了解,會有一個恢復文件的步驟,執行如下命令行即可:
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
說明:backup-my.cnf也是在數據目錄下,--apply-log選項后面接的也是數據目錄。
命令執行成功后會有completed ok!的顯示。
4、修改配置文件
編輯數據目錄下的backup-my.cnf文件,注釋三行代碼即可:
[mysqld] 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_encrypt_data=false innodb_encrypt_algorithm=aes_128_ecb
5、修改文件的權限
需要將數據目錄下的文件屬主和屬組改為mysql,執行如下命令行:
chown -R mysql:mysql /home/mysql/data
6、啟動mysql進程並登陸驗證
service mysqld restart mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
命令的執行完成可能要等一會兒,有點耐心,一般幾分鍾而已(園主的2分鍾以內)。
登陸數據庫驗證:
mysql -uroot -p >show databases;
7、重新建立授權用戶
恢復完成后,表 mysql.user 中是不包含 RDS 中創建的用戶,需要新建。
創建授權用戶之前執行下面3條sql >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; 如果直接復制粘貼官網的語句會報錯!原因是引號錯誤,自己需要把引號改一改! >grant all on 'user01'@'%' IDENTIFIED BY 'password01'; >flush privileges; 說明:%表示可以遠程連入數據庫,不想遠程連接可以改為localhost。
好了!到此為止,數據恢復完成!因為軟件的原因,恢復僅限Linux系統進行,但是可以在Windows上用客戶端工具連入數據庫。