docker stack 部署 mysql 5.6


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

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

 

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

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

 

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

 

 mysql默認是關閉遠程訪問,最近沒時間試驗部署直接開機遠程訪問,目前的教程還需要連到mysql容器內部去進行配置,后期有空我會將缺失的內容補上。

 


  一、前提條件

 


 二、部署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-net

networks:
  myswarm-net:
    external: true

 

 2.3 部署服務棧 

 1)命令方式

cd
docker 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 root@'%' identified by "123456";

# 使配置立即生效

mysql> flush privileges;

# 退出mysql

mysql> exit

  

# 退出容器

exit

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM