本文主要介绍了在k8s中使用有状态服务Statfulset方式部署一个mysql 5.7 版本的主从同步集群
更新于 2021-03-20
目标
- 搭建一个master-slave集群;
- 读操作可以在master和slave上进行;
- 写操作只能在master上进行;
- slave从master同步数据;
创建相关文件
验证服务
验证主从
执行下面命令:
1
| kubectl -n mysql exec mysql-1 -c mysql -- bash -c "mysql -uroot -p123456 -e 'show slave status \G'"
|
证明组从同步是正常的
插入数据查看同步
在master上插入数据:
1 2 3 4 5
| kubectl -n mysql exec mysql-0 -c mysql -- bash -c "mysql -uroot -p123456 -e 'create database test’"
kubectl -n mysql exec mysql-0 -c mysql -- bash -c "mysql -uroot -p123456 -e 'use test;create table counter(c int);’"
kubectl -n mysql exec mysql-0 -c mysql -- bash -c "mysql -uroot -p123456 -e 'use test;insert into counter values(123)’"
|
在slave上查看数据是否同步:
1
| kubectl -n mysql exec mysql-1 -c mysql -- bash -c "mysql -uroot -p123456 -e 'use test;select * from counter’"
|
扩展集群
目前这样的集群是支持slave水平扩展的,只需要增加statefulset的副本数即可:
1
| kubectl -n mysql scale statefulset mysql -—replicas=3
|
然后新的节点也会自动同步:
1
| kubectl -n mysql exec mysql-2 -c mysql -- bash -c "mysql -uroot -p123456 -e 'use test;select * from counter’"
|