要搭建Docker MySQL集群,可以按照以下步驟進行操作:
安裝Docker:在每個節點上安裝Docker引擎。
創建Docker網絡:創建一個Docker網絡,用于連接MySQL容器。
docker network create mysql-cluster
創建MySQL實例:在每個節點上創建MySQL容器實例。
docker run -d -p 3306:3306 --name mysql-node1 --net mysql-cluster -e MYSQL_ROOT_PASSWORD=password mysql
docker run -d -p 3307:3306 --name mysql-node2 --net mysql-cluster -e MYSQL_ROOT_PASSWORD=password mysql
docker run -d -p 3308:3306 --name mysql-node3 --net mysql-cluster -e MYSQL_ROOT_PASSWORD=password mysql
這將在每個節點上創建一個MySQL容器,并將其連接到mysql-cluster網絡。每個容器都使用不同的端口號(3306、3307、3308)。
配置MySQL集群:進入每個MySQL容器并修改配置文件以啟用集群功能。
docker exec -it mysql-node1 bash
vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改配置文件中的以下參數:
[mysqld]
server-id=1
log-bin=mysql-bin
log_slave_updates=1
enforce_gtid_consistency=1
gtid_mode=ON
binlog_format=ROW
然后重啟容器:
docker restart mysql-node1
在其他節點上執行相同的步驟,但將server-id設置為不同的值(2、3)。
創建集群用戶:在其中一個節點上創建集群用戶并授予相應的權限。
docker exec -it mysql-node1 bash
mysql -uroot -ppassword
進入MySQL命令行后,執行以下命令:
CREATE USER 'cluster'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'cluster'@'%';
FLUSH PRIVILEGES;
注意將’password’替換為實際的密碼。
配置主從復制:在每個節點上進行主從復制配置。
docker exec -it mysql-node1 bash
mysql -uroot -ppassword
進入MySQL命令行后,執行以下命令:
SHOW MASTER STATUS;
記下File和Position的值。
在其他節點上執行以下命令:
docker exec -it mysql-node2 bash
mysql -uroot -ppassword
進入MySQL命令行后,執行以下命令(將File和Position替換為上一步中的值):
CHANGE MASTER TO MASTER_HOST='mysql-node1', MASTER_USER='cluster', MASTER_PASSWORD='password', MASTER_LOG_FILE='File', MASTER_LOG_POS=Position;
START SLAVE;
重復以上步驟,將其他節點配置為從節點。
驗證集群:在任意一個節點上進行驗證。
docker exec -it mysql-node1 bash
mysql -uroot -ppassword
進入MySQL命令行后,執行以下命令:
SHOW STATUS LIKE 'wsrep_cluster_size';
如果集群大小大于等于3,則表示集群已成功搭建。
以上步驟將幫助您搭建Docker MySQL集群。注意替換命令中的密碼和其他參數以適應您的環境。此外,還可以根據需要進行其他配置和調整。