Docker部署MySQL鏡像的保姆級(jí)教程
1、安裝Docker
Docker的安裝可參考:如何在Ubuntu安裝docker以及一些常見報(bào)錯(cuò)
2、創(chuàng)建掛載目錄
# 創(chuàng)建宿主機(jī)mysql掛載目錄 sudo mkdir -p /data/docker/mysql/config
?3、準(zhǔn)備配置文件
# 1.創(chuàng)建配置文件 sudo touch /data/docker/mysql/config/my.cnf
配置文件的內(nèi)容如下:
[mysqld] # 設(shè)置3306端口 port=3306 # 允許最大連接數(shù) max_connections=1000 # 允許連接失敗的次數(shù)。這是為了防止有人從該主機(jī)試圖攻擊數(shù)據(jù)庫系統(tǒng) max_connect_errors=100 # 服務(wù)端使用的字符集默認(rèn)為UTF8 character-set-server=utf8mb4 # 創(chuàng)建新表時(shí)將使用的默認(rèn)存儲(chǔ)引擎 default-storage-engine=INNODB #是否對(duì)sql語句大小寫敏感,1表示不敏感 lower_case_table_names = 1 #MySQL連接閑置超過一定時(shí)間后(單位:秒)將會(huì)被強(qiáng)行關(guān)閉 #MySQL默認(rèn)的wait_timeout 值為8個(gè)小時(shí), interactive_timeout參數(shù)需要同時(shí)配置才能生效 interactive_timeout = 1800 wait_timeout = 1800 #Metadata Lock最大時(shí)長(秒), 一般用于控制 alter操作的最大時(shí)長sine mysql5.6 #執(zhí)行 DML操作時(shí)除了增加innodb事務(wù)鎖外還增加Metadata Lock,其他alter(DDL)session將阻塞 lock_wait_timeout = 3600 #內(nèi)部內(nèi)存臨時(shí)表的最大值。 #比如大數(shù)據(jù)量的group by ,order by時(shí)可能用到臨時(shí)表, #超過了這個(gè)值將寫入磁盤,系統(tǒng)IO壓力增大 tmp_table_size = 64M max_heap_table_size = 64M # === 日志相關(guān) === ## >>> 錯(cuò)誤日志 # 錯(cuò)誤日志存放文件,默認(rèn) datadir 目錄下 log_error=/var/log/mysql/log-error.log # 開啟事務(wù)中所有死鎖的InnoDB信息記錄在錯(cuò)誤日志中 innodb_print_all_deadlocks=ON ## >>> 二進(jìn)制日志 # 二進(jìn)制日志文件基礎(chǔ)名稱以及路徑,默認(rèn) datadir 目錄下 log_bin=/var/log/mysql/log-bin ## >>> 慢查詢?nèi)罩? # 開啟慢查詢?nèi)罩?,默認(rèn)OFF,建議開發(fā)和測(cè)試環(huán)境開啟 slow_query_log=ON # 慢查詢?nèi)罩疚募恢? slow_query_log_file=/var/log/mysql/log-slow.log # 慢查詢時(shí)間閾值,默認(rèn)10,單位:秒 long_query_time=10 [mysql] # 設(shè)置mysql客戶端默認(rèn)字符集 default-character-set=utf8mb4 [client] # 設(shè)置mysql客戶端連接服務(wù)端時(shí)默認(rèn)使用的端口 port=3306 default-character-set=utf8mb4
4、運(yùn)行MySQL容器
# 1.拉取鏡像 sudo docker pull mysql:8.0.40 # 2.啟動(dòng)鏡像 sudo docker run --privileged=true --net=bridge \ -p 3306:3306 \ --name mysql \ -v /data/docker/mysql/data:/var/lib/mysql \ -v /data/docker/mysql/config:/etc/mysql/conf.d \ -v /data/docker/mysql/log:/var/log/mysql \ -e MYSQL_ROOT_PASSWORD=root@123 \ -e TZ=Asia/Shanghai \ -d mysql:8.0.40
參數(shù)解析如下:
參數(shù) | 參數(shù)說明 |
docker run | 運(yùn)行 Docker 容器 |
--name mysql | 設(shè)置容器的名稱為mysql |
-d mysql:8.0.40 | 后臺(tái)運(yùn)行mysql容器 |
--privileged=true | Docker會(huì)賦予容器幾乎與宿主機(jī)相同的權(quán)限 |
--net=bridge | 網(wǎng)絡(luò)模式配置,默認(rèn)是bridge,bridge表示使用容器內(nèi)部配置網(wǎng)絡(luò) |
-p 3306:3306 | 將主機(jī)的 3306 端口映射到容器的 3306 端口 |
-e MYSQL_ROOT_PASSWORD=root@123 | 設(shè)置 mysql 的管理員賬號(hào)密碼為 root@123 |
-e TZ=Asia/Shanghai | 設(shè)置容器的時(shí)區(qū)為上海時(shí)間,便于處理時(shí)間相關(guān)的數(shù)據(jù) |
-v /data/docker/mysql/data:/var/lib/mysql | 將主機(jī)data目錄掛載到容器內(nèi),用于數(shù)據(jù)持久化 |
-v /data/docker/mysql/log:/var/log/mysql | 將主機(jī)log目錄掛載到容器內(nèi),用于日志文件持久化 |
-v /data/docker/mysql/config:/etc/mysql/conf.d | 將主機(jī)中 /data/docker/mysql/config 目錄映射到容器內(nèi)的 /etc/mysql/conf.d 目錄,這樣可以提供自定義的 mysql 配置文件 |
5、Compose運(yùn)行MySQL容器
創(chuàng)建docker-compose.yml文件
sudo touch /data/docker/mysql/docker-compose.yml
文件內(nèi)容如下:
version: '3' services: mysql: image: mysql:8.0.40 container_name: mysql ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: root@123 TZ: Asia/Shanghai volumes: - /data/docker/mysql/data:/var/lib/mysql - /data/docker/mysql/config:/etc/mysql/conf.d - /data/docker/mysql/log:/var/log/mysql privileged: true network_mode: "bridge"
運(yùn)行容器
#-f:調(diào)用文件,-d:開啟守護(hù)進(jìn)程 sudo docker compose -f /data/docker/mysql/docker-compose.yml up -d
6、查看MySQL運(yùn)行狀態(tài)
7、常見問題
?7.1、用DBeaver 連接數(shù)據(jù)庫的時(shí)候出現(xiàn)Public Key Retrieval is not allowed
解決方案:連接設(shè)置 - 驅(qū)動(dòng)屬性 ,找到allowPublicKeyRetrieval,把a(bǔ)llowPublicKeyRetrieval的值設(shè)為 切換為 true 即可。
以上就是Docker部署MySQL鏡像的保姆級(jí)教程的詳細(xì)內(nèi)容,更多關(guān)于Docker部署MySQL鏡像的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Docker部署Mysql,.Net6,Sqlserver等容器
這篇文章介紹了Docker部署Mysql,.Net6,Sqlserver等容器的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12Docker容器搭建android編譯環(huán)境的實(shí)踐記錄
這篇文章主要介紹了Docker容器搭建android編譯環(huán)境的實(shí)踐記錄,主要包括部署容器、鏡像管理、容器管理等相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07