之前一直都主从和单主这样的架构
看了官方现在推荐的MGR集群觉得很不错,打算在测试环境一试
由于在虚拟机跑了一套很顺,今天tbaas项目组说让在K8S中跑一套,结果就躺坑了,现放出无坑版本
YAML
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-mgr
labels:
app: mysql-mgr
您暂时无权查看此隐藏内容!
---
###创建一个Headless(无头)Service,就是没有clusterIP,默认访问域名是:mysql-mgr###
###podName是StatefulSet.metadata.name-序号,例如本例:mysql-mgr-0###
###服务下pod的默认访问域名是podName-Service域名,例如本例:mysql-mgr-0-mysql-mgr###
###资料参考:https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/ ###
apiVersion: v1
kind: Service
metadata:
name: mysql-mgr
labels:
app: mysql-mgr
spec:
ports:
- port: 3306
targetPort: 3306
name: client
- port: 33060
targetPort: 33060
name: xclient
- port: 33061
targetPort: 33061
name: mgr
###无头Service###
clusterIP: None
selector:
app: mysql-mgr
---
apiVersion: v1
kind: Service
metadata:
name: mysql-svc
labels:
app: mysql-mgr
spec:
type: NodePort
ports:
- port: 3306
targetPort: 3306
nodePort: 30306
name: client
selector:
app: mysql-mgr
---
您暂时无权查看此隐藏内容!
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';
您暂时无权查看此隐藏内容!
检查集群状态
SELECT * FROM performance_schema.replication_group_members;
其他节点执行:
SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
您暂时无权查看此隐藏内容!
生产环境案例,目前很稳定:
集群节点宕机后无法开启组复制,原因:节点宕机重启后svc默认不添加未就绪的pod,1.24版本在无头svc下添加:
annotations:
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
1.24版本以上添加:
1.24版tolerate-unready-endpointsService 中的注解,改用Service.spec.publishNotReadyAddresses
准备测试下mgr on k8s ,Refer,谢谢博主的资料
有需要自取
支持
不错 新鲜出炉
参考下,谢谢博主的资料
参考下,谢谢博主的资料
顶一下
支持一下
牛逼