kubernetes mysql多主_2020-11-02 使用K8s部署MySQL 双主集群

本文介绍了如何在Kubernetes环境下使用Dockerfile、docker-entrypoint.sh和my.cnf配置文件,部署一个MySQL双主互备的2节点集群。通过设置replication,实现了两个MySQL节点之间的数据同步。在遇到'CREATE USER'错误时,讨论了解决方案并提供了相关配置。
摘要由CSDN通过智能技术生成

机器

角色

mysql-0

master\slave

mysql-1

slave\master

最近对线上集群做高可用升级,在对比了几个集群策略之后,综合现有资源、复杂度、可用度之后,选择了两个:

MySQL双主的互为备份的2节点集群

MySQL基于wsrep协议的Galera Cluster的mysql多主集群

初步处于复杂度考虑,选择了方案一。

方案一又有两个版本:

利用keepalived做活跃监督

利用k8s service做负载均衡,达到和活跃监督一样的效果

我们选择最简单的k8s service,先做测试。无论哪一种,首先都要实现双主的互为备份的2节点部署。

一、部署

选择 dockerhub上的MySQL:5.7.32作为基础镜像。依赖于镜像本身的启动命令,做修改,然后部署。

1.Dockerfile

以dockerhub上的mysql为基础镜像

From mysql:5.7.32

COPY my.cnf /etc/mysql/

COPY replication.sh /usr/local/bin/

COPY docker-entrypoint.sh /usr/local/bin/

ENV MYSQL_ROOT_PASSWORD=123456

RUN chmod 755 /usr/local/bin/replication.sh && \

chmod a+x /usr/local/bin/replication.sh && \

chmod 755 /usr/local/bin/docker-entrypoint.sh && \

chmod a+x /usr/local/bin/docker-entrypoint.sh && \

chmod 755 /etc/mysql/my.cnf && \

chmod a+x /etc/mysql/my.cnf && \

chown -R mysql:mysql /usr/local/bin/replication.sh && \

chown -R mysql:mysql /usr/sbin/mysqld && \

chown -R mysql:mysql /etc/mysql/

ENTRYPOINT ["docker-entrypoint.sh"]

EXPOSE 3306 33060

CMD ["mysqld"]

2.docker-entrypoint.sh

新增一个方法:mysql_replication

mysql_replication() {

echo 'start to do the mysql replication'

master_host=''

if [[ $MY_POD_NAME = 'mysql-0' ]];then

master_host='mys

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值