欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過Docker?Compose部署MySQL的詳細教程

 更新時間:2025年03月26日 15:51:46   作者:Kwan的解憂雜貨鋪  
Docker?Compose?作為?Docker?官方的容器編排工具,為?MySQL?數(shù)據(jù)庫部署帶來了顯著優(yōu)勢,下面小編就來為大家詳細介紹一下具體的流程吧

一、Docker Compose 部署 MySQL 的優(yōu)勢

Docker Compose 作為 Docker 官方的容器編排工具,為 MySQL 數(shù)據(jù)庫部署帶來了顯著優(yōu)勢:

聲明式配置管理:所有服務(wù)參數(shù)通過 YAML 文件集中定義,避免了復(fù)雜的命令行參數(shù)

多服務(wù)協(xié)同:輕松實現(xiàn) MySQL 與 Web 應(yīng)用、緩存等服務(wù)的集成部署

環(huán)境一致性:開發(fā)、測試、生產(chǎn)環(huán)境使用相同配置,消除環(huán)境差異問題

快速重建:一鍵完成服務(wù)停止、重建和啟動,簡化維護流程

版本控制友好:docker-compose.yml 文件可納入 Git 等版本控制系統(tǒng)管理

二、環(huán)境準備與基礎(chǔ)配置

2.1 項目目錄結(jié)構(gòu)

推薦的標準目錄布局:

mysql-project/
├── docker-compose.yml
├── config/
│   └── my.cnf
├── data/
│   └── mysql/
├── initdb/
│   └── init.sql
└── .env

2.2 基礎(chǔ) docker-compose.yml

version: "3.8"

???????services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: appdb
      MYSQL_USER: appuser
      MYSQL_PASSWORD: userpass
    ports:
      - "3306:3306"
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./config/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./initdb:/docker-entrypoint-initdb.d
    restart: unless-stopped

三、生產(chǎn)環(huán)境部署方案

3.1 完整配置示例

version: "3.8"

services:
  mysql:
    image: mysql:8.0
    container_name: production_mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: ${DB_NAME}
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      TZ: Asia/Shanghai
    ports:
      - "${DB_PORT}:3306"
    volumes:
      - mysql_data:/var/lib/mysql
      - ./config/my.cnf:/etc/mysql/conf.d/my.cnf:ro
      - ./backups:/backups
    networks:
      - backend
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: 2G
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 3

volumes:
  mysql_data:
    driver: local
    driver_opts:
      type: none
      device: ./data/mysql
      o: bind

???????networks:
  backend:
    driver: bridge

3.2 環(huán)境變量文件(.env)

DB_ROOT_PASSWORD=your_strong_root_password
DB_NAME=production_db
DB_USER=app_user
DB_PASSWORD=your_app_user_password
DB_PORT=3306

四、高級配置技巧

4.1 主從復(fù)制配置

services:
  mysql-master:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: masterpass
      MYSQL_REPLICATION_USER: repl_user
      MYSQL_REPLICATION_PASSWORD: repl_pass
    command:
      - --server-id=1
      - --log-bin=mysql-bin
      - --binlog-format=ROW
    volumes:
      - master_data:/var/lib/mysql
    networks:
      - mysql-cluster

  mysql-slave:
    image: mysql:8.0
    depends_on:
      - mysql-master
    environment:
      MYSQL_ROOT_PASSWORD: slavepass
      MYSQL_MASTER_HOST: mysql-master
      MYSQL_MASTER_USER: repl_user
      MYSQL_MASTER_PASSWORD: repl_pass
    command:
      - --server-id=2
    volumes:
      - slave_data:/var/lib/mysql
    networks:
      - mysql-cluster

volumes:
  master_data:
  slave_data:

???????networks:
  mysql-cluster:
    driver: bridge

4.2 多環(huán)境配置管理

base-compose.yml:

services:
  mysql:
    image: mysql:${MYSQL_VERSION:-8.0}
    volumes:
      - ${DATA_VOLUME:-mysql_data}:/var/lib/mysql

docker-compose.prod.yml:

services:
  mysql:
    extends:
      file: base-compose.yml
      service: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${PROD_DB_PASSWORD}
    deploy:
      resources:
        limits:
          memory: 4G

五、安全加固方案

5.1 安全配置示例

services:
  mysql:
    image: mysql:8.0
    user: "999:999"
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true
    environment:
      - MYSQL_SECURE_TRANSPORT=ON
      - MYSQL_SSL=ON
    volumes:
      - ./ssl:/etc/mysql/ssl

5.2 網(wǎng)絡(luò)隔離

networks:
  internal:
    internal: true
  external:
    driver: bridge

