RDS數據全量恢復至本地

RDS數據恢復至本地

背景:

雖然阿里雲是靠譜的,但是數據容災該做還是要做的,數據不在自己的手裏總感覺沒什麼安全感。而且,阿里雲索取慢sql是要收費的,公司運營部門隔一段時間還要統計一些數據,統計數據的SQL相當複雜,嚴重影響生產庫的性能,所以在公司本地搭建從庫

第1章 恢復全備

在阿里雲控制檯複製備份的下載地址並下載到本地

wget –c ‘下載地址’–O rds.tar.gz

tar xf rds.tar.gz

驗證是否安裝了恢復工具:

yum install Percona-XtraBackup

chown –R mysql.mysql /application/msyql/data

利用xtrabackup工具恢復

恢復之前註釋掉配置中的一些參數避免報錯:

[mysql]

#innodb_fast_checksum=false

#innodb_page_size=16384

#innodb_log_block_size=512

 

innobackupex --defaults-file=/application/mysql/data/backup-my.cnf --apply-log /application/mysql/data

數據量較大的恢復時間比較長

啓動mysql數據庫即可,應該會遇到報錯,需要將配置文件中的一些參數註釋掉,具體的報錯信息在mysqlerror文件中可以看到

啓動報錯:

cat jhkj66.err 

/application/mysql-5.6.40/bin/mysqld: File '/var/mysql/slave-binlog.index' not found (Errcode: 13 - Permission denied)

2018-09-03 19:30:52 6645 [ERROR] Aborting

這應該是mysql那個文件夾權限不是mysql造成的

-rw-r--r-- 1 root  root 1048576000 9   4 22:05 ib_logfile0

-rw-r--r-- 1 root  root 1048576000 9   4 22:05 ib_logfile1

[root@jhkj66 data]# chown -R mysql.mysql ib*

 

登錄數據庫:

我這裏用生產庫上的用戶直接登錄就好了,用戶是存在的

 

第2章 基於時間點恢復數據

查看binlog日誌應該開始的位置;

cat xtrabackup_binlog_info

mysql-bin.000600        231393319      56613f39-b86a-11e6-8566-6c92bf2c161d:1-10936168,

717b9f69-5f5f-11e5-bb6f-288023a1a6a8:1-6497801,

71f7d9dd-b86a-11e6-8567-40a8f01e5d38:1-1639034,

8304837d-5f5f-11e5-bb6f-288023a1a804:1-69709,

b4fc1b00-73a2-11e7-8a3b-7cd30ac4ea32:1-244515043

在阿里雲下載binlog日誌,在你需要的時間點附近的

利用mysqlbinlogbinlog日誌轉換成SQL文件,然後導入:

這裏應該要提前註釋掉配置文件中的一個參數,不然使用mysqlbinlog的時候回報錯

[client]

#default-character-set = utf8

將此參數註釋掉,因爲mysqlbinlog命令不會識別

[root@jhkj66 rds-bak]# mysqlbinlog mysql-bin.000622 mysql-bin.000623 mysql-bin.000624 mysql-bin.000625 mysql-bin.000626 mysql-bin.000627 --start-position=34233808 --stop-date="2018-09-04 08:04:13" |mysql -uroot -pjhkj -h127.0.0.1

Warning: Warning: Using a password on the command line interface can be insecure.

Using unique option prefix stop-date instead of stop-datetime is deprecated and will be removed in a future release. Please use the full name instead.

這裏應該使用root用戶,使用rds上的用戶,是沒有導入SQL文件的權限的,反正我的rds上都是普通用戶

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章