1. 程式人生 > >阿裏雲RDS備份的tar格式包恢復到本地自建數據庫

阿裏雲RDS備份的tar格式包恢復到本地自建數據庫

數據庫驗證 group span gpl utils ibdata1 復制 自建 sql數據庫

說明

阿裏雲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 [email protected]%‘ IDENTIFIED BY ‘password01‘;
>flush privileges;

說明:%表示可以遠程連入數據庫,不想遠程連接可以改為localhost。

  好了!到此為止,數據恢復完成!因為軟件的原因,恢復僅限Linux系統進行,但是可以在Windows上用客戶端工具連入數據庫。

阿裏雲RDS備份的tar格式包恢復到本地自建數據庫