【发布时间】:2020-03-18 13:00:39
【问题描述】:
在远程 MYSQL 数据库表(托管在本地机器)中插入数据时,它也应该通过 lambda 插入到 RDS MYSQL 数据库表中:
我的要求:
- 我的 PC 中有一个本地数据库。
- 我通过 Dbeaver 使用远程访问连接到它来访问它。
- 现在我在 AWS 中创建了一个 RDS MYSQL 数据库(与我的本地数据库具有相同的架构)。
-
我有 lambda 作为连接这两个数据库的桥梁。
我尝试了什么:
- 我尝试了将 RDS 连接到 RDS 的常用方法。
- 我在其中创建了一个触发器,然后在我的本地数据库中创建了一个带有 LAMBDA_ARN 的存储过程,以便在本地表中插入数据后调用 lambda。
- lambda 将在 RDS MYSQL 表中插入相同的数据。
例如,我尝试的是:
我的本地数据库中有一个表,例如 this:
我已经在 RDS MYSQL 中创建了一个具有相同架构的数据库。
我在本地数据库中添加了一个触发器,如下所示:
CREATE TRIGGER local_to_rds AFTER INSERT ON mark2 FOR EACH ROW
BEGIN
SELECT NEW.sno, QUOTE(NEW.name), IFNULL(NEW.geoloc,0), NEW.ranging INTO @sno, @name, @geoloc, @ranging;
CALL local_to_rds_Procedure(@sno, @name, @geoloc, @ranging);
end
我的本地数据库中的过程如下:
CREATE PROCEDURE local_to_rds_procedure (IN sno int, IN name varchar(50), IN geoloc int, IN ranging int) LANGUAGE sql begin
CALL mysql.lambda_async('arn:aws:lambda:us-west-2:919585521528:function:local_to_rds',
CONCAT('{ "sno" : "', sno,
'", "name" : "', name,
'", "geoloc" : "', geoloc,
'", "ranging" : "', ranging,'"}'));
END
现在我已经创建了一个 lambda 用于将此本地数据库连接到 RDS 数据库,也用于其他一些目的,例如在我收到任何错误时通知我,在每次插入(或)更新(或)删除时自动创建日志表我的桌子等等……我没有任何问题。
我在这里遇到的问题是连接问题,在创建触发器和调用 lambda 的过程后,我得到 SQL Error [1305] [42000]: PROCEDURE my.sql.lambda_async does not exist
我尝试浏览解决方案,但找不到合适的解决方案。
这是我正在尝试的过程的视图:
LOCAL_DATABASE --> LAMBDA --> AWS_RDS
我被卡住的部分是在本地数据库表中插入数据时调用 lambda...而且我不知道如果我通过这个会遇到什么样的错误。
提前谢谢...
【问题讨论】:
标签: mysql aws-lambda amazon-rds