docker搭建Mysql集群的方法是什麼
docker基本指令:
更新軟體套件
yum -y update
安裝docker虛擬機器(centos 7)
yum install -y docker
執行、重新啟動、關閉docker虛擬機器
service docker start service docker stop
搜尋映像
docker search 镜像名称
#下載映像
docker pull 镜像名称
檢視鏡像
docker images
刪除映像
docker rmi 镜像名称
執行容器
docker run 启动参数 镜像名称
查看容器清單
docker ps -a
當我們想要使用java環境,我們可以這麼操作:
搜索: [root@vm_71_225_centos ~]# docker search java index name description stars official automated docker.io docker.io/node node.js is a javascript-based platform for... 5752 [ok] docker.io docker.io/tomcat apache tomcat is an open source implementa... 1891 [ok] docker.io docker.io/java java is a concurrent, class-based, and obj... 1745 [ok] docker.io docker.io/openjdk openjdk is an open-source implementation o... 1031 [ok]
下载: [root@vm_71_225_centos ~]# docker pull docker.io/java using default tag: latest trying to pull repository docker.io/library/java ... latest: pulling from docker.io/library/java 5040bd298390: downloading [=> ] 1.572 mb/51.36 mb
运行: [root@vm_71_225_centos ~]# docker run -it --name myjava docker.io/java bash root@25623e12b759:/# java -i: 以交互模式运行容器,通常与 -t 同时使用; -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
安裝pxc叢集(在此不做mysql pxc叢集與replication叢集的方案優劣說明,在此選用pxc叢集方案[多節點備份與強聯合性]):
安裝pxc鏡像
docker pull percona/percona-xtradb-cluster
檢視本機鏡像
[root@vm_71_225_centos ~]# docker images repository tag image id created size docker.io/hello-world latest e38bc07ac18e 2 months ago 1.85 kb docker.io/percona/percona-xtradb-cluster latest f1439de62087 3 months ago 413 mb docker.io/java latest d23bdf5b1b1b 17 months ago 643 mb
docker.io/percona/percona-xtradb-cluster 太長,進行改名:
[root@vm_71_225_centos ~]# docker tag percona/percona-xtradb-cluster pxc [root@vm_71_225_centos ~]# docker images repository tag image id created size docker.io/hello-world latest e38bc07ac18e 2 months ago 1.85 kb docker.io/percona/percona-xtradb-cluster latest f1439de62087 3 months ago 413 mb pxc latest f1439de62087 3 months ago 413 mb docker.io/java latest d23bdf5b1b1b 17 months ago 643 mb
建立net1網段:
docker network create --subnet=172.18.0.0/16 net1
建立五個資料卷(pxc無法直接存取宿組機的數據,所以建立五個docker資料卷)
docker volume create v1 docker volume create v2 docker volume create v3 docker volume create v4 docker volume create v5
查看資料卷位置:
[root@vm_71_225_centos code]# docker inspect v1 [ { "driver": "local", "labels": {}, "mountpoint": "/var/lib/docker/volumes/v1/_data", "name": "v1", "options": {}, "scope": "local" } ]
建立5節點的pxc叢集
#创建第1个mysql节点 docker run -d -p 3306:3306 -e mysql_root_password=abc123456 -e cluster_name=pxc -e xtrabackup_password=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc
等待2分鐘後,再建立第二個節點,等待第一個節點實例化完畢後,才能開啟第二個節點實例,不然會瞬間停止
建立其他節點:
#创建第2个mysql节点 docker run -d -p 3307:3306 -e mysql_root_password=abc123456 -e cluster_name=pxc -e xtrabackup_password=abc123456 -e cluster_join=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc #创建第3个mysql节点 docker run -d -p 3308:3306 -e mysql_root_password=abc123456 -e cluster_name=pxc -e xtrabackup_password=abc123456 -e cluster_join=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc #创建第4个mysql节点 docker run -d -p 3309:3306 -e mysql_root_password=abc123456 -e cluster_name=pxc -e xtrabackup_password=abc123456 -e cluster_join=node1 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc #创建第5个mysql节点 docker run -d -p 3310:3306 -e mysql_root_password=abc123456 -e cluster_name=pxc -e xtrabackup_password=abc123456 -e cluster_join=node1 -v v5:/var/lib/mysql -v backup:/data --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc
測試在任意mysql節點建立資料庫:
mysql -h 172.18.0.3 -uroot -pabc123456 mysql> create database test; query ok, 1 row affected (0.03 sec)
登入其他節點資料庫,能看到已經進行了同步,構成簡單的mysql叢集
安裝haproxy進行高可用與負載平衡
#拉取haproxy
docker pull haproxy
編寫haproxy設定檔
vi /home/soft/haproxy.cfg
設定檔如下:
global #工作目录 chroot /usr/local/etc/haproxy #日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info log 127.0.0.1 local5 info #守护进程运行 daemon defaults log global mode http #日志格式 option httplog #日志中不记录负载均衡的心跳检测记录 option dontlognull #连接超时(毫秒) timeout connect 5000 #客户端超时(毫秒) timeout client 50000 #服务器超时(毫秒) timeout server 50000 #监控界面 listen admin_stats #监控界面的访问的ip和端口 bind 0.0.0.0:8888 #访问协议 mode http #uri相对地址 stats uri /dbs #统计报告格式 stats realm global\ statistics #登陆帐户信息 stats auth admin:abc123456 #数据库负载均衡 listen proxy-mysql #访问的ip和端口 bind 0.0.0.0:3306 #网络协议 mode tcp #负载均衡算法(轮询算法) #轮询算法:roundrobin #权重算法:static-rr #最少连接算法:leastconn #请求源ip算法:source balance roundrobin #日志格式 option tcplog #在mysql中创建一个没有权限的haproxy用户,密码为空。haproxy使用这个账户对mysql数据库心跳检测 option mysql-check user haproxy server mysql_1 172.18.0.2:3306 check weight 1 maxconn 2000 server mysql_2 172.18.0.3:3306 check weight 1 maxconn 2000 server mysql_3 172.18.0.4:3306 check weight 1 maxconn 2000 server mysql_4 172.18.0.5:3306 check weight 1 maxconn 2000 server mysql_5 172.18.0.6:3306 check weight 1 maxconn 2000 #使用keepalive检测死链 option tcpka
建立第1個haproxy負載平衡伺服器
複製程式碼 程式碼如下:
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy
#進入h1容器,啟動haproxy
docker exec -it h1 bash haproxy -f /usr/local/etc/haproxy/haproxy.cfg
查看是否啟動成功:
訪問http:// ip:4001/dbs
安裝keepalive實作雙擊熱備
以上是docker搭建Mysql集群的方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

