最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker使用run命令部署MySQL的流程步驟

 更新時間:2025年03月26日 08:42:13   作者:Kwan的解憂雜貨鋪  
容器化技術為數據庫部署帶來了革命性的變化,MySQL作為最流行的開源關系型數據庫之一,結合Docker容器可以實現快速部署、環(huán)境隔離和便捷管理,本文給大家介紹了Docker使用run命令部署MySQL的流程步驟,需要的朋友可以參考下

一、MySQL 容器化概述

1.1 容器化部署優(yōu)勢

  • 環(huán)境一致性:消除"在我機器上能運行"的問題,確保開發(fā)、測試、生產環(huán)境完全一致
  • 快速部署:秒級啟動 MySQL 實例,傳統(tǒng)方式安裝需要 10 分鐘以上
  • 資源隔離:每個容器實例擁有獨立的運行環(huán)境,避免資源沖突
  • 版本管理:輕松切換不同 MySQL 版本(5.7/8.0 等)
  • 便攜性:鏡像可跨平臺運行,支持 x86/ARM 架構

1.2 官方鏡像特點

MySQL 官方 Docker 鏡像提供:

  • 多個版本選擇(最新版/特定版本)
  • 基于 Alpine 和 Debian 的兩種鏡像
  • 自動初始化機制
  • 環(huán)境變量配置支持
  • 默認安全配置(非 root 運行)

二、基礎部署實戰(zhàn)

2.1 拉取官方鏡像

獲取最新 MySQL 8.0 鏡像:

docker pull mysql:8.0

驗證鏡像:

docker image inspect mysql:8.0 | jq '.[0].Config.Env'

2.2 最小化啟動命令

docker run -d \
  --name mysql-dev \
  -e MYSQL_ROOT_PASSWORD=my-secret-pw \
  -p 3306:3306 \
  mysql:8.0

參數說明:

  • -d:后臺運行
  • --name:容器命名
  • -e:設置環(huán)境變量(必需設置 root 密碼)
  • -p:端口映射(主機端口:容器端口)

2.3 連接驗證

使用 MySQL 客戶端連接:

mysql -h 127.0.0.1 -P 3306 -u root -p
# 輸入密碼my-secret-pw

容器內連接:

docker exec -it mysql-dev mysql -u root -p

三、數據持久化方案

3.1 掛載數據目錄

創(chuàng)建數據目錄:

mkdir -p ~/mysql-data/{data,conf.d,initdb}

啟動容器:

docker run -d \
  --name mysql-prod \
  -v ~/mysql-data/data:/var/lib/mysql \
  -v ~/mysql-data/conf.d:/etc/mysql/conf.d \
  -v ~/mysql-data/initdb:/docker-entrypoint-initdb.d \
  -e MYSQL_ROOT_PASSWORD=strongpassword \
  mysql:8.0

目錄作用:

  • /var/lib/mysql:MySQL 數據文件
  • /etc/mysql/conf.d:自定義配置文件
  • /docker-entrypoint-initdb.d:初始化 SQL 腳本

3.2 自定義配置文件

示例 my.cnf:

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=200
innodb_buffer_pool_size=512M

3.3 數據庫初始化

在 initdb 目錄放置 SQL 文件:

echo "CREATE DATABASE appdb;" > ~/mysql-data/initdb/init.sql
echo "CREATE USER 'appuser'@'%' IDENTIFIED BY 'userpass';" >> ~/mysql-data/initdb/init.sql
echo "GRANT ALL ON appdb.* TO 'appuser'@'%';" >> ~/mysql-data/initdb/init.sql

四、安全加固配置

4.1 非 root 運行

docker run -d \
  --user mysql \
  --read-only \
  --cap-drop ALL \
  mysql:8.0

4.2 密碼加密策略

docker run -d \
  -e MYSQL_ROOT_PASSWORD=securepass \
  -e MYSQL_SECURE_TRANSPORT=ON \
  -e MYSQL_SSL=ON \
  mysql:8.0

4.3 網絡隔離

