kubernetes mysql多主_利用Kubernetes搭建mysql主从复制集群

本文介绍了如何在Kubernetes(k8s)环境下搭建MySQL主从复制集群。通过Docker镜像定制,设置环境变量,创建replication controller和服务,详细阐述了从创建master到slave的全过程,并探讨了集群的伸缩性。
摘要由CSDN通过智能技术生成

通过本文的实践,我们可以了解一下k8s能带给我们什么。另外,实际生产环境中mysql的主从复制考虑的事情会更多。

mysql主从复制

mysql的主从复制可以通过如下方式实现。

master

在master主机上修改配置文件,比如通常是修改my.cnf。

[mysqld] server-id=1 log-bin

在mysql上创建同步账号并授权。

如下,创建用户名为repl,密码为1234567:

create user 'repl'@'%' identified by '1234567';

如下,给repl用户授权允许同步:

grant replication slave on *.* to 'repl'@'%' identified by '1234567';

slave

同样,在slave主机上修改配置文件。

[mysqld] server-id=2 log-bin

接着配置如下,其中x.x.x.x为master主机ip地址。

change master to master_host='x.x.x.x',master_user='repl',master_password='1234567';

注意server-id为主机标识,不能重复。

利用Docker实现主从复制

本节介绍利用Docker官网镜像文件实现上述的各项配置,这是为了接下来k8s的使用。利用Docker实现mysql的方式有很多种,可以参考其他文章。

mysql官网Docker镜像文件地址:https://hub.docker.com/_/mysql/

这里用的是8.0 Dockerfile,包括两个文件Dockerfile, docker-entrypoint.sh。

准备master的镜像

将Dockerfile, docker-entrypoint.sh复制一份作为master的镜像。

在Dockerfile中添加如下:

RUN sed -i '/\[mysqld\]/a server-id=1\nlog-bin' /etc/mysql/mysql.conf.d/mysqld.cnf

在docker-entrypoint.sh中添加如下:

echo "CREATE USER '$MYSQL_REPLICATION_USER'@'%' IDENTIFIED BY '$MYSQL_REPLICATION_PASSWORD' ;" | "${mysql[@]}" echo "GRANT REPLICATION SLAVE ON *.* TO '

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值