ServBay 資料庫檔案管理與遷移指南
ServBay 作為一款強大的本機 Web 開發環境,整合了多種常用的資料庫管理系統,並對其資料檔案進行規範化管理。了解 ServBay 預設的資料庫檔案存放結構,對於開發者進行資料備份、還原與遷移至關重要。
本文將詳盡介紹 ServBay 預設的資料庫檔案存放結構,並提供使用標準指令列工具進行資料庫檔案管理及不同環境間遷移的指導。
TIP
ServBay 提供資料備份與還原功能,您可以自動或手動備份 MySQL、MariaDB、PostgreSQL 資料庫。請參考備份與還原以取得更多資訊。
ServBay 預設的資料庫檔案存放結構
為了便於管理並隔離不同資料庫版本的資料,ServBay 將所有資料庫的資料檔案統一存放於 /Applications/ServBay/db
目錄下。該目錄依資料庫類型分類,再於類型目錄下按主要版本號(major version)進行組織。
以下是 /Applications/ServBay/db
目錄的典型結構範例:
/Applications/ServBay/db
├── mysql
│ ├── 8.0
│ └── 8.1
├── mariadb
│ ├── 10.10
│ ├── 10.11
│ ├── 10.5
│ ├── 10.6
│ ├── 10.7
│ ├── 10.8
│ ├── 10.9
│ ├── 11.0
│ ├── 11.1
│ ├── 11.2
│ └── 11.3
├── postgresql
│ ├── 10
│ ├── 11
│ ├── 12
│ ├── 13
│ ├── 14
│ ├── 15
│ └── 16
└── redis
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
目錄結構說明
/Applications/ServBay/db
:ServBay 儲存所有資料庫檔案的主目錄。mysql
:儲存 MySQL 資料庫的資料檔案。子目錄依主要版本號(如8.0
、8.1
)區分。mariadb
:儲存 MariaDB 資料庫的資料檔案。子目錄依主要版本號(如10.11
、11.3
)區分。postgresql
:儲存 PostgreSQL 資料庫的資料檔案。子目錄依主要版本號(如15
、16
)區分。redis
:儲存 Redis 的持久化檔案,通常為dump.rdb
檔案。
此結構的好處是,您可以在 ServBay 同時安裝與運行同一資料庫的多個主要版本,彼此資料檔案互相隔離、互不干擾。
資料庫檔案管理
在本機開發過程中,您經常需要對資料庫進行備份、還原或遷移。以下說明如何使用各資料庫的標準指令列工具執行這些操作。請注意,這些操作通常需經由 ServBay 提供的終端環境,或確保環境變數正確設置,以便能直接呼叫相關資料庫客戶端與工具。
備份資料庫
定期備份是確保資料安全的關鍵步驟。以下說明如何備份 ServBay 中不同資料庫類型。
備份 MySQL
使用 mysqldump
工具是備份 MySQL 資料庫的標準方法。
# 切換至 ServBay 提供的終端環境,或確保 PATH 環境變數包含 ServBay 的 bin 目錄
# 例如:export PATH="/Applications/ServBay/bin:$PATH"
mysqldump -u your_username -p your_database > /Applications/ServBay/backup/your_database.sql
2
3
4
your_username
:替換成您的資料庫用戶名稱。your_database
:替換成您要備份的資料庫名稱。/Applications/ServBay/backup/your_database.sql
:替換成您希望存放備份檔案的路徑與檔名。建議將備份檔案儲存於 ServBay 目錄以外,例如您的用戶目錄下。
備份 MariaDB
備份 MariaDB 的方式與 MySQL 相同,同樣使用 mysqldump
工具。
# 切換至 ServBay 提供的終端環境,或確保 PATH 環境變數包含 ServBay 的 bin 目錄
mysqldump -u your_username -p your_database > /Applications/ServBay/backup/your_database.sql
2
3
- 參數說明同上。
備份 PostgreSQL
使用 pg_dump
工具來備份 PostgreSQL 資料庫。注意,在 ServBay 環境下,PostgreSQL 通常設為使用 Unix Domain Socket 連線,預設路徑為 /Applications/ServBay/tmp
,因此指令中需指定 -h /Applications/ServBay/tmp
。
# 切換至 ServBay 提供的終端環境,或確保 PATH 環境變數包含 ServBay 的 bin 目錄
pg_dump -h /Applications/ServBay/tmp -U your_username -d your_database -F c -b -v -f /Applications/ServBay/backup/your_database.dump
2
3
-h /Applications/ServBay/tmp
:指定 PostgreSQL 伺服器的 socket 檔案路徑。-U your_username
:替換成您的資料庫用戶名稱。-d your_database
:替換成您要備份的資料庫名稱。-F c
:指定輸出為自訂歸檔格式(建議)。-b
:包含大物件(blobs)。-v
:輸出詳細資訊。-f /Applications/ServBay/backup/your_database.dump
:替換成您希望存放備份檔案的路徑與檔名。
備份 Redis
Redis 備份通常是複製其持久化檔案 dump.rdb
。
# 切換至 ServBay 提供的終端環境
# 確保 Redis 服務正在運行,或已啟用自動存檔(BGSAVE)
cp /Applications/ServBay/db/redis/dump.rdb /Applications/ServBay/backup/dump.rdb
2
3
4
/Applications/ServBay/db/redis/dump.rdb
:Redis 預設的持久化檔案路徑。/Applications/ServBay/backup/dump.rdb
:替換成您希望儲存備份檔案的路徑與檔名。
還原資料庫
當資料遺失或需回復至先前狀態時,可使用備份檔案進行還原。
還原 MySQL
使用 mysql
客戶端工具還原 MySQL 備份檔案。
# 切換至 ServBay 提供的終端環境
mysql -u your_username -p your_database < /Applications/ServBay/backup/your_database.sql
2
3
your_username
:替換成您的資料庫用戶名稱。your_database
:替換成您要還原至的資料庫名稱。該資料庫通常需事先建立。/Applications/ServBay/backup/your_database.sql
:替換成您的備份檔案路徑。
還原 MariaDB
還原 MariaDB 的方式與 MySQL 相同,使用 mysql
客戶端工具。
# 切換至 ServBay 提供的終端環境
mysql -u your_username -p your_database < /Applications/ServBay/backup/your_database.sql
2
3
- 參數說明同上。
還原 PostgreSQL
使用 pg_restore
工具還原 PostgreSQL 的自訂格式備份檔案。同樣需指定 socket 檔案路徑 -h /Applications/ServBay/tmp
。
# 切換至 ServBay 提供的終端環境
pg_restore -h /Applications/ServBay/tmp -U your_username -d your_database -v /Applications/ServBay/backup/your_database.dump
2
3
-h /Applications/ServBay/tmp
:指定 PostgreSQL 伺服器的 socket 檔案路徑。-U your_username
:替換成您的資料庫用戶名稱。-d your_database
:替換成您要還原至的資料庫名稱。該資料庫通常需事先建立。-v
:輸出詳細資訊。/Applications/ServBay/backup/your_database.dump
:替換成您的備份檔案路徑。
還原 Redis
還原 Redis 通常為將備份的 dump.rdb
檔案複製回 Redis 的資料目錄。重要:進行此操作前,請先停止 Redis 服務。
# 切換至 ServBay 提供的終端環境
# 停止 ServBay 的 Redis 服務
# 複製備份檔案
cp /Applications/ServBay/backup/dump.rdb /Applications/ServBay/db/redis/dump.rdb
# 啟動 ServBay 的 Redis 服務
2
3
4
5
/Applications/ServBay/backup/dump.rdb
:替換成您的備份檔案路徑。/Applications/ServBay/db/redis/dump.rdb
:Redis 預設的持久化檔案路徑。
資料庫遷移
資料庫遷移是將資料庫從一個環境(可能是另一個 ServBay 實例、遠端伺服器或其他本機環境)移動到另一個環境的過程。這通常涉及於來源環境匯出資料,再於目標環境匯入。
遷移 MySQL
遷移 MySQL 是日常開發常遇需求。
於來源環境匯出資料庫:
bash# 於來源環境終端中執行 mysqldump -u your_source_username -p your_database > your_database.sql
1
2your_source_username
:來源環境的資料庫用戶名稱。your_database
:要遷移的資料庫名稱。your_database.sql
:匯出的 SQL 檔案名稱。
將匯出的 SQL 檔案傳送至目標環境: 使用
scp
或其他檔案傳輸工具,將your_database.sql
檔案傳到目標 ServBay 環境的可讀目錄(如/Applications/ServBay/backup/
)。於目標 ServBay 環境中建立資料庫:
bash# 於目標 ServBay 終端中執行 mysql -u your_target_username -p -e "CREATE DATABASE your_database;"
1
2your_target_username
:目標 ServBay 的資料庫用戶名稱。your_database
:要建立的資料庫名稱(應與來源一致)。
於目標 ServBay 環境中匯入資料庫:
bash# 於目標 ServBay 終端中執行 mysql -u your_target_username -p your_database < /path/to/your_database.sql
1
2/path/to/your_database.sql
:替換成 SQL 檔案於目標環境的實際路徑。
遷移 MariaDB
遷移 MariaDB 步驟與 MySQL 完全相同,因兩者使用同一指令列工具及檔案格式。
- 於來源環境匯出資料庫:bash
# 於來源環境終端中執行 mysqldump -u your_source_username -p your_database > your_database.sql
1
2 - 將匯出的 SQL 檔案傳送至目標環境。
- 於目標 ServBay 環境中建立資料庫:bash
# 於目標 ServBay 終端中執行 mysql -u your_target_username -p -e "CREATE DATABASE your_database;"
1
2 - 於目標 ServBay 環境中匯入資料庫:bash
# 於目標 ServBay 終端中執行 mysql -u your_target_username -p your_database < /path/to/your_database.sql
1
2
遷移 PostgreSQL
遷移 PostgreSQL 使用 pg_dump
和 pg_restore
工具。注意 ServBay 環境下的 socket 檔案路徑。
於來源環境匯出資料庫:
bash# 於來源環境終端中執行 # 若來源環境為 ServBay pg_dump -h /Applications/ServBay/tmp -U your_source_username -d your_database -F c -b -v -f your_database.dump # 若來源為其他系統,請依其設定調整連線參數
1
2
3
4your_source_username
:來源環境的資料庫用戶名稱。your_database
:要遷移的資料庫名稱。your_database.dump
:匯出的備份檔案名稱。
將匯出的備份檔案傳送至目標 ServBay 環境: 使用
scp
或其他檔案傳輸工具將your_database.dump
檔案傳到目標 ServBay 環境可讀取的位置。於目標 ServBay 環境建立資料庫:
bash# 於目標 ServBay 終端中執行 # 先連至預設 postgres 資料庫建立新資料庫 psql -h /Applications/ServBay/tmp -U your_target_username -d postgres -c "CREATE DATABASE your_database;"
1
2
3your_target_username
:目標 ServBay 的資料庫用戶名稱。your_database
:要建立的資料庫名稱。
於目標 ServBay 環境匯入資料庫:
bash# 於目標 ServBay 終端中執行 pg_restore -h /Applications/ServBay/tmp -U your_target_username -d your_database -v /path/to/your_database.dump
1
2/path/to/your_database.dump
:替換備份檔案於目標環境的實際路徑。
遷移 Redis
遷移 Redis 通常直接複製 dump.rdb
檔案。
於來源環境取得
dump.rdb
檔案:bash# 於來源終端執行 # 確保 Redis 服務已停止,或等待 BGSAVE 完成 cp /path/to/source/redis/dump.rdb ./dump.rdb
1
2
3將
dump.rdb
檔案傳送至目標 ServBay 環境的 Redis 資料目錄:bash# 於來源或中繼伺服器執行 scp ./dump.rdb your_target_server:/Applications/ServBay/db/redis/dump.rdb
1
2your_target_server
:目標 ServBay 伺服器之位址或主機名稱。- 重要:於複製至目標 ServBay
/Applications/ServBay/db/redis/
目錄前,請確認目標 ServBay 的 Redis 服務已停止。
於目標 ServBay 環境啟動 Redis 服務: 啟動 Redis 服務後,會自動載入新的
dump.rdb
檔案。
注意事項
- 停止服務:在直接複製或搬移資料庫檔案(特別是 MySQL/MariaDB/PostgreSQL 的資料目錄)前,務必透過 ServBay GUI 或指令工具停止對應資料庫服務。對運行中的資料庫檔案直接複製,可能造成資料不一致或毀損。Redis 以
dump.rdb
檔案還原時亦需先停止服務。 - 權限問題:請確認執行檔案複製、搬移或匯入操作的用戶有足夠權限存取並修改相關目錄及檔案。
- 檔案路徑:請仔細核對 ServBay 安裝路徑(預設為
/Applications/ServBay
)及各資料庫檔案實際位置,尤其是不同版本子目錄。 - 用戶與權限:遷移後,請檢查資料庫內用戶、權限及設定是否需因應新環境調整。
- ServBay 內建備份:ServBay 亦提供便利的內建備份與還原功能,透過 GUI 操作即可,支援設定、網站檔案、資料庫及 SSL 憑證,可作為手動檔案管理的補充或替代。
總結
ServBay 藉由規範化的檔案結構,為開發者提供明確的資料庫檔案管理基礎。本文詳盡介紹了 MySQL、MariaDB、PostgreSQL 及 Redis 在 ServBay 中的檔案存放位置,並提供如何運用標準指令列工具進行備份、還原與遷移的實務指引。熟悉這些技能,能助您更妥善管理本機開發環境中的資料庫資料,確保資料安全,並有效地跨環境移轉專案。結合 ServBay 提供的其他便利功能(如內建備份),能大幅提升您的開發效率與數據管理能力。