使用 Navicat Premium 創建數據庫:連接到數據庫服務器並輸入連接參數。右鍵單擊服務器並選擇“創建數據庫”。輸入新數據庫的名稱和指定字符集和排序規則。連接到新數據庫並在“對象瀏覽器”中創建表。右鍵單擊表並選擇“插入數據”來插入數據。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

可在 Navicat 中通過以下步驟新建 MySQL 連接:打開應用程序並選擇“新建連接”(Ctrl N)。選擇“MySQL”作為連接類型。輸入主機名/IP 地址、端口、用戶名和密碼。 (可選)配置高級選項。保存連接並輸入連接名稱。

在 Navicat 中執行 SQL 的步驟:連接到數據庫。創建 SQL 編輯器窗口。編寫 SQL 查詢或腳本。單擊“運行”按鈕執行查詢或腳本。查看結果(如果執行查詢的話)。

可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。

Navicat 連接數據庫時常見的錯誤及解決方案:用戶名或密碼錯誤(Error 1045)防火牆阻止連接(Error 2003)連接超時(Error 10060)無法使用套接字連接(Error 1042)SSL 連接錯誤(Error 10055)連接嘗試過多導致主機被阻止(Error 1129)數據庫不存在(Error 1049)沒有權限連接到數據庫(Error 1000)
