如果是 docker 跑 MySQL 进程,数据则挂载到本地磁盘下,理论上一点问题都没有。你大可以通过 Systemd 或者 restart always 策略保证你的 mysql 实例高可用,但是不能保证宿主机挂了你的 mysql 依旧可用。
但是放到类似于 K8s 的环境之下,MySQL 就是就一个有状态的服务,就必须要考虑持久化的问题了。
持久化到本地磁盘固然是不行的,毕竟你的实例是可以飘的,说不定主机一宕机,下次 schedule 指不定会出现在哪个主机之上。
因此就要引入 分布式存储
而分布式存储系统最大的问题便是把计算机的两大瓶颈点引入到了你的服务之中,磁盘 IO 与网络 IO。
想要一个docker 运行 mysql 的完美方案,得从这个思路研究才行。
综上所述:
你想要 docker 运行数据库可以,但是要想清楚你要达到什么效果?
利用 docker restart always 的策略保证实例存活?
Systemd 管理MySQL 进程照样可以实现
利用 docker 快速创建新库,快速发布数据库服务?
对不起,写好脚本照样可以实现,且单用 docker 而不是用编排系统依旧显得鸡肋
不知道题主出发点是什么,我个人觉得仅仅是 Docker 本身的使用,而不借助别的工具一并使用,就根本没有解决实际的痛点。
不痛不痒,不如不用!