Mysql-Cluster 集群部署 mysql


https://hub.docker.com/r/mysql/mysql-cluster/

首先说一下结构,mysql 集群主要由三个部分协作形成,分别是一个 manager 节点,多个子节点,以及一个用于访问的门面节点,manager 节点对应 ndb_mgmd ,子节点对应 ndbd,门面节点就是常规的 mysqld 。

我建议首先配置好集群的配置文件,配置文件主要有两个

cd  /opt/mysql_cluster_docker


my.cnf # 给子节点以及 mysql 门面用。主要内容是使用集群模式并设定 manager 节点 IP

[mysqld]
ndbcluster
ndb-connectstring=172.18.1.100
user=mysql

[mysql_cluster]
ndb-connectstring=172.18.1.100

mysql-cluster.cnf  # 给 manager 节点和子节点用的,主要内容是配置节点数量,使用内存大小以及各个子节点的 IP 配置,包括 mysqld。

[ndbd default]
NoOfReplicas=4
DataMemory=128M
IndexMemory=32M

[ndb_mgmd]
NodeId=1
hostname=172.18.1.100
datadir=/var/lib/mysql

[ndbd]
NodeId=2
hostname=172.18.1.101
datadir=/var/lib/mysql

[ndbd]
NodeId=3
hostname=172.18.1.102
datadir=/var/lib/mysql

[ndbd]
NodeId=4
hostname=172.18.1.103
datadir=/var/lib/mysql

[ndbd]
NodeId=5
hostname=172.18.1.104
datadir=/var/lib/mysql

[mysqld]
NodeId=6
hostname=172.18.1.199
#!/bin/bash

# 创建私有网络,上面提到的
docker network create mysql-cluster --subnet=172.18.1.0/24;

# 创建管理节点
docker create \
 --net=mysql-cluster \
 --name=mysql-mngr-0 \
 --ip=172.18.1.100 \
 -v /opt/mysql_cluster_docker/mysql-cluster.cnf:/etc/mysql-cluster.cnf \
 mysql/mysql-cluster ndb_mgmd;

# 创建 4 个子节点
for i in 1 2 3 4; do
    docker create \
     --net=mysql-cluster \
     --name=mysql-node-$i \
     --ip=172.18.1.10$i \
     -v /opt/mysql_cluster_docker/mysql-cluster.cnf:/etc/mysql-cluster.cnf \
     -v /opt/mysql_cluster_docker/my.cnf:/etc/my.cnf \
     mysql/mysql-cluster ndbd;
done;

# 创建门面节点
docker create \
 --net=mysql-cluster \
 --name=mysql-facade \
 --ip=172.18.1.199 \
 -p 3307:3306 \
 -v /opt/mysql_cluster_docker/my.cnf:/etc/my.cnf \
 -e MYSQL_RANDOM_ROOT_PASSWORD=true \
 mysql/mysql-cluster mysqld;


然后就可以开始启动了,启动是有顺序的,先启动管理节点,然后启动子节点,再启动门面节点。


#!/bin/bash
# 启动管理节点
docker start mysql-mngr-0;

# 启动各个子节点
for i in 1 2 3 4; do
  docker start mysql-node-$i;
done

# 启动门面节点
docker start mysql-facade;


大概等两分钟,你就会看到成功启动了,现在通过门面节点的 log 获取随机生成的 root 密码就好了。


docker logs mysql-facade 2>&1 | grep PASSWORD


docker exec -it mysql1 mysql -uroot -p


改密码、增加远程账户,然后就可以在外部链接到集群了。


 we start the management node

docker run -d --net=cluster --name=management1 --ip=192.168.0.2 mysql/mysql-cluster ndb_mgmd

The two data nodes

docker run -d --net=cluster --name=ndb1 --ip=192.168.0.3 mysql/mysql-cluster ndbd
docker run -d --net=cluster --name=ndb2 --ip=192.168.0.4 mysql/mysql-cluster ndbd

And finally the MySQL server node

docker run -d --net=cluster --name=mysql1 --ip=192.168.0.10 -e MYSQL_RANDOM_ROOT_PASSWORD=true mysql/mysql-cluster


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回