所以,我想弄清楚如何记录将要运行的SQL语句,而实际上没有一个活动的mySQL服务器。如何在没有运行mySQL服务器的情况下从JDBC调用记录SQL语句?
我试图解决的问题是,我们现在正在将数据写入远程mySQL实例以及本地(归档数据)。我们正在登录到本地作为备份,以防远程无法访问/发生故障等。
因此,我们想要做的是在本地记录SQL语句(我们正在通过Spring JDBC模板进行变量替换),所以不像使用我们自己拼凑的SQL那样简单它到一个文件。
我确实发现log4jdbc看起来不错,但我们仍然需要本地mySQL实例处于活动状态,即使它只是使用黑洞引擎。我确实认为也许我们可以在远程服务器上使用log4jdbc,但是如果连接消失,JDBCTemplate甚至会在获取失败之前尝试并在底层JDBC驱动程序对象上运行查询?大多数池化机制会在返回之前验证连接,所以在查询有机会运行&获取日志之前,它仍然会失败。
那么,谁有什么好主意?
您应该停止尝试重新创建数据库复制。看看http://dev.mysql.com/doc/refman/5.6/en/replication.html – GreyBeardedGeek 2012-04-16 23:48:45
我们不是在复制之后。我们试图摆脱本地机器上的mysql实例,该实例仅用作归档数据的备份,以防主mysql服务器关闭,并且我们需要从各个服务器中取消数据并将它们合并到主服务器上MySQL服务器。 – Drizzt321 2012-04-16 23:51:31
它仍然听起来像你试图重新发明复制。或备份。或两者。 – GreyBeardedGeek 2012-04-17 00:04:54