在 MySQL 平滑重启中,大家采用另一个MySQL 进程来接管原来进程的业务。这个新进程会在原来进程的已有状态的基础上继续处理已有的请求,并且在这个处理中,新进程会把原有的旧进程逐渐替换掉。这样,在任何时候,都有一个 MySQL 进程有效地处理所有的请求,而因为这个进程的随时替换,用户并不需要注意到这个过程。
# 启动 MySQL 服务 sudo service mysql start # 平滑重启 MySQL 服务 sudo service mysql reload
实现 MySQL 平滑重启的方式有很多,但是这里提供最常用的方式:使用 commander 。Commander 是一个 Node.js 库,它简化了命令行界面的开发,使得开发者可以使用少量的代码,生成操作 MySQL 的命令。
const commander = require('commander'); const { execSync } = require('child_process'); commander .command('reload') .description('Smoothly restart MySQL') .action(() =>{ try { // 执行重启操作 execSync('sudo service mysql reload', { stdio: 'inherit' }); } catch { console.error('MySQL reload failed!'); } }); commander.parse(process.argv);