參考以下兩篇文檔整理:
(文檔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、知識准備:
datadir="D:/mysql/data"
2、數據備份:
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:39.440028Z 0 [Note] Binlog end |
請把/home/mydir的 ibdata1、 ib_logfile*文件用命令
chown -R mysql:mysql ibdata1以及
chown -R mysql:mysql ib_logfile0
chown -R mysql:mysql ib_logfile1
等修改用戶權限
然后再進行第8步,確保拷貝到數據庫文件的存儲位置的文件有mysql的讀寫權限