備份和恢復MySQL資料庫(Windows版)
操作環境
- MySQL資料庫
-
- MySQL 8.0 社區版
- 窗戶
-
- 窗戶11
先決條件
- MySQL資料庫
-
- MySQL的8.0
- 窗戶
-
- 窗戶11
- 視窗 10
- Windows 伺服器
-
- 視窗伺服器 2022
- Windows 伺服器 2019
- Windows 伺服器 2016
- Windows 伺服器 2012 R2
前提
- 已安裝 MySQL 資料庫。
- 要備份的資料庫已存在。
- 您已設置環境變數,以便可以從命令提示符運行 mysql。
備份有哪些類型?
雖然這裡沒有詳細討論,但MySQL有以下類型的備份:
備份命令備份數據類型註解 | ||
---|---|---|
mysql轉儲 | 邏輯備份 | 一種古老的備份方法。 GUI 也使用此 |
mysql泵 | 邏輯備份 | mysqldump 的改進版本 |
MySQL Shell實例轉儲實用程式和轉儲載入實用程式 | 邏輯備份 | 目前最新的邏輯備份 |
Percona XtraBackup | 物理備份 | 第三方對物理備份的支援 |
克隆外掛程式 | 物理備份 | MySQL官方物理備份。 但是,您需要添加外掛程式。 |
使用 GUI 備份資料庫 (MySQL Workbench)
如果您想在不使用命令的情況下在 GUI 中安全操作,則可以使用 MySQL Workbench 進行備份。 MySQL Workbench 執行的備份類型將為“mysqldump”。
啟動 MySQL Workbench。
選擇包含要備份的資料庫的連接。
對於要備份的資料庫,請從左側的「導航器」中選擇「管理」選項卡,然後選擇「數據匯出」。
“資料匯出”屏幕打開。 屏幕相當寬,因此請展開視窗,直到您可以看到右下角的“開始匯出”按鈕。
首先,選擇要備份的資料庫。 您也可以選擇多個。
在「要匯出的物件」中,您也可以選擇備份過程和觸發器。 此欄位是可選的。
在「匯出選項」中,您可以選擇以下兩個選項。
類型 | 描述 |
---|---|
匯出到轉儲項目資料夾 | 作為表檔或過程文件輸出到指定資料夾。 |
匯出到獨立檔 | 將所有內容嵌入到單個檔和輸出中。 |
以哪種方式輸出並不重要。 如果您只想還原特定表,則上述選擇很容易刪除。 下面的選擇輸出到單個檔,從而可以更輕鬆地將檔作為資料庫單元進行移動和管理。 在這種情況下,我選擇了以下內容。
設置完成後,按下右下角的「開始匯出」按鈕開始匯出。
匯出開始並完成。
如果將其輸出為單個檔,它將如下所示:
如果匯出到資料夾,它將如下所示:
使用 GUI 還原資料庫 (MySQL Workbench)
打開 MySQL Workbench,選擇一個連接,從左側的 Navigator 中選擇 Administration 選項卡,然後選擇 Data Import/Restore。 正如它所說的「導入/還原」,您可以從導出的檔創建新資料庫或覆蓋原始資料庫。
展開視窗,直到右下角看到「開始導入」 按鈕。
根據導出的檔案格式選擇「匯入選項」。 由於這次我匯出為單個檔,因此我在下面選擇了“從獨立文件導入”並指定了導出的檔。
選擇要還原到的架構(資料庫)。 您可以從右側的「新建」按鈕還原到現有資料庫或將其還原為新資料庫。
指定規格後,點擊右下角的「開始導入」按鈕開始恢復。
恢復完成後,請確保您的數據已恢復。
通過命令創建資料庫備份帳戶
如果執行單個命令並備份沒有問題,但是例如,如果提前將命令準備為檔並執行,則需要以明文形式寫入密碼,因此創建單獨的帳戶進行備份執行更安全。
備份所需的某些許可權可能會根據所需的資訊增加或減少。
- 事件
- 鎖定表
- 選擇
- 顯示檢視
如果使用命令創建它,它將如下所示。 使用 MySQL 命令行工具。
create user '<ユーザー名>'@'<ホスト名>' identified by '<パスワード>';
GRANT EVENT, LOCK TABLES, SELECT, SHOW VIEW ON <データベース名>.* TO '<ユーザー名>'@'<ホスト名>';
flush privileges;
例
create user 'backup_user'@'localhost' identified by 'password';
GRANT EVENT, LOCK TABLES, SELECT, SHOW VIEW ON test_database.* TO 'backup_user'@'localhost';
flush privileges;
備份目標的資料夾許可權
保存備份文件的資料夾的許可權的設置方式必須與執行命令的許可權相同。 如果使用管理員許可權運行該命令,則無需對資料夾設置任何其他許可權。
使用命令備份資料庫 (mysqldump)
通過命令備份有幾個,但這次我們將使用“mysqldump”進行備份,它已經使用了很長時間並且很穩定。
右鍵按下「開始」功能表以啟動終端(命令提示符)。 請注意,它不是“MySQL 8.0 命令行用戶端”。
您可以使用以下命令備份它:
mysqldump -u <ユーザー名> -p<パスワード> --no-tablespaces --single-transaction --triggers --routines --events --default-character-set=utf8 <データベース名> > "<バックアップファイルパス>"
例
mysqldump -u backup_user -ppassword --no-tablespaces --single-transaction --triggers --routines --events --default-character-set=utf8 test_database > "C:\Temporary\Backup.sql"
--default-character-set=utf8
如果指定的字元代碼與在 GUI 中備份時相同,則該字元代碼將與在 GUI 中備份時相同。 這樣,您也可以將其導入 GUI。- 不要在密碼欄位和
-p
密碼之間包含空格。- 如果還想輸出表空間資訊,
--no-tablespaces
請刪除 . 在這種情況下,正在執行的使用者的權限必須是 。PROCESS
將在指定位置創建備份檔。
使用命令還原資料庫 (mysqldump)
mysqldump 備份的文件採用可以在 SQL 中執行的格式,因此您所要做的就是執行目標 SQL。 我認為大多數恢復都是手動完成的,因此如果您以root帳戶身份運行它,則沒有問題。
如果要從命令運行它,請在命令提示符下運行它,而不是在PowerShell下運行它。 這是因為該符號不能在PowerShell中使用 <
。
執行以下命令:
mysql -u root -p<root のパスワード> <データベース名> < <バックアップした SQL のファイルパス>
例
mysql -u root -ppassword test_database < C:\Temporary\Backup.sql
自動資料庫備份
對於 Windows,通常使用任務計劃程式。 首先,創建一個批處理檔。 創建一個 bat 檔,輸入命令備份的內容,然後保存。 字元編碼使用 Shift-JIS 保存。 批處理檔的位置和檔名是任意的。
向任務計劃程序註冊。 右鍵按鍵按「開始」功能表,然後選擇「電腦管理」。
從左側功能表中,選擇「計算機管理」>「系統工具」>「任務計劃程式」>“任務計劃程式庫”。 從右側功能表中選擇「創建任務」。。
配置「常規」選項卡。 “名稱”將出現在任務清單中,因此請輸入易於理解的名稱。 在安全選項中,選中「無論使用者是否登錄都運行」。
在「觸發器」選項卡中,您可以設置何時執行備份。 根據您的操作設置此設置。
在「操作」選項卡中,將其設置為啟動您剛剛創建的批處理檔。
設置完每個後,使用OK按鈕確認。
輸入您的密碼以註冊以在指定帳戶下運行。
之後,檢查備份是否會在指定時間執行。