1. 程式人生 > 實用技巧 >MySQL備份恢復手冊

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