docker mysql 生產環境_如何部署Docker MySQL生產環境?

1 前言

Docker容器原則上是短暫的,如果容器被刪除或損毀,數據或配置將丟失,所以上個章節部署的MySQL只適合于測試環境,由于生產的需求,本章將使用Docker卷機制持久保存Docker容器中創建的數據。

2 最佳實踐

2.1 環境配置

2.1.1 系統環境配置

IP Address = 10.168.0.71

Host Name = any

OS = CentOS 7.6 x86_64

2.1.2 軟件環境配置

2.2 非持久化方式啟動MySQL

2.2.1 下載MySQL服務器Docker鏡像

docker pull mysql/mysql-server:5.6

其他版本的下載,請使用以下命令,

docker pull mysql/mysql-server:5.5

docker pull mysql/mysql-server:5.6

docker pull mysql/mysql-server:5.7

docker pull mysql/mysql-server:8.0

docker pull mysql/mysql-server:latest

下載完畢后,你可以使用以下命令查看當前下載的鏡像,

docker images

可見如下顯示,

REPOSITORY TAG IMAGE ID CREATED SIZE

mysql/mysql-server 5.6 8fe1c25ccc38 6 weeks ago 218MB

2.2.2 初始化一個非持久化實例

docker run --name mysql1 -d mysql/mysql-server:5.6 --character-set-server=utf8 --collation-server=utf8_general_ci

啟動實力后,可見如下顯示,

87cb7f2615ff3f762332eb826566a566888e7ade0ecf5fe55cc4c462d7f2e9da

可使用如下命令查看正在運行的容器,

docker ps

可見如下顯示,

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

18682cd5edea mysql/mysql-server:5.6 "/entrypoint.sh mysq…" About a minute ago Up About a minute (healthy) 3306/tcp mysql1

2.2.3 檢查MySQL啟動的log

docker logs mysql1

2.2.4 獲取初始化密碼

docker logs mysql1 2>&1 | grep -i "GENERATED ROOT PASSWORD:"

可見如下輸出,

Entrypoint] GENERATED ROOT PASSWORD: 63JyseNLAsYf4vnydUS0D3x4NasF

注:以上密碼為“[im4DdeRId3gOM0bAKIBzumJYBr”

2.2.5 從容器內部連接MySQL服務器

docker exec -it mysql1 mysql -uroot -p

然后,我們需要使用如下命令修改root密碼才能繼續,

alter user 'root'@'localhost' identified by 'rootpassword';

如果有以下錯誤提示,

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'rootpassword'' at line 1

請使用如下命令配置,

set password for 'root'@'localhost'=PASSWORD('rootpassword');

2.2.6 創建授權賬號

grant all privileges on *.* to 'root'@'%' identified by "rootpassword";

flush privileges;

2.2.7 查詢實例IP

docker inspect mysql1

可見如下顯示,

[...]

"Networks": {

"bridge": {

"IPAMConfig": null,

"Links": null,

"Aliases": null,

"NetworkID": "e3134a755397c4841912004d8ecff4bf918f6484e9873e3da815946062e87940",

"EndpointID": "8ae10d4677c284e21523fbf4457aa8b0c2a297999a717d111f6b05c12a56fa0a",

"Gateway": "172.17.0.1",

"IPAddress": "172.17.0.2",

"IPPrefixLen": 16,

"IPv6Gateway": "",

"GlobalIPv6Address": "",

"GlobalIPv6PrefixLen": 0,

"MacAddress": "02:42:ac:11:00:02",

"DriverOpts": null

}

}

[...]

注:參數”IPAddress”的聲明即實例當前地址

2.2.8 測試登錄

yum install -y mariadb

安裝完客戶端后,可使用如下命令測試,

mysql -uroot -p -h 172.17.0.2

2.3 持久化方式啟動MySQL

2.3.1 持久化的說明

docker inspect mysql1

可見如下輸出,

[...]

"Mounts": [

{

"Type": "volume",

"Name": "6757102195b9452306e48650023d366d2c3d72b51764878f08279bb58dca1cb2",

"Source": "/data/docker-runningdata/volumes/6757102195b9452306e48650023d366d2c3d72b51764878f08279bb58dca1cb2/_data",

"Destination": "/var/lib/mysql",

"Driver": "local",

"Mode": "",

"RW": true,

"Propagation": ""

}

[...]

如上所示,“docker inspect”命令所輸出的JSON文件,

– “Mount”關鍵字聲明Docker卷相關定義

– “Destination”關鍵字聲明存于容器內部路徑為“/var/lib/mysql”

– “Source”關鍵字聲明存于物理主機的卷路徑為“/data/docker-runningdata/volumes/6757102195b9452306e48650023d366d2c3d72b51764878f08279bb58dca1cb2/_data”

基于以上,如果需要持久保存數據,官方提供以下命令范式用于啟動,

docker run --name=mysql1 \

--mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf \

--mount type=bind,src=/path-on-host-machine/datadir,dst=/var/lib/mysql \

-d mysql/mysql-server:tag

2.3.2 創建數據目錄和配置文件目錄

mkdir -p /data/docker/etc/mysql

mkdir -p /data/docker/data/

2.3.3 復制實例數據到本地

docker cp mysql1:/etc/my.cnf /data/docker/etc/mysql

docker cp mysql1:/etc/my.cnf.d /data/docker/etc/mysql

docker cp mysql1:/var/lib/mysql /data/docker/data/

2.3.4 停止并刪除之前的實例

docker stop mysql1

docker rm mysql1

2.3.5 啟動MySQL數據庫實例

docker run --name=mysql1 \

--mount type=bind,src=/data/docker/etc/mysql/my.cnf,dst=/etc/my.cnf \

--mount type=bind,src=/data/docker/etc/mysql/my.cnf.d,dst=/etc/my.cnf.d \

--mount type=bind,src=/data/docker/data/mysql,dst=/var/lib/mysql \

-d mysql/mysql-server:5.6 \

--character-set-server=utf8 \

--collation-server=utf8_general_ci

2.3.6 測試登錄

mysql -uroot -p -h 172.17.0.2

2.4 管理MySQL實例

2.4.1 使用shell管理MySQL服務器

docker exec -it mysql1 bash

可見如下命令提示符,

bash-4.2#

可使用如下命令查看MySQL的數據目錄,

bash-4.2# ls /var/lib/mysql

可見如下提示,

auto.cnf ib_logfile0 ib_logfile1 ibdata1 mysql mysql.sock performance_schema test

2.4.2 管理MySQL容器的相關命令

docker start mysql1

docker restart mysql1

docker stop mysql1

docker rm mysql1

2.5 將容器加入一個特定的網絡

2.5.1 創建容器間的網絡

docker network create cmdschool-net

可以使用如下命令確認網絡的創建,

docker network ls

可見如下顯示,

NETWORK ID NAME DRIVER SCOPE

42120d142861 bridge bridge local

a44be59ebfd9 cmdschool-net bridge local

5bf4d2d3d1a6 host host local

e9ee5d7f4acc none null local

2.5.2 停止并刪除之前配置的實例

docker stop mysql1

docker rm mysql1

2.5.3 使用新的參數連接Docker網絡

docker run --name=mysql1 \

--mount type=bind,src=/data/docker/etc/mysql/my.cnf,dst=/etc/my.cnf \

--mount type=bind,src=/data/docker/etc/mysql/my.cnf.d,dst=/etc/my.cnf.d \

--mount type=bind,src=/data/docker/data/mysql,dst=/var/lib/mysql \

--network=cmdschool-net \

-d mysql/mysql-server:5.6 \

--character-set-server=utf8 \

--collation-server=utf8_general_ci

注:留意“–network”參數

2.5.4 查詢當前實例的IP

docker inspect mysql1

可見如下顯示,

"Networks": {

"cmdschool-net": {

"IPAMConfig": null,

"Links": null,

"Aliases": [

"4e0f2027134c"

],

"NetworkID": "a44be59ebfd9319f7c0ae0dd26f4d41f0d576141481388346a0ff870ee2ed809",

"EndpointID": "76513bee3bddd2c80f611e93f003dbb6c9abd53d184ade5e35faf6bb3d19f3cf",

"Gateway": "172.19.0.1",

"IPAddress": "172.19.0.2",

"IPPrefixLen": 16,

"IPv6Gateway": "",

"GlobalIPv6Address": "",

"GlobalIPv6PrefixLen": 0,

"MacAddress": "02:42:ac:13:00:02",

"DriverOpts": null

}

}

注:參數”IPAddress”的聲明即實例當前地址

2.5.5 測試登錄

mysql -uroot -p -h 172.19.0.2

注:請自行安裝mysql客戶端

參閱文檔

=================

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534963.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534963.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534963.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

kali 切換root權限_Ubuntu 被曝嚴重漏洞:切換系統語言 + 輸入幾行命令,就能獲取 root 權限...

公眾號關注 “GitHubDaily”設為 “星標”,帶你了解技術圈內新鮮事!來自量子位無需系統密碼,就能添加新的 sudo 用戶、獲取 root 權限,事后還能刪除不留痕跡。這是 GitHub 安全研究員 Kevin Backhouse 發現的一個 Ubuntu 系統大漏…

oracle定義變量sql賦值_ORACLE獲取SQL綁定變量值的方法總結

本文總結一下ORACLE數據庫中如何獲取SQL綁定變量值的方法,在SQL優化調優過程中,經常會用到這方面的知識點。在此梳理、總結一下這方面的知識點,方面日后查找、翻閱。方法1:查詢V$SQLV$SQL視圖中的BIND_DATA字段用來存儲綁定變量的…

transition css_Transition 過渡

1:基本概念在一定時間內平滑的過渡,也就是圓滑的以動畫效果改變css的屬性值。它的過渡可以由鼠標點擊、焦點獲取或者失去、被點擊事件或對元素的改變中觸發;不能主動觸發,只能被動觸發。常用的基本屬性有:Transition-d…

jdbc mysql分頁_JDBC【數據庫連接池、DbUtils框架、分頁】

1.數據庫連接池什么是數據庫連接池簡單來說:數據庫連接池就是提供連接的。。。為什么我們要使用數據庫連接池數據庫的連接的建立和關閉是非常消耗資源的頻繁地打開、關閉連接造成系統性能低下編寫連接池編寫連接池需實現java.sql.DataSource接口創建批量的Connectio…

python讀寫文件操作_詳解Python文件讀寫操作

讀文件 打開文件(文件需要存在)#打開文件 f open("data.txt","r") #設置文件對象 print(f)#文件句柄 f.close() #關閉文件 #為了方便,避免忘記close掉這個文件對象,可以用下面這種方式替代 with open(data.t…

keyloadtool_phoenix 利用CsvBulkLoadTool 批量帶入數據并自動創建索引

需要先創建表:CREATE TABLE IF NOT EXISTS population (state CHAR(2) NOT NULL, city VARCHAR NOT NULL, population BIGINTCONSTRAINT my_pk PRIMARY KEY (state, city));在phoenix 目錄下執行hadoop jar /home/phoenix-4.6.0-HBase-1.0-bin/phoenix-4.6.0-HBase-…

【cloud Alibaba】(三)流量控制、熔斷降級(下)——Sentinel

各位小伙伴們大家好,歡迎來到這個小扎扎的spring cloud專欄,在這個系列專欄中我對B站尚硅谷陽哥的spring cloud教程進行一個總結,鑒于 看到就是學到、學到就是賺到 精神,這波依然是血賺 ┗|`O′|┛ 💡Sen…

python gui入門的例子_Python GUI編程之Tkinter入門之道

相信剛學習使用Python進行GUI編程的時候,肯定都會聽過Tkinter,畢竟是standard Python interface to the Tk GUI toolkit.用來寫一些小程序還是很方便的。但如果是剛接觸GUI編程的話肯定是被官方文檔搞的有些懵,畢竟還沒弄清楚套路。之前使用過…

@async 默認線程池_SpringBoot 線程池的使用

Java大聯盟幫助萬千Java學習者持續成長關注作者|Musclehengblog.csdn.net/Muscleheng/article/details/81409672前言最近在做訂單模塊,用戶購買服務類產品之后,需要進行預約,預約成功之后分別給商家和用戶發送提醒短信。考慮發短信…

mysql 橫向擴展 中間件_mysql-proxy數據庫中間件架構 | 架構師之路

一、mysql-proxy簡介mysql-proxy是mysql官方提供的mysql中間件服務,上游可接入若干個mysql-client,后端可連接若干個mysql-server。它使用mysql協議,任何使用mysql-client的上游無需修改任何代碼,即可遷移至mysql-proxy上。mysql-…

python selenium對象怎么序列化_python selenium爬取斗魚

不加延遲報錯selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:”xpath”,”selector”:”.//span[class”DyListCover-hot”]”}(Session info: chrome80.0.3987.122)最開始以為是版本問題,不…

神經網絡的全連接層_深度神經網絡全連接層

一、概念全連接層一般在網絡的最后部分做分類輸出,全連接層的有m個輸入和n個輸出,每一個輸出都和所有的輸入相連,相連的權重w都是不一樣的,同時每一個輸出還有一個bias。二、前向全連接假設輸入是4,輸出是4&#xff0c…

vs 選定內容沒有屬性頁_從智能單品,到全屋智能:2019中國智能家居發展白皮書【附82頁PPT】...

2019年,智能家居行業在技術、市場和行業的變革中迎接新的挑戰和機遇。一方面,AI、IoT、邊緣計算全面賦能智能家居;另一方面,中國的房地產行業正在從上半場的“增量開發”,切換到下半場的“存量經營”、“樓盤精裝化”政…

python決策樹的應用_機器學習-決策樹實戰應用

1.下載2.安裝:雙擊3.創建桌面快捷方式安裝目錄\bin文件夾\:找到gvedit.exe文件右鍵 發送到桌面快捷方式,如下圖:4.配置環境變量將graphviz安裝目錄下的bin文件夾添加到Path環境變量中:5.驗證是否安裝并配置成功進入win…

【SSM面向CRUD編程專欄 3】關于黑馬程序員最全SSM框架教程視頻,P37集老師跳過的模塊創建以及tomcat下載安裝配置和運行等諸多問題

寫在前面:? 本人是在學習B站黑馬程序員SSM框架教程視頻的時候在P37集遇到了問題,如果不解決還沒辦法往下接著聽,老師跳過的模塊創建以及tomcat下載安裝配置和運行等諸多問題,全在這篇博客中得到了解決 😢解決上…

python人臉識別源碼_Python 抖音機器人,讓你找到漂亮小姐姐

本項目作者沉迷于抖音無法自拔,常常花好幾個小時在抖音漂亮小姐姐身上。本著高效、直接地找到漂亮小姐姐的核心思想,我用 Python ADB 做了一個 Python 抖音機器人 Douyin-Bot。特性自動翻頁顏值檢測人臉識別自動點贊自動關注隨機防 Ban自動評論原理打開…

thinkphp josn mysql_ThinkPHP:JSON字段類型的使用(ORM)

ThinkPHP5.1版本正式發布已經有一段時間了,我會陸續給大家介紹其中的新特性。今天要給大家介紹的是一個可能很多用戶還不了解的一個特性:JSON字段數據支持。不過首先注意一點,本篇內容中描述的JSON字段數據的支持是從V5.1.4版本引入的。由于包…

獲取http地址如何從上面抓取圖片_用 Python 自動抓取妹子圖

目錄前言Media Pipeline啟用Media Pipeline使用 ImgPipeline抓取妹子圖瞎比比與送書后話前言我們在抓取數據的過程中,除了要抓取文本數據之外,當然也會有抓取圖片的需求。那我們的 scrapy 能爬取圖片嗎?答案是,當然的。說來慚愧&a…

MySQL摘要_mysql摘要

2011-04-15(1)mysqld關閉命令:mysqladmin -u root shutdown。注意:windows命令以enter結束不是;,mysql命令行才是(2)mysql終端接入,修改mysql.user表內容,添加授權用戶。insert into mysql.user(Host,User,Password,ss…