RDS for MySQL 物理備份文件恢復到本地數據庫(親測)


參考以下兩篇文檔整理:

 

 

(文檔1)https://help.aliyun.com/knowledge_detail/41817.html?spm=a2c4g.11186631.2.1.434247acfAIAwY

(文檔2)https://yq.aliyun.com/articles/688509

 

以下為自己整理過程:

(該出是復制文檔1中的原文:)

開源軟件Percona Xtrabackup可以用於對數據庫進行備份恢復,您可以使用該軟件將雲數據庫MySQL的備份文件恢復到自建數據庫中,本文將介紹詳細的操作步驟。

1、注意事項
本文使用Linux7的操作系統以及MySQL5.7版本為例進行演示。

操作系統中已安裝數據恢復工具Percona XtraBackup,您可以從Percona XtraBackup官網下載安裝。
MySQL 5.6及之前的版本需要安裝 Percona XtraBackup 2.3,安裝指導請參見官方文檔Percona XtraBackup 2.3。

MySQL 5.7版本需要安裝 Percona XtraBackup 2.4,安裝指導請參見官方文檔Percona XtraBackup 2.4。

MySQL 8.0版本需要安裝 Percona XtraBackup 8.0,安裝指導請參見官方文檔Percona XtraBackup 8.0。

2019年2月20日后創建的MySQL 5.6實例,數據備份文件的格式為xbstream文件包 (_qp.xb 后綴)。
本地MySQL數據庫安裝在64位的Linux系統中,且與雲數據庫MySQL版的版本相同。

2、從RDS for MySQL備份文件到本地不走請參考“文檔1”(https://help.aliyun.com/knowledge_detail/41817.html?spm=a2c4g.11186631.2.1.434247acfAIAwY)的“備份恢復操作步驟”

 

3、“文檔1”中第“11”步驟中的“說明 本文以自定義路徑/home/mysql/data為例,您可以根據實際情況將其替換成實際路徑”,其中“/home/mysql/data”並不是數據庫的“數據庫目錄”,一開始我按照文檔理解以為是數據庫目錄,解壓到之類導致mysql不能啟動了,在這里耽誤了不少時間,而是一個自定義的普通的目錄而已,比如“/home/mydir”

 

4、第14步很重要,不能少 ,並且要放到第13步前面

 

5、“文檔1”中第“13”步驟中的“innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data”,可以改為第3步中的路徑,比如我改為了“innobackupex --defaults-file=/home/mydir/backup-my.cnf --apply-log /home/mydir”,也就是把從阿里雲下載的壓縮包解壓到“/home/mydir”

 

 

 

6、第4步成功執行完后,把/home/mydir目錄中數據庫目錄復制到你服務器上mysql的“數據庫目錄”中(也就是mysql配置文件 my.ini的datadir="xxxx"指向的目錄,其中xxxx是你配置文件的實際位置

 

7、然后執行“文檔1”中的第15步,第15步不能缺少,不然沒有權限

執行如下命令,修改文件屬主,並確定文件所屬為MySQL用戶。
chown -R mysql:mysql /home/mydir

 

8、此時還沒有完全恢復成功,如果此時用navicat鏈接數據庫后會提示“table “xxx” doesn`t exist”,

 

重要的一步(參考了https://blog.csdn.net/anonymking/article/details/79589623,重點參考第3部和第4部):

總結與提示:

1、記得先關閉MySQL服務

2、建議使用專業工具進行數據備份,以免浪費時間。

 

 

1、知識准備:


配置文件 my.ini 中 datadir 節點表示數據庫文件的存儲位置,例如:

datadir="D:/mysql/data"

 

2、數據備份:


1、完整備份:把 datadir 對應的 datadir 直接拷貝就可以


2、部分備份:data 文件夾下的文件夾都表示一個表,可以單獨備份

 

3、部分備份出現問題

1、類型是 MyISAM 的表對應數據文件是 "xxx.frm"、"xxx.MYD"、"xxx.MYI",這種情況下直接拷貝沒有問題。

2.1、類型是 InooDB 的表對應數據文件是 "xxx.frm",而這種情況下直接拷貝就出現問題了 -- “table “xxx” doesn`t exist”。

2.2、解決辦法:

  InnoDB 數據庫表拷貝是注意要把data文件夾下的 ibdata1 也同時拷貝過去(原來的 ibdata1備份其它位置后刪除掉)

  若還是出現問題的話就把新的data文件夾下的 ib_logfile* 文件備份其它位置后刪除掉,或者說帶着 ib_logfile* 文件也一起拷貝

  最后記得啟動MySQL服務就可以了

 

 

9、如果扔完無法重啟mysql,並且報錯如下:

Redirecting to /bin/systemctl start mysqld.service
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

進入mysql錯誤日志,看到下面紅色字體了嗎?說明mysql沒權讀寫,就是權限不夠

2019-08-28T06:18:38.812920Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-08-28T06:18:38.812925Z 0 [Note] InnoDB: Using Linux native AIO
2019-08-28T06:18:38.813153Z 0 [Note] InnoDB: Number of pools: 1
2019-08-28T06:18:38.813248Z 0 [Note] InnoDB: Using CPU crc32 instructions
2019-08-28T06:18:38.814942Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2019-08-28T06:18:38.823743Z 0 [Note] InnoDB: Completed initialization of buffer pool
2019-08-28T06:18:38.825388Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2019-08-28T06:18:38.837195Z 0 [ERROR] InnoDB: ./ib_logfile0 can't be opened in read-write mode.
2019-08-28T06:18:38.837229Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2019-08-28T06:18:39.439960Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2019-08-28T06:18:39.439993Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-08-28T06:18:39.439999Z 0 [ERROR] Failed to initialize builtin plugins.
2019-08-28T06:18:39.440003Z 0 [ERROR] Aborting

2019-08-28T06:18:39.440028Z 0 [Note] Binlog end
2019-08-28T06:18:39.440079Z 0 [Note] Shutting down plugin 'CSV'
2019-08-28T06:18:39.440326Z 0 [Note] /usr/sbin/mysqld: Shutdown complete

 

 

請把/home/mydir的 ibdata1、 ib_logfile*文件用命令

chown -R mysql:mysql  ibdata1以及
chown -R mysql:mysql  ib_logfile0
chown -R mysql:mysql  ib_logfile1
等修改用戶權限
然后再進行第8步,確保拷貝到數據庫文件的存儲位置的文件有mysql的讀寫權限

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM