溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker怎么在一臺服務器上安裝和配置Mysql集群

發(fā)布時間:2021-06-25 14:02:51 來源:億速云 閱讀:197 作者:chen 欄目:大數(shù)據(jù)

本篇內容介紹了“Docker怎么在一臺服務器上安裝和配置Mysql集群”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1.從docker hub下載mysql5.6的鏡像

docker pull mysql:5.6

2.使用mysql5.6鏡像運行4臺mysql服務,用端口號區(qū)分

前期準備工作

# 在本機創(chuàng)建四個目錄,分別用了存儲4臺mysql服務的數(shù)據(jù),日志以及配置文件
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

創(chuàng)建并運行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

Docker怎么在一臺服務器上安裝和配置Mysql集群

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

Docker怎么在一臺服務器上安裝和配置Mysql集群

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

Docker怎么在一臺服務器上安裝和配置Mysql集群

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

Docker怎么在一臺服務器上安裝和配置Mysql集群

到此4臺mysql服務器容器已經全部創(chuàng)建且啟動!

Docker怎么在一臺服務器上安裝和配置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

Docker怎么在一臺服務器上安裝和配置Mysql集群

說明已經全部鏈接上!下一步就可以配置主從復制了

3.配置主從集群

master:端口為3307的mysql

slaves:端口為3308,3309,3310的mysql

  • 配置master     

# 切換到mysql3307的配置文件目錄
cd /data/mysql/mysql3307/conf
# 新增my.cnf文件且加上如下內容
touch my.cnf
vim my.cnf

Docker怎么在一臺服務器上安裝和配置Mysql集群

server-id:同一局域網內要唯一就可以

log-bin:開啟二進制日志功能,后面的名稱可以隨便取

重啟mysql3307對應的容器

docker restart mysql3307
  • 在master數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)同步用戶;且授予同步用戶 replication slave 和 replication client 權限;用于主從同步數(shù)據(jù)  

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>

Docker怎么在一臺服務器上安裝和配置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只讀,只參數(shù)值限制普通用戶,root用戶還是可以增刪改
read_only=1

重啟mysql3308對應的容器

docker restart mysql3308

接下來以此類推配置mysql3309和mysql3310從庫

  • 鏈接master和slave

 進入mysql3307命令行,執(zhí)行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命令行,分別執(zhí)行如下命令:

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;

參數(shù)說明:

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:用于數(shù)據(jù)同步的用戶

master_password:用于同步的用戶的密碼

master_log_file:指定 slave 從哪個日志文件開始復制數(shù)據(jù),即上文中提到的 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;開啟主從復制過程;查詢主從同步狀態(tài)命令是:show slave status;

Docker怎么在一臺服務器上安裝和配置Mysql集群

  • 測試主從復制

在master新見一個數(shù)據(jù)庫,然后觀察其他幾個從庫是否自動同步數(shù)據(jù)

“Docker怎么在一臺服務器上安裝和配置Mysql集群”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI