亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 基礎知識 > 正文

經過Docker技術在macOS上布局3實例MGR環境

2024-09-12 20:30:06
字體:
來源:轉載
供稿:網友
   通過Docker技術在macOS上部署3實例MGR環境
 
  自從有了Docker,各種環境部署都簡單從容起來,其實MySQL的環境部署起來同樣得心應手。
 
  前提條件,已經在自己的macOS操作系統中設置成功了運行在本地的3節點MySQL Group Replication集群,如何設置,可以參考官方文檔。
 
  假設在我們的macOS上已經實現了如下架構的3節點MGR集群,我們的目標是將這三個數據庫全部挪到docker容器中去運行,并且可以互相通信,仍然是MGR集群。
  
  Docker on MacOS
 
  接下來我們把MySQL放在一邊,先介紹一下在macOS中的docker架構,在macOS中,docker的實現跟在其它Linux系統中略有不同,在其它Linux系統中,操作系統本身就是docker容器的宿主機,docker鏡像都是直接存儲在宿主機本身的文件系統中,比如我們通過docker info命令可以看到docker的根目錄是:
 
  $ docker info|grep "Docker RootDir"
 
  Docker Root Dir: /var/lib/docker
 
  但是在macOS下,我們直接查看這個目錄,其實是根本不存在的。
 
  $ ls /var/lib/docker
 
  ls: /var/lib/docker: No such file or directory
 
  Docker宿主機是誰
 
  那么這個目錄到底在哪里?實際上是在一個QEMU虛擬機中,當我們在macOS中安裝完docker并啟動,就是啟動了一個虛擬機,這個虛擬機的整個內容全部都在一個文件里,可以在docker程序屬性界面中看到這個文件的路徑,比如在我的機器上,路徑就是/Users/Kamus/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2,該文件通常比較大,特別是安裝了多個docker鏡像之后,會輕易占用到數十GB的空間。
 
   這個虛擬機被限制只能使用2顆CPU和2GB內存。
 
  那么,我們是否可以登錄這個虛擬機來確認這點呢?使用macOS自帶的screen命令可以登錄該臺虛擬機。如下,可以看到這是一個擁有非常新的Linux 4.9.38版本內核的虛擬機,在這個虛擬機中才有/var/lib/docker目錄,只有2顆CPU,總共有2GB內存。
  
  在screen的窗口按組合鍵control+a d(先按control+a,再按d)可以暫時dettach出這個screen,screen -r可以重新打開窗口。更多的screen命令,可以自行man screen來查看。
 
  所以現在我們可以明確一個概念,macOS本身并不是以后將運行的docker容器的宿主機,而這個Linux虛擬機才是真正的宿主機。這臺機器的主機名是moby,這正是docker項目社區版的名稱。
 
  Docker宿主機與macOS操作系統的目錄共享
 
  由于如下共享文件夾功能的存在,在這個虛擬機中可以訪問并更新macOS操作系統本地的目錄,這在后面我們將運行在本地的MySQL數據庫搬遷到docker容器中起了重要的作用。
  
  我們還是在screen中看一下這些共享目錄的情況。
 
  可以看到,確實macOS操作系統中的目錄在虛擬機中是可以直接訪問的,而且更方便的地方是,在虛擬機中自動掛載的目錄路徑跟macOS中的路徑是完全相同的,比如我的個人主目錄無論是在macOS中還是在這個虛擬機中,都是/Users/Kamus。
 
  那現在我們的思路基本上有了,就是要將原本運行在macOS操作系統中的MySQL數據庫的數據文件和配置文件挪到Docker宿主機可以訪問的目錄下,然后在docker容器中啟動MySQL實例。
 
  安裝MySQL docker鏡像
 
  先要將MySQL docker鏡像安裝上,這是運行MySQL docker容器的基礎。安裝鏡像極其簡單,只需要一步就可以,以下命令在macOS操作系統中執行。
 
  標準步驟是:
 
  $ docker pull mysql
 
  但是由于這樣會安裝latest版本,而我原先在macOS中的MySQL數據庫是5.7.17版本,為了避免可能產生的版本升級問題,我做了指定版本的鏡像拉取。
 
  $ docker pull mysql:5.7.17
 
  從官方的docker store中拉取MySQL鏡像,大約只需要幾分鐘時間,完畢以后,可以通過docker images命令來查看。
  
  第一行就是最新拉取的MySQL鏡像,這是創建者在4個月前創建的。
 
  運行MySQL docker容器前的準備
 
  設計docker宿主機目錄結構
 
  現在我們已經有了docker鏡像,也有了在macOS操作系統中運行良好的MySQL MGR集群,開始遷移。首先當然是干凈地關閉在macOS操作系統中的三臺MySQL數據庫,然后我們設計如下的目錄結構,將三個數據庫的數據文件全部分別挪進去。
 
  根據之前闡述的共享文件夾功能,可以知道在docker宿主機中是可以通過完全相同的路徑訪問到這幾個目錄的,我們將原本在macOS操作系統中的三個數據庫的數據文件分別移動到s1-docker,s2-docker,s3-docker目錄中,至于哪些文件需要移動,這是MySQL DBA的基本知識,不在這里贅述。
 
  由于目標是能運行MGR集群,那么是有一部分數據庫初始化參數要額外設置的,而docker容器中的my.cnf內容無法改動,所以我們再設計一個專門的目錄用來存儲所有數據庫的my.cnf文件。
  
  然后將原本各個數據庫的my.cnf文件分別拷貝到conf.d/s1-docker等三個目錄下,最后形成了如下的目錄結構。
 
  設計這些目錄結構的目的是在運行docker容器的時候通過volume選項將數據文件目錄掛載成容器內部的/var/lib/mysql目錄,將my.cnf參數文件所在目錄掛載成容器內部的/etc/mysql/conf.d目錄,從而實現MySQL數據庫實例啟動所需要的所有關鍵文件都存儲在宿主機中,而docker容器本身只提供MySQL軟件鏡像。這比將所有文件都存儲在docker鏡像內部更靈活。
 
  設計docker容器主機名和IP地址
 
  在macOS本機運行的MySQL實例中為MGR配置的各種參數中使用到的主機名往往是localhost,IP地址則是127.0.0.1,MGR集群的節點間通信端口也往往是指定了本機IP上的不同端口,如果我們參照了官方文檔中的搭建指南,使用的就是24901,24902,24903三個端口。
 
  group_replication_group_seeds="127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
 
  現在我們既然將數據庫搬到了容器中,那么就完全可以重新設計更有意義的主機名和分別的IP地址。
 
  在啟動Docker容器的時候,可以通過hostname和ip選項指定主機名和靜態IP。可以參照最后運行Docker容器的完整命令。
 
  如果要為Docker容器指定靜態IP,則必須要使用手動創建的network,通過以下命令可以創建,比如此處我們創建了名稱為mynet的網絡。
 
  $ docker network create--subnet=192.168.100.0/24 mynet
 
  創建完畢以后,通過network ls命令可以查看新創建的網絡??梢钥吹侥J是橋接方式。
  
  設計docker容器資源占用限制
 
  對于在同一宿主機上運行多個docker容器,進行資源限制是必不可少的需求,雖然在此文中我們只是進行將MySQL實例搬遷到docker容器中的測試,但是也仍然規劃了容器資源限制,由于宿主機本身只有2顆CPU和2GB內存,因此做如下規劃。
 
  在啟動Docker容器的時候,可以通過cpus和memory以及memory-swap選項指定CPU和內存的資源限制??梢詤⒄兆詈筮\行Docker容器的完整命令。
 
  根據以上設置修改各數據庫的my.cnf配置
 
  因為我們設計了容器啟動時候會擁有不同的IP地址,因此在容器中運行的MySQL實例的初始化參數中關于MGR的部分也需要指定這些IP地址。以下是my.cnf文件的設置內容。
 
  三個節點的my.cnf文件內容除了loose-group_replication_local_address參數之外,其它內容都是完全相同的。
 
  運行MySQL docker容器
 
  由于MGR集群要求每個數據庫在主機層是可以直接訪問到其它節點的主機名的,如果在普通的主機上,只需要修改/etc/hosts文件增加其它節點的主機名和IP地址對應條目即可,但是容器內的/etc/hosts卻是無法手動修改的,即使手動增加了條目,只要重新啟動容器,該條目就會丟失。
 
  要應對該問題,可以在運行容器時使用add_host選項。在真實的生產環境中,我們可以選擇配置專門的DNS服務器來做IP和主機名對應(DNS服務器同樣可以是Docker容器,我們后續的測試將增加此部分內容,本文先暫時通過add_host的方式來解決)。
 
  全部容器都啟動完畢以后,可以通過docker ps命令查看容器的運行狀態,或者通過docker logs命令查看MySQL數據庫日志的輸出。非常方便。
  
  啟動MGR
 
  通過如下命令登錄到Docker容器的操作系統中,再進入MySQL實例,啟動MGR。我們目前設置的是Single Primary模式的MGR,先啟動第一個Primary實例。
 
  再依次啟動第二個只讀實例。
 
  啟動第三個只讀實例。
 
  到此為止,我們將原先運行在macOS中的一整套MGR集群全部搬遷到docker容器中。最終實現了如下的系統架構。
 
  恩墨學院隸屬于云和恩墨(北京)信息技術有限公司,致力于提供專業高水準的oracle數據庫與大數據培訓服務,挖掘培養大數據與數據庫人才。恩墨學院提供包括個人實戰技能培訓、個人認證培訓、企業內訓在內的全方位大數據和數據庫技術培訓。ACE級別超強師資,配備專業實驗室,沉浸式學習與訓練,專業實驗室、配備專業助教指導訓練。能迅速融入專家圈子,業內資源豐富,迅速積累職場人脈。oracle數據庫課程包括:Oracle DBA實戰班、Oracle OCM考試、Oracle OCP考試等。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩美女视频免费看| 欧美最顶级丰满的aⅴ艳星| 中文字幕亚洲综合久久| 亚洲最新中文字幕| 国产精品久久久久福利| 欧美成年人视频| 欧美激情影音先锋| 伊人亚洲福利一区二区三区| 欧美俄罗斯乱妇| 国产精品主播视频| 国产亚洲精品高潮| 国产91免费观看| 亚洲tv在线观看| 美女啪啪无遮挡免费久久网站| 在线观看久久av| 亚洲欧美日韩区| 欧美野外wwwxxx| 欧美综合一区第一页| 日韩精品在线影院| 亚洲一区二区久久| 久久影视电视剧免费网站清宫辞电视| 国产精品毛片a∨一区二区三区|国| 国产亚洲精品一区二555| 成人免费高清完整版在线观看| 主播福利视频一区| 欧美大荫蒂xxx| 久久99久久久久久久噜噜| 日韩欧美在线中文字幕| 97色在线观看| 亚洲欧美中文日韩在线v日本| 国产日韩在线看片| 国产成人精品在线视频| 精品久久久久久久久久久久久| 久久久中精品2020中文| 日本a级片电影一区二区| 亚洲少妇中文在线| 中文字幕亚洲无线码a| 亚洲综合色av| 一区二区在线免费视频| 精品久久中文字幕久久av| 亚洲欧美中文字幕在线一区| 日韩在线激情视频| 国产成人高清激情视频在线观看| 成人做爽爽免费视频| 成人伊人精品色xxxx视频| 亚洲电影中文字幕| 精品亚洲一区二区三区在线观看| 欧美精品精品精品精品免费| 国产欧美日韩免费看aⅴ视频| www.美女亚洲精品| 亚洲国产精品推荐| 欧美激情中文字幕乱码免费| 国产日韩精品一区二区| 久久久亚洲精品视频| 国产成人中文字幕| 欧美成人激情图片网| 亚洲精品小视频在线观看| 97在线观看免费| 国产精品欧美一区二区三区奶水| 国产一区二区三区视频在线观看| 日日骚久久av| 一道本无吗dⅴd在线播放一区| 日韩电影中文字幕在线观看| 亚洲国产精品久久| 成人性生交大片免费看视频直播| 久久av资源网站| 国产97人人超碰caoprom| 欧美日韩国产第一页| 日本精品久久久| 亚洲激情免费观看| 欧美另类在线播放| 欧美性生活大片免费观看网址| 国产精品久久久久久久7电影| 国产999视频| 国产成人一区二区在线| 国产成人短视频| 欧美在线免费看| 狠狠操狠狠色综合网| 亚洲天堂日韩电影| 国产成人精品网站| 色中色综合影院手机版在线观看| 揄拍成人国产精品视频| 亚洲欧美国产精品| 日韩久久免费电影| 欧美日韩国产限制| 日韩久久免费电影| 欧美午夜www高清视频| 成人在线视频福利| 国语自产精品视频在线看| 欧洲美女7788成人免费视频| 欧美激情免费视频| 97碰碰碰免费色视频| 国产精品草莓在线免费观看| 日韩欧美在线视频日韩欧美在线视频| 日韩av一区二区在线| 日韩毛片在线看| 久久久国产精品x99av| 亚洲精品美女视频| 搡老女人一区二区三区视频tv| 精品国产户外野外| 色悠悠国产精品| 2021久久精品国产99国产精品| 在线看欧美日韩| 欧美中文字幕视频| 欧美成人午夜免费视在线看片| 中文字幕av一区中文字幕天堂| 久久国产精品电影| 亚洲男女性事视频| 欧美日韩在线视频一区| 久久久久久久久电影| 欧美日韩一区免费| 午夜精品一区二区三区在线播放| 午夜剧场成人观在线视频免费观看| 国外成人性视频| 国产欧美精品一区二区| 色综久久综合桃花网| 91禁外国网站| 国产一区二区精品丝袜| 欧美激情免费看| 日韩欧美第一页| 国语自产精品视频在线看| 久久成人免费视频| 国产精品一区二区女厕厕| 亚洲国产精品999| 亚洲大尺度美女在线| 91中文字幕在线观看| 国产日韩欧美视频| 久久在线精品视频| 久久精品国产精品| 日韩精品视频免费在线观看| 国产亚洲aⅴaaaaaa毛片| 国产日韩欧美夫妻视频在线观看| 亚洲性日韩精品一区二区| 日本高清久久天堂| 久久在线免费观看视频| 中文字幕成人精品久久不卡| 国产精品亚洲视频在线观看| 一区二区三区 在线观看视| 国产69精品久久久| 自拍亚洲一区欧美另类| 亚洲欧美国产一本综合首页| 亚洲国产另类 国产精品国产免费| 亚洲欧美日韩天堂| 国产精品电影观看| 欧美电影在线免费观看网站| 精品国产乱码久久久久久婷婷| 日韩精品视频免费在线观看| 福利二区91精品bt7086| 九九热精品视频在线播放| 亚洲日韩中文字幕| 国产精品久久久久久久久久| 亚洲精品久久久久中文字幕二区| 人妖精品videosex性欧美| 欧美日韩中文字幕综合视频| 中文在线不卡视频| 亚洲精品美女久久| 亚洲色图色老头| 国产精品成人va在线观看| 久久久亚洲影院你懂的| 亚洲国产日韩欧美在线动漫| 91沈先生在线观看| 国产精品视频自在线| 国产精品免费视频久久久| 欧美激情在线观看视频|