您好,登錄后才能下訂單哦!
本篇內容介紹了“Docker怎么在一臺服務器上安裝和配置Mysql集群”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1.從docker hub下載mysql5.6的鏡像
docker pull mysql:5.6
2.使用mysql5.6鏡像運行4臺mysql服務,用端口號區分
前期準備工作
# 在本機創建四個目錄,分別用了存儲4臺mysql服務的數據,日志以及配置文件 mkdir /data/mysql cd /data/mysql mkdir mysql3307 mysql3308 mysql3309 mysql3310 cd mysql3307 mkdir conf logs data cp -r conf/ data/ logs/ ../mysql3308 cp -r conf/ data/ logs/ ../mysql3309 cp -r conf/ data/ logs/ ../mysql3310
創建并運行4臺mysql容器,每臺服務器的root密碼都是liuhaizhuang
cd /data/mysql/mysql3307 docker run -p 3307:3306 --name mysql3307 \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/logs:/logs \ -v $PWD/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=liuhaizhuang \ -d mysql:5.6
cd /data/mysql/mysql3308 docker run -p 3308:3306 --name mysql3308 \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/logs:/logs \ -v $PWD/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=liuhaizhuang \ -d mysql:5.6
cd /data/mysql/mysql3309 docker run -p 3309:3306 --name mysql3309 \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/logs:/logs \ -v $PWD/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=liuhaizhuang \ -d mysql:5.6
cd /data/mysql/mysql3310 docker run -p 3310:3306 --name mysql3310 \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/logs:/logs \ -v $PWD/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=liuhaizhuang \ -d mysql:5.6
到此4臺mysql服務器容器已經全部創建且啟動!
如果想遠程鏈接這4臺mysql,需要防火墻開啟3307,3308,3309,3310
# 編輯iptables vim /etc/sysconfig/iptables # 加上如下4行 退出保存 -A INPUT -p tcp -m state --state NEW -m tcp --dport 3307 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 3308 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 3309 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 3310 -j ACCEPT
重啟防火墻,到此遠程可以鏈接上新裝的4臺mysql了
systemctl restart iptables.service
說明已經全部鏈接上!下一步就可以配置主從復制了
3.配置主從集群
master:端口為3307的mysql
slaves:端口為3308,3309,3310的mysql
配置master
# 切換到mysql3307的配置文件目錄 cd /data/mysql/mysql3307/conf # 新增my.cnf文件且加上如下內容 touch my.cnf vim my.cnf
server-id:同一局域網內要唯一就可以
log-bin:開啟二進制日志功能,后面的名稱可以隨便取
重啟mysql3307對應的容器
docker restart mysql3307
在master數據庫創建數據同步用戶;且授予同步用戶 replication slave 和 replication client 權限;用于主從同步數據
mysql> create user 'slave_user'@'%' identified by 'liuhaizhuang'; Query OK, 0 rows affected mysql> grant replication slave,replication client on *.* to 'slave_user'@'%'; Query OK, 0 rows affected mysql>
配置slave的my.cnf文件
# 切換到mysql3308配置文件目錄 cp /data/mysql/mysql3308/conf touch my.cnf vim my.cnf
[mysqld] # 保證局域網內唯一 server-id=2 # 開啟二進制,以防作為其他salve的master使用 log-bin=mysql3308-bin # 配置中繼日志 relay_log=mysql3308-relay-bin # 讓slave只讀,只參數值限制普通用戶,root用戶還是可以增刪改 read_only=1
重啟mysql3308對應的容器
docker restart mysql3308
接下來以此類推配置mysql3309和mysql3310從庫
鏈接master和slave
進入mysql3307命令行,執行show master status;查看File和Position字段的值,后面要使用到
mysql> show master status; +----------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +----------------------+----------+--------------+------------------+-------------------+ | mysql3307-bin.000001 | 434 | | | | +----------------------+----------+--------------+------------------+-------------------+ 1 row in set mysql>
進入各個slave命令行,分別執行如下命令:
change master to master_host='172.18.0.5', master_user='slave_user', master_password='liuhaizhuang', master_port=3306, master_log_file='mysql3307-bin.000001', master_log_pos= 434, master_connect_retry=30;
參數說明:
master_host : master的地址,指的是容器的獨立ip,可以通過docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱|容器id
查詢容器的ip
[root@VM_0_10_centos ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql3307 172.18.0.5 [root@VM_0_10_centos ~]#
master_port:master的端口號,指的是容器的端口號
master_user:用于數據同步的用戶
master_password:用于同步的用戶的密碼
master_log_file:指定 slave 從哪個日志文件開始復制數據,即上文中提到的 file 字段的值
master_log_pos:從哪個 position 開始讀,即上文中提到的 position 字段的值
master_connect_retry:如果連接失敗,重試的時間間隔,單位是秒,默認是60秒
mysql> change master to master_host='172.18.0.5', master_user='slave_user', master_password='liuhaizhuang', master_port=3306, master_log_file='mysql3307-bin.000001', master_log_pos= 434, master_connect_retry=30; Query OK, 0 rows affected mysql>
進入slave命令使用start slave;開啟主從復制過程;查詢主從同步狀態命令是:show slave status;
測試主從復制
在master新見一個數據庫,然后觀察其他幾個從庫是否自動同步數據
“Docker怎么在一臺服務器上安裝和配置Mysql集群”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。