中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL容器化詳細教程

發布時間:2020-02-29 02:42:56 來源:網絡 閱讀:279 作者:wangkunj 欄目:MySQL數據庫

前言:?

上篇文章介紹了Docker工具的安裝及常用命令使用。本篇文章我們會介紹如何在Docker中運行MySQL實例,可能有的小伙伴會問:為什么要在Docker里運行MySQL呢?因為在Docker里部署MySQL實例操作簡單,不需要考慮操作系統等依賴差異,而且可以多實例部署,比如說我們原來服務器有安裝MySQL5.7,我們想再運行MySQL8.0實例的話只需要用Docker啟動MySQL8.0鏡像即可。下面我們就來介紹下如何用Docker啟動MySQL實例。

▍1.拉取MySQL官方鏡像

在上篇文章中我們介紹過Docker中三個基本的概念:鏡像,容器,倉庫。要用在Docker中部署MySQL,第一步要做的是從官方倉庫中拉取MySQL鏡像,這里我們從Docker Hub中拉取MySQL鏡像。進入Docker Hub,搜索MySQL,可以看到如下畫面,其中有不同版本的鏡像及使用介紹。

MySQL容器化詳細教程cdn.nlark.com/yuque/0/2019/png/119537/1572918549506-2b81bb36-1574-4aea-bc6b-9bb21fd1178d.png">

比如我們想拉取MySQL5.7版本及8.0版本的鏡像,可以做如下操作:

# 拉取5.7及8.0版本鏡像 稍等片刻即可拉取成功
docker pull mysql:5.7.23
docker pull mysql:8.0.18

# 查看鏡像
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               8.0.18              c8ee894bd2bd        2 weeks ago         456MB
mysql               5.7.23              1b30b36ae96a        12 months ago       372MB

其實MySQL官方鏡像也存在一些缺陷,比如說時區不是北京時間,系統字符集問題等。下面以MySQL5.7.23版本鏡像為基礎,展示下如何修改構建鏡像。

# 創建Dockerfile 主要作用是更改系統字符集及時區 內容如下:
cat Dockerfile 
FROM mysql:5.7.23
MAINTAINER wang
RUN echo "alias ls='ls --color=auto'" >> /root/.bashrc \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV LANG=C.UTF-8

# 構建鏡像
docker build -t my-mysql:5.7.23 . 
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM mysql:5.7.23
 ---> 1b30b36ae96a
Step 2/4 : MAINTAINER wang
 ---> Running in a7cc94f95cc7
Removing intermediate container a7cc94f95cc7
 ---> d9590ed98de5
Step 3/4 : RUN echo "alias ls='ls --color=auto'" >> /root/.bashrc     && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 ---> Running in e698bfdb3817
Removing intermediate container e698bfdb3817
 ---> 31c9ed9103c5
Step 4/4 : ENV LANG=C.UTF-8
 ---> Running in eefa296fef94
Removing intermediate container eefa296fef94
 ---> 10aa697936e9
Successfully built 10aa697936e9
Successfully tagged my-mysql:5.7.23

# 再次查看鏡像即可找到我們新構建的鏡像
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
my-mysql            5.7.23              10aa697936e9        About a minute ago   372MB
mysql               8.0.18              c8ee894bd2bd        2 weeks ago          456MB
mysql               5.7.23              1b30b36ae96a        12 months ago        372MB
▍2.啟動MySQL實例

這里為大家介紹如何利用上面構建的鏡像來運行MySQL實例,MySQL容器化其實也需要映射端口,數據持久化,加載配置文件等操作,下面給大家演示下具體啟動操作。

2.1 創建數據持久化路徑及配置文件

# 創建配置文件目錄及數據目錄
mkdir -p /data/mysql57/{cnf,data}

# 添加配置文件my.cnf
cd /data/mysql57/cnf/
vim my.cnf

# 配置文件內容如下,可自定義
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql

server-id = 33061
max_connections = 1000
sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
innodb_file_per_table = 1
log_timestamps=SYSTEM
character-set-server = utf8
max_allowed_packet = 32M
sort_buffer_size = 4M
read_buffer_size = 4M
join_buffer_size = 4M
binlog_cache_size = 4M
tmp_table_size = 96M
max_heap_table_size = 96M
innodb_buffer_pool_size = 512M

#logs
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/slow.log
long_query_time = 3
log-bin = /var/lib/mysql/binlog
binlog_format = row
expire_logs_days = 15
log_bin_trust_function_creators = 1

2.2 docker run運行MySQL實例

# 一條命令啟動一個MySQL實例
docker run -itd -p 33061:3306 --name mysql57 --hostname=mysql57 -v /data/mysql57/cnf:/etc/mysql -v /data/mysql57/data:/var/lib/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=Asdf@123456  my-mysql:5.7.23

# 解釋下各個參數的含義
-d: 后臺運行容器,并返回容器ID
-i: 以交互模式運行容器,通常與 -t 同時使用
-t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用
-p: 指定端口映射,格式為:主機(宿主)端口:容器端口
--name="mysql57": 為容器指定一個名稱
--hostname=mysql57: 指定容器的hostname
-v: 綁定一個卷
--privileged=true: 以特權方式啟動容器

2.3 檢查容器狀態

# 查看容器狀態
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                NAMES
04cd3d99d5cb        my-mysql:5.7.23     "docker-entrypoint.s…"   13 seconds ago      Up 11 seconds       33060/tcp, 0.0.0.0:33061->3306/tcp   mysql57

# 進入容器內
docker exec -it mysql57 /bin/bash 或 docker exec -it [CONTAINER ID] /bin/bash
▍3.其他相關操作

到此為止,我們已經在Docker中成功運行了MySQL實例,其實還沒有結束,還有好多操作還沒講,比如如何備份恢復,怎么更改配置等,下面簡單介紹下這類相關操作。

  • 備份恢復
# 備份
docker exec mysql57 sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /tmp/all-databases.sql

# 恢復
docker exec -i mysql57 sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /tmp/all-databases.sql
  • 更改配置
# 更改配置只需要修改宿主機 /data/mysql57/cnf/my.cnf 文件,然后重啟容器即可
docker restart mysql57

如果你想在本地通過工具連接容器內MySQL的話,可以使用宿主機ip加映射端口來連接。比如我們上面創建的MySQL實例就可以通過宿主機ip+30661端口來連接,若無法連接請檢查網絡及服務器防火墻。

總結:?

本文主要介紹在Docker中部署MySQL的方法步驟,體驗下來你會發現非常簡單方便,而且可以大規模多實例部署。假如你想體驗最新版本8.0.18的話,可以自己部署下試試看,其實還可以更簡單,比如說直接運行docker run mysql:5.7.23 即可啟動一個實例,但是為了更加規范,還是建議將配置文件及數據目錄都掛載到宿主機本地。

參考資料:?

  • https://hub.docker.com/_/mysql
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会东县| 康定县| 凤翔县| 海南省| 华蓥市| 宝清县| 沁源县| 宜昌市| 巴楚县| 德安县| 泾源县| 黑山县| 秭归县| 黄平县| 咸阳市| 元氏县| 婺源县| 十堰市| 安康市| 济阳县| 铁岭市| 东方市| 丽水市| 锡林郭勒盟| 营山县| 邵阳县| 嘉祥县| 遵化市| 苗栗市| 民权县| 新乡县| 斗六市| 吉水县| 仁布县| 厦门市| 广河县| 延吉市| 松桃| 双城市| 承德县| 沙坪坝区|