能不能介绍下,在K8S集群中部署mysql主从同步数据一致性的问题,以及主down掉情况下的自动切换,有没有最佳实践?
收起这个在K8S中,mysql 主从问题是讨论的比较多的,也是在生产中应用的比较多的案例。
说到主从,无非就是数据是以谁为主,主挂的时候,备是否能顶上?主恢复的时候,备是否被换下?
早期业界有两种做法,一种是使用头脑分裂法,在容器的启停时去实现数据的同步及主从切换。这个见官方的使用 statefulset 的做法,见:https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/
还有一种是使用最近比较火的 Operator ,这个也有开源的,比如:https://github.com/oracle/mysql-operator
我是比较推荐使用 Operator的方法,因为这种才是自动化运维 mysql 数据库的绝佳推荐方式,不会担心其他的意外情况发生。