創(chuàng)建專用網絡:

docker network create mysql-net

docker run -d \
  --network mysql-net \
  --name mysql-secure \
  -p 3306:3306 \
  mysql:8.0

五、高級管理技巧

5.1 性能調優(yōu)參數

docker run -d \
  --name mysql-tuned \
  -e MYSQL_ROOT_PASSWORD=pass123 \
  -e MYSQL_INNODB_BUFFER_POOL_SIZE=1G \
  -e MYSQL_INNODB_LOG_FILE_SIZE=256M \
  -e MYSQL_MAX_CONNECTIONS=500 \
  mysql:8.0

5.2 主從復制配置

主庫:

docker run -d \
  --name mysql-master \
  -e MYSQL_ROOT_PASSWORD=masterpass \
  -e MYSQL_REPLICATION_USER=repl \
  -e MYSQL_REPLICATION_PASSWORD=replpass \
  -e MYSQL_MASTER_PORT=3306 \
  mysql:8.0 \
  --server-id=1 \
  --log-bin=mysql-bin \
  --binlog-format=ROW

從庫:

docker run -d \
  --name mysql-slave \
  --link mysql-master:master \
  -e MYSQL_ROOT_PASSWORD=slavepass \
  -e MYSQL_MASTER_HOST=master \
  -e MYSQL_MASTER_USER=repl \
  -e MYSQL_MASTER_PASSWORD=replpass \
  -e MYSQL_MASTER_PORT=3306 \
  mysql:8.0 \
  --server-id=2

5.3 備份恢復方案

執(zhí)行備份:

docker exec mysql-prod sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > backup.sql

定時備份腳本:

#!/bin/bash
BACKUP_DIR=/path/to/backups
DATE=$(date +%Y%m%d_%H%M%S)
docker exec mysql-prod mysqldump -uroot -p${MYSQL_ROOT_PASSWORD} --all-databases | gzip > ${BACKUP_DIR}/backup_${DATE}.sql.gz
find ${BACKUP_DIR} -name "*.sql.gz" -mtime +7 -delete

六、生產環(huán)境部署建議

6.1 資源限制

docker run -d \
  --name mysql-production \
  --memory="4g" \
  --memory-swap="6g" \
  --cpus="2" \
  --blkio-weight=500 \
  mysql:8.0

6.2 監(jiān)控配置

啟用性能模式:

docker run -d \
  -e MYSQL_PERFORMANCE_SCHEMA=ON \
  mysql:8.0

集成 Prometheus:

docker run -d \
  -e MYSQL_EXPORTER=ON \
  -p 9104:9104 \
  mysql:8.0

6.3 高可用方案

使用健康檢查:

docker run -d \
  --health-cmd="mysqladmin ping -uroot -p$$MYSQL_ROOT_PASSWORD" \
  --health-interval=10s \
  --health-timeout=3s \
  --health-retries=3 \
  mysql:8.0

七、常見問題排查

7.1 啟動失敗診斷

查看日志:

docker logs mysql-prod

常見錯誤:

  • 密碼未設置:MYSQL_ROOT_PASSWORD環(huán)境變量缺失
  • 端口沖突:3306 端口已被占用
  • 權限問題:數據目錄不可寫

7.2 性能問題分析

查看運行狀態(tài):

docker exec -it mysql-prod mysqladmin -uroot -p status

慢查詢日志:

docker exec mysql-prod sh -c 'cat /var/log/mysql/mysql-slow.log'

7.3 版本升級流程

  • 備份所有數據
  • 啟動新版本容器:
docker run -d \
  --name mysql-new \
  -v ~/mysql-data/data:/var/lib/mysql \
  mysql:8.1
  • 運行 mysql_upgrade
  • 驗證后切換流量

八、最佳實踐總結

  1. 數據持久化:必須掛載/var/lib/mysql 目錄
  2. 密碼安全:使用強密碼并定期更換
  3. 資源限制:根據服務器配置合理分配 CPU/內存
  4. 定期備份:實現自動化備份策略
  5. 監(jiān)控告警:配置性能監(jiān)控和異常告警
  6. 版本控制:明確記錄使用的 MySQL 版本

