基于docker实现mariadb galera集群
作者:互联网
环境配置:
节点名称 | IP地址 |
---|---|
node01 | 192.168.10.207 |
node02 | 192.168.10.167 |
基础环境配置:
- 删除firewalld
yum remove firewalld -y
- 关闭selinux
sudo vim /etc/selinux/config
修改以下:
SELINUX=disabled
- 安装iptables-services、bash-completion
yum install -y iptables-services bash-completion
systemctl enable iptables
systemctl start iptables
iptables -F
service iptables save
systemctl restart iptables
- 添加hosts主机名解析
cat /etc/hosts
192.168.10.207 node01
192.168.10.167 node02
- 添加mariadb所需的iptables规则组
iptables -A INPUT -p tcp -m multiport --dport 3306,4567,4444 -j ACCEPT
部署galera集群
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%';
小二来碗面
发布了44 篇原创文章 · 获赞 0 · 访问量 943
私信
关注
标签:galera,opt,wsrep,192.168,mysql,docker,mariadb 来源: https://blog.csdn.net/qq_39122146/article/details/104070832