通过本文的实践,我们可以了解一下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 '