到此這篇關于Docker使用run命令部署MySQL的流程步驟的文章就介紹到這了,更多相關Docker run部署MySQL內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • docker compose安裝es+kibana 8.12.2的詳細過程

    docker compose安裝es+kibana 8.12.2的詳細過程

    因云平臺需要改造,es7升級為es8,所以記錄一下,es8需要開啟ssl認證,需要配置證書,全本帶你用docker安裝,便于后面es8的學習,這篇文章主要介紹了docker compose安裝es+kibana 8.12.2的詳細過程,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Docker容器啟動時初始化Mysql數據庫的方法

    Docker容器啟動時初始化Mysql數據庫的方法

    這篇文章給大家介紹Docker容器啟動時初始化Mysql數據庫的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2013-11-11
  • 使用Docker安裝detectron2的配置方法

    使用Docker安裝detectron2的配置方法

    Detectron2 是一個用于目標檢測、分割和其他視覺識別任務的平臺,下面采用 docker 方式在 windows 上安裝,對Docker安裝detectron2的配置方法感興趣的朋友一起看看吧
    2024-03-03
  • Docker進階之構建自定義鏡像實戰(zhàn)指南

    Docker進階之構建自定義鏡像實戰(zhàn)指南

    從docker鏡像倉庫中下載的鏡像不能滿足我們的需求時,可以對鏡像進行更改,下面這篇文章主要給大家介紹了關于Docker進階之構建自定義鏡像實戰(zhàn)的相關資料,需要的朋友可以參考下
    2022-07-07
  • 基于docker-compose構建Mongodb副本集的示例詳解

    基于docker-compose構建Mongodb副本集的示例詳解

    副本集是?MongoDB?高可用性和數據安全性策略的基礎,適用于對數據安全性和服務可用性有較高要求的場景,本文給大家介紹了如何基于docker-compose構建Mongodb副本集,文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • 二進制部署docker的超詳細教程

    二進制部署docker的超詳細教程

    部署環(huán)境并不會一直順利,有些時候因為時內網環(huán)境,無法使用yum等情況,對于一些中間件的部署缺少依賴,我們可以使用二進制包的形式部署docker,這篇文章主要給大家介紹了關于二進制部署docker的相關資料,需要的朋友可以參考下
    2024-04-04
  • docker network create命令的具體使用

    docker network create命令的具體使用

    docker network create命令用于創(chuàng)建一個新的網絡連接,本文就來詳細的介紹一下docker network create命令的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • Docker 運行多個Springboot的詳細教程

    Docker 運行多個Springboot的詳細教程

    這篇文章主要介紹了Docker 運行多個Springboot的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 3分鐘用Docker搭建一個Minecraft服務器

    3分鐘用Docker搭建一個Minecraft服務器

    這篇文章主要介紹了3分鐘用Docker搭建一個Minecraft服務器的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • docker啟動報錯205/limit的解決方案

    docker啟動報錯205/limit的解決方案

    Dcoker啟動報錯經常能看到 205/limit這個錯誤提示,這是告訴你linux操作系統(tǒng)的文件描述符設置的和Docker的不匹配,或者是設置的比較小了,本文介紹了docker啟動報錯205/limit的解決方案,需要的朋友可以參考下
    2024-06-06

最新評論

卢龙县| 清河县| 赤城县| 罗城| 定西市| 浦城县| 马龙县| 海城市| 宜春市| 泸水县| 东台市| 乐至县| 九寨沟县| 荔波县| 榕江县| 隆回县| 博罗县| 澄江县| 崇阳县| 于都县| 绥芬河市| 乌兰察布市| 左贡县| 东兴市| 沅陵县| 安义县| 南京市| 互助| 延长县| 南川市| 集贤县| 阿克陶县| 家居| 洪江市| 东至县| 奎屯市| 吉隆县| 奉化市| 黄大仙区| 北流市| 夏河县|