节点名称 | IP地址 |
---|---|
node01 | 192.168.10.207 |
node02 | 192.168.10.167 |
yum remove firewalld -y
sudo vim /etc/selinux/config
修改以下:
SELINUX=disabled
yum install -y iptables-services bash-completion
systemctl enable iptables
systemctl start iptables
iptables -F
service iptables save
systemctl restart iptables
cat /etc/hosts
192.168.10.207 node01
192.168.10.167 node02
iptables -A INPUT -p tcp -m multiport --dport 3306,4567,4444 -j ACCEPT
1.下载mariadb 10.3.10最新的docker镜像
docker pull mariadb:10.3.10
2.创建数据库所需要的目录,用来保存mariadb的配置文件和mariadb data
mkdir -p /opt/mariadb/conf
mkdir -p /opt/mariadb/data
node1节点操作:
1.在node01节点第一次运行mariadb,运行目的。复制mariadb的配置文件到宿主机,在/opt/mariadb/data目录下生成数据库文件
docker run -d
–name mariadb-node01
-v /opt/mariadb/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
mariadb:10.3.10
2. 复制mariadb容器配置文件到/opt/mariadb/conf目录下
docker cp mariadb-node01:/etc/mysql /opt/mariadb/conf
3.进入容器并进入到mysql数据库命令行为mysql数据库赋予远程登陆的权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '' WITH GRANT OPTION;
4.退出容器并删除该容器(删除容器的母的就是为了之前在/opt/mariadb/data目录下生成数据库所需要的数据文件)
docker sotp mariadb-node01 && docker rm mariadb-node01
5.修改复制在/opt/mariadb/conf目录下my.cnf配置文件中[galera]部分配置
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.10.207:4567,192.168.10.167:4567
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=192.168.10.207
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0
6.第二次在node01节点启动mariadb容器,以集群的第一个数据库启动需要加–wsrep-new-cluster参数
docker run -d \
--name mariadb-node01 \
-p 3306:3306 \
-p 4567:4567 \
-p 4444:4444 \
-v /opt/mariadb/conf:/etc/mysql \
-v /opt/mariadb/data/:/var/lib/mysql \
-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
-e TIMEZONE=Asia/Shanghai \
mariadb:10.3.10 --wsrep-new-cluster
node02节点操作
1.在node02节点第一次运行mariadb,运行目的。复制mariadb的配置文件到宿主机,在/opt/mariadb/data目录下生成数据库文件
docker run -d \
--name mariadb-node02 \
-v /opt/mariadb/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mariadb:10.3.10
2.复制mariadb容器配置文件到/opt/mariadb/conf目录下
docker cp mariadb-node02:/etc/mysql /opt/mariadb/conf
3进入容器并进入到mysql数据库命令行为mysql数据库赋予远程登陆的权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '' WITH GRANT OPTION;
4.退出容器并删除该容器(删除容器的母的就是为了之前在/opt/mariadb/data目录下生成数据库所需要的数据文件)
docker sotp mariadb-node02 && docker rm mariadb-node02
5.修改复制在/opt/mariadb/conf目录下my.cnf配置文件中[galera]部分配置
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.1010.207:4567,192.168.10.167:4567
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=192.168.10.167
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0
6.第二次在node01节点启动mariadb容器,以集群的第一个数据库启动需要加–wsrep-new-cluster参数
docker run -d \
--name mariadb-node02 \
-p 3306:3306 \
-p 4567:4567 \
-p 4444:4444 \
-v /opt/mariadb/conf:/etc/mysql \
-v /opt/mariadb/data/:/var/lib/mysql \
-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
-e TIMEZONE=Asia/Shanghai \
mariadb:10.3.10 --wsrep-new-cluster
验证galera集群工作正常
show status like '%wsrep%';
链接