我们有一个应用程序从各种网络设备收集日志并将其保存在MySQL数据库中。这种情况每10分钟发生一次MySQL数据库保留了一周的日志。
如果任何日志消息符合某些条件,是否有可能使MySQL将此类日志转发到Oracle数据库?例如,如果行以“ABC”开头,MySQL应转发所有日志。
可以这样做吗?
答案 0 :(得分:2)
这是一种方法(我主要使用Oracle,所以编程是在Oracle方面):
设置一个读取MySQL表并在Oracle中插入记录的Oracle作业 表。该作业执行类似于此的SQL:
INSERT INTO oracle_log_table (field1, field2, field3)
SELECT field1, field2, field3
FROM mySQL_link.mysql_log_table
WHERE mySQL_link.mysql_log_table.line LIKE "ABC%"
AND _expression to check that the line is new_;
答案 1 :(得分:1)
MySQL不会为你做这件事。但是,您可以使用脚本自动执行此过程。
您可以使用mysqldump
实用程序获取符合导出到Oracle标准的记录。像这样的东西(替换你的db用户,db密码,'ABC'列名,数据库名和表名):
mysqldump --user=DBUSER --password=DBPASS --compatible=oracle
--no-create-db --no-create-info
--where="log_line LIKE 'ABC%'"
--result-file=sql_for_oracle.sql
DATABASE_NAME TABLE_NANE
然后,您可以使用Oracle上的sqlplus
将sql_for_oracle.sql
导入Oracle。
答案 2 :(得分:0)
您可以使用GoldenGate for MySQL执行此操作(请参阅the Administrator's Guide中的第17章)。