services:
  mysql:
    networks:
      - internal
  app:
    networks:
      - internal
      - external

六、備份與恢復(fù)方案

6.1 備份服務(wù)配置

services:
  mysql:
    # ...原有配置...
    volumes:
      - ./backups:/backups

  backup:
    image: mysql:8.0
    depends_on:
      - mysql
    volumes:
      - ./backups:/backups
    command: >
      sh -c 'while true; do
        sleep 86400;
        mysqldump -h mysql -u root -p$$MYSQL_ROOT_PASSWORD --all-databases | gzip > /backups/backup_$$(date +%Y%m%d).sql.gz;
      done'
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}

6.2 恢復(fù)流程

停止服務(wù):

docker-compose stop mysql

恢復(fù)數(shù)據(jù):

docker-compose run --rm mysql bash -c "gunzip < /backups/backup_20230101.sql.gz | mysql -u root -p${DB_ROOT_PASSWORD}"

七、性能優(yōu)化建議

7.1 資源限制與調(diào)優(yōu)

services:
  mysql:
    deploy:
      resources:
        limits:
          cpus: "4"
          memory: 8G
    environment:
      - MYSQL_INNODB_BUFFER_POOL_SIZE=4G
      - MYSQL_INNODB_LOG_FILE_SIZE=1G
      - MYSQL_TABLE_OPEN_CACHE=4000
      - MYSQL_MAX_CONNECTIONS=500

7.2 監(jiān)控集成

services:
  mysql:
    environment:
      - MYSQL_PERFORMANCE_SCHEMA=ON
    labels:
      - "prometheus.monitoring=true"

  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml

八、日常運維管理

8.1 常用命令

啟動服務(wù):

docker-compose up -d

查看日志:

docker-compose logs -f mysql

執(zhí)行備份:

docker-compose exec mysql mysqldump -u root -p${DB_ROOT_PASSWORD} --all-databases > backup.sql

8.2 版本升級流程

備份數(shù)據(jù)

修改 docker-compose.yml 中的鏡像版本

執(zhí)行更新:

docker-compose pull mysql
docker-compose up -d --force-recreate mysql

到此這篇關(guān)于通過Docker Compose部署MySQL的詳細教程的文章就介紹到這了,更多相關(guān)Docker Compose部署MySQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • idea連接docker實現(xiàn)一鍵部署的方法

    idea連接docker實現(xiàn)一鍵部署的方法

    這篇文章主要介紹了idea連接docker實現(xiàn)一鍵部署的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 使用Docker部署Nginx+Flask+Mongo的應(yīng)用

    使用Docker部署Nginx+Flask+Mongo的應(yīng)用

    這篇文章主要介紹了使用Docker部署Nginx+Flask+Mongo的應(yīng)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Docker 網(wǎng)絡(luò)命令詳解

    Docker 網(wǎng)絡(luò)命令詳解

    這篇文章主要詳細介紹了Docker 網(wǎng)絡(luò)命令的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • docker-compose部署eureka服務(wù)端、客戶端的案例代碼

    docker-compose部署eureka服務(wù)端、客戶端的案例代碼

    這篇文章主要介紹了docker-compose部署eureka服務(wù)端、客戶端,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • win10環(huán)境下安裝Docker的實現(xiàn)

    win10環(huán)境下安裝Docker的實現(xiàn)

    這篇文章主要介紹了win10環(huán)境下安裝Docker的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Docker?Memcached?容器化部署的實現(xiàn)

    Docker?Memcached?容器化部署的實現(xiàn)

    memcached是一套分布式的高速緩存系統(tǒng),本文主要介紹了Docker?Memcached?容器化部署的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Docker 部署 Mysql8.0的方法示例

    Docker 部署 Mysql8.0的方法示例

    這篇文章主要介紹了Docker 部署 Mysql8.0的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 利用 Docker 構(gòu)建簡單的 java 開發(fā)編譯環(huán)境的方法詳解

    利用 Docker 構(gòu)建簡單的 java 開發(fā)編譯環(huán)境的方法詳解

    這篇文章主要介紹了利用 Docker 構(gòu)建簡單的 java 開發(fā)編譯環(huán)境的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • docker各種報錯解決方案小結(jié)

    docker各種報錯解決方案小結(jié)

    最近在學(xué)習(xí)docker的時候遇到了不少問題,索性給大家整理下,下面這篇文章主要給大家介紹了關(guān)于docker各種報錯解決的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • docker安裝rabbitmq無法進入管理頁面的問題

    docker安裝rabbitmq無法進入管理頁面的問題

    這篇文章主要介紹了docker安裝rabbitmq無法進入管理頁面的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12

最新評論