Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不运行mySQL服务器的情况下,如何记录JDBC调用中的SQL语句?_Java_Logging_Jdbc_Jdbctemplate_Spring Jdbc - Fatal编程技术网

Java 在不运行mySQL服务器的情况下,如何记录JDBC调用中的SQL语句?

Java 在不运行mySQL服务器的情况下,如何记录JDBC调用中的SQL语句?,java,logging,jdbc,jdbctemplate,spring-jdbc,Java,Logging,Jdbc,Jdbctemplate,Spring Jdbc,因此,我试图弄清楚如何记录将要运行的SQL语句,而不需要一个活动的mySQL服务器 我试图解决的问题是,现在我们正在向远程mySQL实例和本地存档数据写入数据。我们将登录到本地作为备份,以防远程设备无法访问/停机等 因此,我们要做的是在本地记录SQL语句,我们正在使用SpringJDBC模板w/变量替换,所以不像我们自己拼凑SQL并将其写入文件那样简单 我确实发现这看起来很棒,除了我们仍然需要一个活动的本地mySQL实例,即使它只是使用黑洞引擎。我确实认为我们可以在远程服务器上使用log4jdb

因此,我试图弄清楚如何记录将要运行的SQL语句,而不需要一个活动的mySQL服务器

我试图解决的问题是,现在我们正在向远程mySQL实例和本地存档数据写入数据。我们将登录到本地作为备份,以防远程设备无法访问/停机等

因此,我们要做的是在本地记录SQL语句,我们正在使用SpringJDBC模板w/变量替换,所以不像我们自己拼凑SQL并将其写入文件那样简单

我确实发现这看起来很棒,除了我们仍然需要一个活动的本地mySQL实例,即使它只是使用黑洞引擎。我确实认为我们可以在远程服务器上使用log4jdbc,但是如果连接断开,JDBC模板会在出现故障之前尝试在底层JDBC驱动程序对象上运行查询吗?大多数池机制将在返回连接之前验证连接,因此在查询有机会运行和记录之前,连接仍然会失败


那么,谁有什么好主意呢?

使用运行远程MySQL实例


可以使用命令备份并在必要时转换为SQL,以便以后恢复数据库。

Mark O'Connors解决方案可能是最好的解决方案,但我们解决这一问题的方法是简单地将数据写入CSV文件,并通过load data infile语句格式化以准备导入。

您可能应该停止尝试重新发明数据库复制。看一看,我们不是在追求复制。我们正试图摆脱本地机器上的mysql实例,该实例仅用作存档数据的备份,以防主mysql服务器出现故障,我们需要从各个服务器中删除数据,并将它们合并到主mysql服务器上。听起来您仍在试图重新发明复制。或者备份。或者两者都有。如果mysql实例宕机会发生什么?还是中间有一个开关?每个服务器都需要在本地记录数据。现在这是一个本地mysql实例,但我们正在尝试删除本地mysql服务器,只需记录SQL即可,如果需要,一旦主mysql实例恢复,就可以在主mysql实例上重播。根据mysql 5.6.2开始的文档,二进制日志是崩溃安全的。仅记录或读回完整的事件或事务。在我看来,您的用例确实需要运行MySQL的本地实例。据我所知,您需要一个数据库实例并记录足够的信息,以便以后重建数据。因此,请参阅PITR文件: