现在有一个应用,三台服务器,其中:db 服务器是 MySQL,第二台服务器提供 Web 访问,收集用户提交的信息,另一台服务器部署Node.js,实时监控 MySQL 的一个表,如果发现表中有新的数据,则 Node.js 进行后台处理。现在的问题是,Node.js 如何能实时监控MySQL 是否有新的信息插入,Node.js 能否胜任?效率如何?需要长连接 MySQL?
6 回复
当初的想法是出于安全考虑,第三台服务器只负责跟db服务器链接,不提供对外服务,用第三台服务器为db的某个字段进行可逆加密,不直接在web服务器业务处理时加密是为了防止web服务器被攻破造成加密程序以及数据被黑客获取。想用node.js实时监控mysql,发现有提交新的数据就运行加密进行更新,刚接触node.js,所以想请教大家有没有node.js实时监控mysql的实例
一般来说需要数据库触发的后台处理, 都可以在数据库脚本内实现, 如果实在不行, 可以用触发器调用外部程序, 比如nodejs app, 例:
DELIMITER @@
CREATE TRIGGER Test_Trigger --创建触发器
AFTER INSERT ON MyTable --在MyTable表中有插入后触发
FOR EACH ROW
BEGIN
DECLARE cmd CHAR(255);
DECLARE result int(10); --外部程序返回值
SET cmd=CONCAT('node ', '/home/user/app/task.js', ' param1, param2'); --根据你的实际情况组装成命令行格式字符串
SET result = sys_exec(cmd); --执行外部程序, 必须带整型一个返回值
END;
@@
DELIMITER ;