【问题标题】:Database mirroring with Mysql for Java Applications使用 Mysql for Java Applications 进行数据库镜像
【发布时间】:2012-04-23 05:49:57
【问题描述】:
谁能解释一下数据库镜像,尤其是mysql。
我有几个问题
我是否必须在 Java 应用程序上创建与这些数据库(主数据库和从数据库)的连接?是否有一个连接字符串或者它只是一个可编程的部分?
我是否还必须复制我的所有 sql 事务以使所有数据库移动到主服务器和从服务器时生效?
如果主 db 已关闭,并且唯一的连接是从站,我如何修补主 db 以更新在主数据库关闭期间更改的记录?
slave db在本地主机上,master在server机器上,或者有2台server机器,一个是master,一个是slave?
我将如何使用我的 java 应用程序连接到这两个数据库(从属和主),如果主自动关闭,将使用从连接。
【问题讨论】:
标签:
java
mysql
jdbc
mirroring
【解决方案1】:
1) 我是否必须在 Java 应用程序上创建与这些数据库(主数据库和从数据库)的连接?是否有一个连接字符串或者它只是一个可编程的部分?
是的。通常,只有当您需要写入数据库时,您才会创建与主服务器的连接。对于读取作业,您将使用与一个或多个从属设备的连接,这样主控设备就不必处理该负载。这是以编程方式完成的,没有用于此的连接字符串。
您还可以查看this link,它使用 MySQL 代理为您的应用程序透明地拆分读取和写入。需要注意的是,这只是概念验证
2) 我是否还必须复制我的所有 sql 事务以使所有数据库移动生效到主从服务器?
不,mysql 复制会为你做这件事。
3) 如果主数据库已关闭,并且唯一的连接是从属数据库,我如何修补主数据库以更新在主数据库关闭期间更改的记录?
简短的回答是你不能。如果您需要高可用性读取,您应该查看 MySQL Cluster。多主配置也可以工作。
4)slave db在本地主机上,master在server机器上,或者有2台server机器,一个是master,一个是slave?
主从机器可以而且应该驻留在不同的服务器上。如果这就是您所说的“本地主机”的意思,那么您不太可能希望将奴隶放置在最终用户机器上。
5) 我将如何使用我的 java 应用程序连接到这两个数据库(从属和主),如果主自动关闭,从属连接将使用哪种类型的连接。
如果您的所有读取都来自从属设备(或多个从属设备),则失去主设备不会中断您的读取,只会中断您的写入。如果您有一个从属设备并且它出现故障,您可以选择回退到使用主设备连接进行读取。