有没有一种方法可以让mysql服务器停止运行,并且只有在尝试连接之后才能启动它。
我有一个开发mysql服务器在我的ubuntu机器,我想让它停止,除非需要,我不想记住手动启动它。
如果能用流浪汉或 Docker 之类的方法来解决这个问题,那也没关系。
如果在一段可配置的空闲时间后可以关闭服务器,则可获得额外的好处。
我记得openshift是这样做的,如果没有连接,vm就会关闭,只有在尝试连接到它之后才会启动。
有没有一种方法可以让mysql服务器停止运行,并且只有在尝试连接之后才能启动它。
我有一个开发mysql服务器在我的ubuntu机器,我想让它停止,除非需要,我不想记住手动启动它。
如果能用流浪汉或 Docker 之类的方法来解决这个问题,那也没关系。
如果在一段可配置的空闲时间后可以关闭服务器,则可获得额外的好处。
我记得openshift是这样做的,如果没有连接,vm就会关闭,只有在尝试连接到它之后才会启动。
1条答案
按热度按时间q3qa4bjr1#
任何mysql客户端都会尝试连接到端口3306(默认情况下)以建立mysql连接。如果mysql服务器没有运行,那么端口3306上就没有任何东西在侦听,因此连接就会失败。
要做到你所描述的,需要有一些东西监听端口3306。可能是某种代理,比如haproxy或proxysql。也许其中一个可以配置为按需启动服务,但我从未见过有人尝试这样做。
原因是启动mysql服务器进程需要一些时间。至少几秒钟,但可能要长得多,这取决于服务器是否需要执行崩溃恢复,如果它上次停止时没有完全关闭。启动它的代理必须不断重新尝试连接,直到它做出响应。
还有一种可能性是,一个关闭的mysql服务器无法启动,例如,如果有一个配置问题,阻止它启动,或损坏的数据库。然后您的客户机会反复尝试连接,每次都会有延迟,并且永远无法启动服务。
我想知道你真正需要的不是mysql,而是像sqlite这样的嵌入式数据库。