在數據工程的開發週期中,建立一個與生產環境高度相似的本地開發環境至關重要。此舉不僅能顯著降低雲端資源成本,更能讓開發者在一個獨立、可控的沙盒中進行實驗、除錯與功能驗證,從而加速迭代速度並確保程式碼品質。本文聚焦於數據工程師最常用的兩大核心元件:關聯式資料庫與物件儲存。透過在本地部署 MySQL,工程師可以模擬結構化數據的儲存與查詢場景;而利用 MinIO,則能建構一個相容 S3 API 的物件儲存系統,用以處理非結構化數據。掌握這些工具的本地化部署,是數據工程師從理論邁向實踐的基礎,也是打造穩健數據管道的第一步。
數據工程高科技養成:從理論到實踐的玄貓指引
本地環境建置:掌控開發細節
MySQL
Windows
Your MySQL connection id is 11
Server version: 8.0.32 MySQL Community Server - GPL
Oracle is a registered trademark of Oracle Corporation and/or
its
affiliates. Other names may be trademarks of their respective
owners.
- 登入後,讀者可以創建一個名為
my_db的資料庫,如下所示:
mysql> create database my_db;
- 資料庫創建後,讀者需要創建一個名為
db_user的資料庫使用者,如下所示:
mysql> create user 'db_user'@'localhost' identified by
'A1Im1zIW54cF1^';
- 授予
db_user在my_db中所有物件的權限,以便他們能夠讀取表格、視圖等:
grant all on my_db.* to 'db_user'@'localhost';
- 重新載入權限以使授權生效:
mysql> flush privileges;
Mac
在macOS上安裝MySQL有多種選項。請遵循相關安裝說明。
Linux
以下概述的步驟已在RHEL 8.6上進行測試。對於其他Linux發行版,請參考相關文檔。
請遵循以下步驟在機器上安裝MySQL:
- 要開始安裝,玄貓需要將MySQL yum軟體庫添加到本地yum軟體庫列表中。第一步是將MySQL GNU Privacy Guard (GPG) 金鑰添加到系統中:
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
- 接下來,玄貓添加yum軟體庫:
sudo yum install https://repo.mysql.com/mysql80-community-release-el8-4.noarch.rpm
- 完成後,玄貓可以檢查以確保yum軟體庫已成功添加:
yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community MySQL Connectors Community
mysql-tools-community MySQL Tools Community
mysql80-community MySQL 8.0 Community Server
- 驗證yum軟體庫已更新後,玄貓可以繼續安裝MySQL社群版:
sudo yum install mysql-community-server
- 在安裝過程中,會創建一個臨時密碼。要找到該密碼,請啟動MySQL社群伺服器,它會將密碼記錄在日誌檔案中:
sudo systemctl start mysqld
sudo grep 'A temporary password' /var/log/mysqld.log | tail -1
2023-01-19T09:48:40.087823Z 6 [Note] [MY-010454] [Server] A
temporary password is generated for root@localhost: %w%yXL1Uq7MZ
- 運行MySQL附帶的安全安裝腳本,這有助於提高MySQL安裝的安全性:
/usr/bin/mysql_secure_installation
並提供在安裝過程中生成的一次性密碼 (OTP)。它會提示讀者更改root使用者密碼。玄貓建議設定一個強密碼。對於其餘選項,玄貓建議讀者按下Y以獲得更好的安全性。
- 接下來,玄貓將使用root登入MySQL:
mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.32 MySQL Community Server - GPL
Oracle is a registered trademark of Oracle Corporation and/or
its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current
input statement.
- 創建一個
my_db資料庫:
mysql> create database my_db;
- 創建一個
db_user資料庫使用者:
mysql> create user 'db_user'@'localhost' identified by
'uAbjdNiuL01^';
- 授予
db_user在my_db中所有物件的權限:
mysql> grant all on my_db.* to 'db_user'@'localhost';
- 最後,重新載入權限以使授權生效:
mysql> flush privileges;
現在玄貓已經了解了如何安裝MySQL,讓玄貓看看如何將其設定為Docker容器。在繼續之前,請確保讀者的機器上已安裝Docker。如果沒有安裝Docker,請參考本章前面概述的步驟。
為此,拉取最新的MySQL伺服器映像:
docker pull mysql
以分離模式啟動一個名為mysql_server的容器:
docker run --name mysql_server --restart on-failure -e MYSQL_ROOT_
PASSWORD='n1288TQ2jJ0YN' -d mysql:latest
執行mysql命令以啟動shell:
docker exec -it mysql_server mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
數據工程高科技養成:從理論到實踐的玄貓指引
本地環境建置:掌控開發細節
MySQL
Your MySQL connection id is 9
Server version: 8.0.32 MySQL Community Server - GPL
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
mysql>
現在讀者可以創建資料庫和使用者,授予權限等。接下來,玄貓將使用MinIO進行物件儲存。
MinIO
Windows
以下是在Windows中安裝MinIO的步驟:
下載MinIO伺服器可執行檔。讀者可以從MinIO官方網站下載最新的
minio.exe檔案。讀者可以呼叫該可執行檔來啟動伺服器。啟動MinIO伺服器:在PowerShell或命令提示字元中,導航到可執行檔的位置,或者將
minio.exe檔案的路徑添加到$PATH系統變數:
minio.exe server C:\minio --console-address :9090
- 將瀏覽器連接到MinIO伺服器:透過在瀏覽器中輸入MinIO伺服器輸出的位址來訪問MinIO控制台。使用螢幕上顯示的使用者ID和密碼。通常,預設的用戶名和密碼是
minioadmin。MinIO控制台提供了身份和存取管理 (IAM)、指標和日誌監控或伺服器配置等功能。每個MinIO伺服器都包含其自己的嵌入式MinIO控制台:
此圖示:MinIO使用者介面
@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_
skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100
rectangle "MinIO Console" as MinIOCons {
component "登入介面" as Login
component "Bucket 管理" as BucketMgmt
component "物件瀏覽" as ObjectBrowser
component "IAM (使用者/群組)" as IAM
component "監控 (Metrics/Logs)" as Monitoring
component "配置" as Configuration
component "導航欄" as Nav
component "主內容區" as MainContent
Login -down-> Nav : 登入成功
Nav -right-> MainContent
Nav --> BucketMgmt
Nav --> ObjectBrowser
Nav --> IAM
Nav --> Monitoring
Nav --> Configuration
}
@enduml看圖說話:
此圖示展示了MinIO控制台的使用者介面。使用者首先需要透過登入介面輸入預設的用戶名和密碼(通常為minioadmin)來訪問控制台。成功登入後,使用者將看到一個帶有導航欄的主介面,導航欄提供了訪問MinIO各項核心功能的入口。這些功能包括Bucket管理(用於創建、編輯和刪除儲存桶)、物件瀏覽(用於上傳、下載和管理儲存桶中的物件)、IAM(身份和存取管理,用於管理使用者和群組的權限)、監控(查看系統指標和日誌)以及配置(調整伺服器設定)。這個控制台為使用者提供了一個直觀且全面的管理工具,以有效操作其本地物件儲存服務。
安裝MinIO客戶端:MinIO客戶端允許讀者從命令列與MinIO卷進行互動。讀者可以從MinIO官方網站下載
mc.exe檔案。雙擊檔案運行它。或者,在命令提示字元或PowerShell中運行以下命令:
\path\to\mc.exe --help
- 使用
mc.exe alias set快速驗證並連接到MinIO部署:
mc.exe alias set local http://localhost:9000 minioadmin minioadmin
mc.exe admin info local
Mac
以下是在Mac上安裝MinIO的步驟:
- 安裝MinIO伺服器:
brew install minio/stable/minio
- 啟動MinIO伺服器:從終端機,使用MinIO伺服器在
~/data資料夾中啟動一個本地MinIO實例。讀者也可以使用任何具有讀取、寫入和刪除存取權限的其他資料夾:
export MINIO_CONFIG_ENV_FILE=/etc/default/minio
minio server ~/data --console-address :9090
- 將瀏覽器連接到MinIO伺服器:透過在瀏覽器中輸入MinIO伺服器輸出的位址來訪問MinIO控制台。例如,輸出中的
http://127.0.0.1:9090表示兩個可能的連接控制台的位址。使用螢幕上顯示的使用者ID和密碼。通常,預設的用戶名和密碼是minioadmin。MinIO控制台提供了身份和存取管理 (IAM)、指標和日誌監控或伺服器配置等功能。每個MinIO伺服器都包含其自己的嵌入式MinIO控制台:
此圖示:MinIO使用者介面 (Mac)
@startuml
!define DISABLE_LINK
!define PLANTUML_FORMAT svg
!theme _none_
skinparam dpi auto
skinparam shadowing false
skinparam linetype ortho
skinparam roundcorner 5
skinparam defaultFontName "Microsoft JhengHei UI"
skinparam defaultFontSize 16
skinparam minClassWidth 100
rectangle "MinIO Console (macOS)" as MinIOConsMac {
component "登入介面" as LoginMac
component "Bucket 管理" as BucketMgmtMac
component "物件瀏覽" as ObjectBrowserMac
component "IAM (使用者/群組)" as IAMMac
component "監控 (Metrics/Logs)" as MonitoringMac
component "配置" as ConfigurationMac
component "導航欄" as NavMac
component "主內容區" as MainContentMac
LoginMac -down-> NavMac : 登入成功
NavMac -right-> MainContentMac
NavMac --> BucketMgmtMac
NavMac --> ObjectBrowserMac
NavMac --> IAMMac
NavMac --> MonitoringMac
NavMac --> ConfigurationMac
}
@enduml看圖說話:
此圖示展示了在macOS環境下MinIO控制台的使用者介面,其功能與Windows版本相似。使用者透過登入介面輸入預設的minioadmin用戶名
縱觀現代管理者的多元挑戰,本地開發環境的建置不僅是數據工程的基礎步驟,更是影響後續開發效能與品質的關鍵決策點。此階段的選擇,已超越單純的工具準備,進入了個人工作流程哲學的塑造層次。
深入剖析後可以發現,原生安裝與容器化部署代表了兩種核心價值的取捨。前者提供了對系統底層運作的深度掌控,有助於極致的效能調校與問題排查,卻也帶來了平台依賴與環境不一致的潛在風險;後者則以標準化、隔離性與高可攜性,換取了對底層細節的適度抽象,大幅提升了部署效率與團隊協作的一致性。這兩種路徑的權衡,實質上反映了工程師在「精準控制」與「快速迭代」間的策略性思考,正是區分資深與初階工作者的關鍵思維之一。
展望未來2-3年,隨著雲原生架構的普及,這種本地容器化的實踐(如以MinIO模擬雲端物件儲存)將無縫接軌公有雲的開發模式,成為必備的橋接技能。能夠依專案生命週期與團隊需求,靈活切換兩種部署模式的能力,將構成數據工程師的核心競爭力。
玄貓認為,對於重視長期職涯發展的數據工程師,應著重於理解兩種部署模式背後的設計哲學與適用場景,而非單純擇一。同時掌握原生安裝的深度與容器化部署的彈性,才是構築未來高效能數據解決方案的穩固基石。