docker搭建mysql集群


准備環境:

  1.一台centos7機器  ip地址:192.168.113.11

  2.pxc鏡像

搭建步驟:

1.拉取或導入本地鏡像

# 從docker hub上拉取
docker pull percona/percona-xtradb-cluster
# 或將鏡像壓縮包導入
docker load <  /root/pxc.tar.gz

2.更改鏡像名

# 更改一個短的、易記憶的鏡像名
docker tag percona/percona-xtradb-cluster pxc
# 刪除原有的、長的鏡像名
docker rmi percona/percona-xtradb-cluster

3.創建集群的內部網絡

# 網段可以自定義
docker network create --subnet= 172.18.0.0/24 net1
# 查看網段信息
docker network inspect net1

4.創建Docker卷

docker volume create v1
#查看v1卷在宿主機的那個目錄下
docker volume inspect v1
[
    {
        "CreatedAt": "2019-05-13T13:53:31+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/v1/_data",
        "Name": "v1",
        "Options": {},
        "Scope": "local"
    }
]

# 創建其他四個卷,每個卷對應一個pxc容器
docker volume create v2
docker volume create v3
docker volume create v4
docker volume create v5

# 查看卷在宿主機的目錄
ls /var/lib/docker/volumes/

5.創建PXC容器

注意:容器創建是很快,但是容器內的mysql初始化很慢,需要等第一個容器的mysql初始化完成后,才創建后面的容器,不然后面創建的容器會閃退

# 創建第一個容器
# --privileged表示最高權限
# 設置一些環境變量,如mysql的root登陸密碼、集群名、集群同步的密碼
# 創建完成后,等待幾分鍾,最好用mysql連接一下,成功后創建接下來的幾個集群
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123qqq...A -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123qqq...A -v v1:/var/lib/mysql --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc

# 創建第二個容器
# CLUSTER_JOIN指定加入的集群的節點名
# 因為是在同一台宿主機上創建的幾個PXC容器,所以端口不能重復
# 還有就是一些像卷組、節點名、ip地址需要變化
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123qqq...A -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123qqq...A -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc

# 創建第三個容器
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123qqq...A -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123qqq...A -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc

# 創建第四個容器
docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123qqq...A -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123qqq...A -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc

# 創建第五個容器
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123qqq...A -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123qqq...A -e CLUSTER_JOIN=node1 -v v5:/var/lib/mysql --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc

6.測試

# 連接第二個容器node2的mysql,並創建一個test數據庫
mysql -h 192.168.113.11 -P 3307 -uroot -p
MySQL > create database test;

# 連接第五個容器node5的mysql,查看是否同步
mysql -h 192.168.113.11 -P 3310 -uroot -p
MySQL > show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

# 連接第三個容器node3的mysql,創建在test數據庫中創建一個student表
mysql -h 192.168.113.11 -P 3308 -uroot -p
MySQL > use test;
MySQL > create table student(
        -> id int primary key,
        -> name varchar(200) not null);

# 連接第四個容器node4的mysql,往student表中插入一條數據
mysql -h 192.168.113.11 -P 3309 -uroot -p
MySQL > use test;
MySQL > insert into student values(1,'Scott');

# 連接第一個容器node1的mysql,查看student表
mysql -h 192.168.113.11 -P 3306 -uroot -p
MySQL > select * from test.student;
+----+-------+
| id | name  |
+----+-------+
|  1 | scott |
+----+-------+

 


免責聲明!

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



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