目前分類:MySQL (2)

瀏覽方式: 標題列表 簡短摘要

以往安裝 MySQL 在本機時,通常都會順便安裝 MySQL client 端程式,透過 mysqldump 建立備份很簡單。但如果是使用 docker 建立 MySQL,就無法直接在容器外備份,需要改用透過 docker 對內部下指令的方式處理。

# backup test_db 到 test_db_backup.sql
docker exec [CONTAINER] //usr/bin/mysqldump -u [USER] --password=[PASSWORD] --routines --triggers test_db > /home/user/test_db_backup.sql

請留意路徑開始的「//」一定要用雙斜線,[USER] 與 [PASSWORD] 請自行代入資料庫的使用者名稱與密碼,[CONTAINER] 請自行代入 container name

另外除了備份 sql 檔案外,我還想要自動將備份的資料匯入到新資料庫中,這時候就要另外處理建立新資料庫,以及匯入的手續;這邊我把它寫成一個 shell script,並把資料庫改成變數傳入的方式,方便直接使用

#!/bin/sh

# backup db 資料到 db_backup.sql
docker exec [CONTAINER] //usr/bin/mysqldump -u [USER] --password=[PASSWORD] --routines --triggers $1 > /home/user/$1_backup.sql

# init 刪除原 db_backup 資料庫,重新建立一個空的 db_backup 資料庫
echo "DROP DATABASE IF EXISTS $1_backup; CREATE DATABASE $1_backup CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" > /home/user/$1_init.sql | cat /home/user/$1_init.sql | docker exec -i [CONTAINER] //usr/bin/mysql -u [USER] --password=[PASSWORD]

# restore 匯入備份的資料到 db_backup 資料庫
cat /home/user/$1_backup.sql | docker exec -i [CONTAINER] //usr/bin/mysql -u [USER] --password=[PASSWORD] $1_backup

另存成 backup_db.sh,修改可執行權限後,只要執行

./backup_db.sh test_db

就會自動備份 test_db 到 test_db_backup 中囉

danielhuang030 發表在 痞客邦 留言(0) 人氣()

有鑑於本公司目前許多資料都是記錄在MySQL資料庫裡,常常會有事沒事的進資料庫看資料;然而在修改的過程中難免會有失誤,如果一不小心把資料庫裡的資料刪除了就欲哭無淚啦~因此,資料庫的備份就變得分外重要囉!

上網找了很多資料,大部分的MySQL資料庫備份法都是以Linux備份為主;可惜我們是用M$的作業系統,所以花了一點時間在找方法。所幸Windows有提供「工作排程」的方法,同樣可以提供每日、每周或每月設定時間。上面這個連結是採用Windows定時執行PHP的方式,使用mysqldump這個MySQL本身就有參數進行備份。不過我比較不解的地方是,直接使用批次檔執行mysqldump就可以啦~為什麼還要透過PHP?

不囉唆,下面是批次檔中mysqldump備份的語法:

C:\AppServ\MySQL\bin\mysqldump --opt -u*** -p*** Database_name >D:\%date:~0,4%-%date:~5,2%-%date:~8,2%.sql

-u:MySQL使用者名稱
-p:MySQL使用者密碼
Database_name:MySQL資料庫名稱
%date:~0,4%:這個是運用DOS本身的環境變數指令「date」,從第「o」位開始取「4」位;因為原本的「date」出來會有「/」不能當作檔名,所以必須取三次再自己用「-」連結。

使用方法參考: Mysql自動製作備份批次處理 for windows

這樣就可以把MySQL資料庫備份檔案,以「2008-01-29.sql」的型式備份於「D:\」下囉!另外如果有WinRAR的程式,可以參考連接中再壓縮成RAR檔案備存。

備份出來的檔案當然會有要還原回去的時候啦,還原的方法如下:

C:\AppServ\MySQL\bin\mysqladmin -u*** -p*** create target_db_name

C:\AppServ\MySQL\bin\mysql -u*** -p*** target_db_name < backup-file.sql

-u:MySQL使用者名稱
-p:MySQL使用者密碼
target_db_name:新建MySQL資料庫名稱
backup-file.sql:備份的MySQL資料庫檔案路徑

更詳盡的mysqldum使用方法參考:最簡便的備份MySql資料庫方法

以上,大概描述了一下MySQL於Windows平台下的備份與還原。
文章標籤

danielhuang030 發表在 痞客邦 留言(0) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