docker stack 部署mysql 5.6

來源:互聯網
上載者:User

標籤:tar   lan   順序   ports   TE   資料庫   word   伺服器ip   登入   

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

 2018/7/1_第1次修改                       ccb_warlock

 

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

 mysql作為常用的關係型資料庫和項目的關係非常緊密。由於經常需要搭建臨時的mysql服務,而臨時搭建時大多隻是為了臨時查點資料,而正常yum或apt-get的方式安裝需要下載大量的時間,且還需要從虛擬機器快照的角度進行復原清理環境。故最近嘗試了使用docker快速部署,感覺對於非壓力負載環境通過docker方式非常輕便,且清理乾淨。

 

 由於技術能力和公司業務所限,沒有嘗試過容器mysql的負載能力,按照一些反饋的說法自己搭建mysql容器的效能遠遠不如雲端服務器廠商提供的mysql服務(這裡我的理解是個人僅僅是搭了mysql容器但是沒有做各方面的最佳化,效能遠遠無法滿足生產環境的要求),所以容器部署mysql僅僅只是研發內部使用,沒有足夠的能力做最佳化還是不要急著上生產環境。

 

 mysql預設是關閉遠端存取,最近沒時間實驗部署直接開機遠端存取,目前的教程還需要連到mysql容器內部去進行配置,後期有空我會將缺失的內容補上。

 

  一、前提條件

  • 環境中已經部署了docker swarm(http://www.cnblogs.com/straycats/p/8978135.html)
  • 最好也部署了portainer(http://www.cnblogs.com/straycats/p/8978201.html)
  • 預設部署的伺服器IP:192.168.12.11
  • 預設swarm建立了network:myswarm-net

 

 二、部署mysql容器(5.6)

 2.1 建立映射目錄 

mkdir -p /usr/docker-vol/mysql/data

 

 2.2 配置mysql-stack.yml

 # 編輯mysql-stack.yml 

vi /root/mysql-stack.yml

# 添加下面的內容到mysq-stack.yml中,wq儲存 

version: ‘3.6‘services:  mysql:    image: mysql:5.6.40    environment:      # 設定時區為Asia/Shanghai      - TZ=Asia/Shanghai      - MYSQL_ROOT_PASSWORD=123456    volumes:      - /usr/docker-vol/mysql/data:/var/lib/mysql    deploy:      replicas: 1      restart_policy:        condition: any      resources:        limits:          cpus: "0.2"          memory: 512M      update_config:        parallelism: 1 # 每次更新1個副本        delay: 5s # 每次更新間隔         monitor: 10s # 單次更新多長時間後沒有結束則判定更新失敗        max_failure_ratio: 0.1 # 更新時能容忍的最大失敗率        order: start-first # 更新順序為新任務啟動優先    ports:      - 3306:3306    networks:      - myswarm-netnetworks:  myswarm-net:    external: true

 

 2.3 部署服務棧 

 1)命令方式

cddocker stack deploy -c mysql-stack.yml mysql-stack

 

 2)portainer介面方式(推薦)

 登入portainer(如果是根據上面的教程部署的portainer,瀏覽器訪問http://宿主機IP:9000,在stack中增加mysql-stack.yml檔案中的內容)

 

 三、配置mysql允許遠程IP訪問

 官方提供的鏡像和安裝在linux的配置一樣,初始只允許本地服務訪問mysql,需要調整mysql的配置之後才能達到遠端連線的目的。(正如前面講的,目前的方案並不是很合理,將來需要最佳化這個方式)

 

# 擷取容器id

docker ps

找到mysql-stack_mysql.*******************的CONTAINER ID(我這裡的是0d66abc8ce32)

 

# 進入容器

docker exec -it 0d66abc8ce32 /bin/bash

 

# 登入mysql

mysql -uroot -p

輸入初始化的root密碼123456登入。

 # 進入mysql庫

mysql> use mysql;

# 設定允許root使用者用於通過任意IP訪問mysql

mysql> grant all privileges  on *.* to [email protected]‘%‘ identified by "123456";

# 使配置立即生效

mysql> flush privileges;

# 退出mysql

mysql> exit

  

# 退出容器

exit

 

 接著用navicat串連192.168.12.11:3306,使用者名稱/密碼:root/123456,提示串連成功,說明mysql容器已經可以使用了。

 

docker stack 部署mysql 5.6

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.