c3p0 数据库迁移

来源:互联网 发布:苹果手机4g网络怎么开 编辑:程序博客网 时间:2024/05/21 10:18
     近期需要迁移数据库,迁移后数据库ip将会改变。我们系统使用c3p0连接池,原本以为在数据库迁移后,只需修改服务器的hosts文件,将数据库配置文件中的对应域名映射到新的ip即可。但实验后发现此方法存在问题。

     可做如下实验:
  1. 在本机启动服务,查询正常
  2. 修改host文件,将数据库域名对应的ip修改为错误ip
  3. 重新查询,查询正常
  4. 拔掉本机网线后重新插上,查询正常
  5. 修改连接池的配置,将初始化链接数与最小链接数修改为1,重复上述实验,结果相同

     实验说明即使修改hosts了文件,此后通过连接池得到的Connection仍然使用的之前的ip。通过debug,可以发现服务启动后,进行第一次查询前,c3p0连接池将会被初始化,这时相关的配置已经加载到内存。如下图所示,在连接池初始化后,com.mchange.v2.c3p0.ComboPooledDataSource类中dmds域(类型为com.mchange.v2.c3p0.DriverManagerDataSource)的jdbcUrl的域已经被赋值,之后即使是修改了hosts文件,ComboPooledDataSource所新建的连接还是会使用之前的配置。这样若要不修改其它配置,最方便的方法还是在修改了hosts文件之后重启服务,从而重新初始化连接池。



原创粉丝点击