[TOC]mysql
在真實的研發環境中,通常存在local
、developer
、test
、product
等等環境。如何在這些環境中,實現統一的、標準化的配置問題是架構師須要考慮的一件事情。git
每種環境通常都須要配置以下部分:github
除線上環境須要考慮到穩定性外,在運維角色沒有對容器化有豐富經驗的狀況下,能夠考慮線上環境傳統部署,如:本身搭組件集羣或者使用雲服務。redis
其他環境皆使用容器化部署。spring
能夠考慮的部署方案有以下:sql
local
部署:docker-compose
;developer
、test
部署:docker-swarm
orkubernetes
。- 全部環境都基於
kubernetes
部署。PS:部署腳本通常由運維角色維護,
local
部署腳本從運維角色獲取。docker
附上一個local
部署docker-compse
腳本數據庫
docker-compose.yml
version: '2' services: mysql: image: mysql:5.6 command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci] environment: MYSQL_ROOT_PASSWORD: 123456 # For testing from the host: # mysql --host=127.0.0.1 --port=3306 --user root -p ports: - "3306:3306" redis: image: redis:3.0 command: ['redis-server', '--requirepass 123456'] expose: - 6379 ports: - "6379:6379" mongo: image: 'umputun/mongo-auth' environment: - MONGO_PASSWD=123456 ports: - "27017:27017"
PS:docker-compose官方文檔springboot
PS:按需使用相應組件,也能夠本身添加須要的組件,local
環境沒作數據持久化處理,如需用在其他環境,請參考文檔配置。架構
數據標準化主要解決的是各環境表結構不一致的問題。線上環境必定要關掉該功能。
線上環境的數據變動必定要按規範、走變動流程,經
DBA
或者運維
角色執行。其他環境我的解決方案:
flyway
springboot
環境中flyway
的使用application.yml
中填入相應配置文件flyway: enabled: true baseline-on-migrate: true locations: "db/migration" schemas: table_name
在指定目錄下設置配置腳本
V{版本}__{腳本名}.sql
springboot
項目PS:flyway官網
配置中心解決
apollo
、nacos
、spring cloud config
local
環境能夠從配置中心拉一份developer
環境配置下來,更改參數至local
環境組件。
PS:各環境重要參數,經過配置中心配置,而不是放在項目目錄,上傳至git
。這樣配置信息不會有配置文件級外泄風險。
PS:apollo
PS:nacos
本文由博客一文多發平臺 OpenWrite 發佈!