如何搭建原生mgr集群
使用docker 拉去镜像centos7来配置的,默认是glibc2.17,mysql8.0版本的支持glibc2.12的,不过这个没关系。正常安装操作就 可以了。
具体使用docker想要指定ip启动容器,可以参考下面具体的步骤,注意要控制和真机的网段,因为之前我自己新建的 docker桥接网络导致真机无法访问某些地址。
参考命令:
1、创建自定义网络类型,并且指定网段
sudo docker network create --subnet=192.168.0.0/16 staticnet
通过docker network ls可以查看到网络类型中多了一个staticnet
2、使用新的网络类型创建并启动容器
sudo docker run -it --name userserver --net staticnet --ip 192.168.0.2 ubuntu /bin/bash
通过docker inspect可以查看容器ip为192.168.0.2,关闭容器并重启,发现容器ip并未发生改变
我使用的是
docker run -itd --privileged --init ----name test12(启动的容器起个名字) --net mynetwork(我自己创建的网络名)--ip 192.168.56.102(指定的ip) centos:centos7 (镜像) tail -f /dev/null
没有使用centos6 是因为里面的yum源配置需要自己搞一下,所以我就直接用了7.
直接wget安装包我这边网络报错,所以就在真机download之后,使用
docker cp 真机目录文件 容器:目录
命令拷贝过去的,以后如果有脚本一键部署我会再更新的。
单机多实例配置mgr
如果在docker容器中配置,可以参考如下配置文件,将参数直接写死。以下配置文件是在单机器上部署多个实例节点,开启mgr。
部署节点是3306,3307,3308。注意server-id,report_host,和对应的mgr端口,group_replication_local_address需要不同。
首先需要创建各个目录:
user add mysql
mkdir /mysql8.0
cd mysql8.0
tar -xvf mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
ln -s mysql-8.0.25-linux-glibc2.12-x86_64 mysqlmgr
cd /mysql8.0/mysqlmgr
chown -R mysql:mysql .
mkdir -p /mysqlmgr/etc/
mkdir -p /mysqlmgr/mgrdata/mgr3306/
mkdir -p /mysqlmgr/mgrdata/mgr3307/
mkdir -p /mysqlmgr/mgrdata/mgr3308/
chown -R mysql:mysql /mysqlmgr/mgrdata/mgr3306/ /mysqlmgr/mgrdata/mgr3307/ /mysqlmgr/mgrdata/mgr3308/ /mysqlmgr/etc/
配置文件位置:
/mysqlmgr/etc/3306.cnf
剩下的位置都在配置文件中标明了,如果是没有的目录需要创建。
下面的配置文件是3308这个实例的配置信息。
如果启动mgr一直recovering,主要查看报错日志排错。写好配置文件就可以按照上面单机的步骤初始化配置了。
由于我需要指定配置文件,因此命令需要是这样的
/mysql8.0/mysqlmgr/bin/mysqld --defaults-file=/mysqlmgr/etc/3306.cnf --basedir=/mysql8.0/mysqlmgr --datadir=/mysqlmgr/mgrdata/mgr3306/data --initialize-insecure --user=mysql
配置文件的位置必须在第一个。
启动
/mysql8.0/mysqlmgr/bin/mysqld_safe --defaults-file=/mysqlmgr/etc/3308.cnf