MySQL備份恢復手冊
文件結構
- 備份前期準備
- 工具備份恢復
- 命令備份恢復
- 其他備份方法
------------------------------------------------------------------------------------------------
本文件介紹了三種備份恢復方法,根據實際情況選用最簡單的一種即可
------------------------------------------------------------------------------------------------
備份恢復前準備
1、務必確保資料庫版本為5.7或者8.0(這兩個版本資料可跨版本恢復)
2、確保源資料庫和目標資料庫必要引數已被修改
3、如果資料準備恢復至其他使用者(原使用者與目標使用者名稱不一致),需在目標庫建一個相同許可權的同名使用者即可,或者在備份完成後對備份檔案進行處理,在linux下執行如下命令
[root@localhost ~]# sed -i "s/DEFINER=\`[^\`]\+\`@\`[^\`]\+\`//g" ecology_bak_20190428.sql [root@localhost ~]# sed -i "s/DEFINER = '[^']\+'@'[^']\+'//g" ecology_bak_20190428.sql
1.使用工具備份遷移
推薦使用sqlyog進行備份,不要使用navicate,因為navicate在備份資料庫時函式和儲存過程被視為同一類資料庫物件處理,在匯入時常常因為匯入的先後問題導致匯入失敗
sqlyog工具
下載地址連結:https://pan.baidu.com/s/1oJdRW7Zo2_ZQGDM80EwDaQ
提取碼:wmo9
注:安裝程式之後關閉程式,點選安裝檔案同目錄下的登錄檔進行註冊即可使用
匯出過程:
右鍵要匯出的資料庫,備份/匯出-備份資料庫
匯出過程注意將"包含使用資料庫宣告"和"包括CREATE database語句"選項去掉!!!!!!!!!!!!!!
匯入:
匯入前建立新的資料庫
create database weaver_test;
右鍵新建的資料庫名-匯入-執行SQL指令碼
選擇要匯入的檔案執行即可
2.命令備份恢復
備份:
mysqldump -uroot -p -R --triggers --default-character-set=utf8 ecology > ecology_test_20181105.sql
將備份傳輸至目標端
恢復:
mysql -uroot -p ecology < ecology_test_20181105.sql
引數說明:
-u使用者名稱
-p密碼
-R備份儲存過程和函式
--triggers備份觸發器
--default-character-set=utf8設定備份儲存編碼
ecology備份恢復的資料庫名
注意:如果備份準備用來做主從恢復,需加上--master-data引數,形如:mysqldump -uroot -p -R --triggers--master-data--default-character-set=utf8 ecology > ecology_test_20181105.sql
備註:有時因為字符集問題(常見的是windows環境匯出的sql檔案中包含有'/'字元,匯入到linux環境該字元被標識為目錄標識),恢復是需要指明字符集,命令如下
mysql -uroot -p--default-character-set=utf8ecology < ecology_test_20181105.sql
3.其它備份恢復方法
1.冷備份恢復
注:該方式備份恢復較快捷,方便,適合相同版本的資料遷移,備份恢復前請做好相關資料的備份工作
關閉mysql服務
service mysqld stop
複製mysql datadir下的所有檔案至新的資料庫datadir下
cd /var/lib/mysq/ scp -r * 10.10.10.1:/var/lib/mysql/
修改新的目錄的許可權
cd /var/lib/mysq/
chown mysql.mysql -R *
啟動新的mysql服務
service mysqld start
2.innodbbackup備份
注:該備份的有點在於可以線上進行類似冷備份的操作,備份完成後追加備份期間的日誌應用,保證備份的完整性,該方法也要求資料庫的版本一致
此處僅列出的備份命令
備份
innobackupex --user=root --password=work123 --socket=/var/lib/mysql/mysql.sock /opt/backup
應用日誌
innobackupex --apply-log /opt/backup/2018-09-20_14-03-17/
恢復
cd /var/lib/mysql cp /opt/backup/2018-09-20_14-03-17/* /var/lib/mysql/
啟動新的mysql服務
service mysqld start