神通数据库读写分离集群笔记
神通数据库读写分离
- 读写分离是基于数据库服务器之间的日志数据传输
- 最多可以有 9 个节点
- 数据在物理上是完全独立的
- master和slave通过心跳检测来检测集群的健康状态
- 只要发生故障的节点小于集群节点总数的1/2,集群还能提供数据库服务
- 集群中的备机是可读的,主机是可读可写的,在此基础上提供了读写分离功能;另:可以通过驱动进行读写分离,驱动自动对用户执行的SQL语句进行读写分类,将写操作发送到主机执行,将读操作发送到备机执行,按照负载均衡算法执行,提高整体的性能。
高可用集群服务器配置参考
这里可以直接看神通的官方doc
jdbc读写分离配置参考
使用jdbc之前,需要配置jdbc的配置参数
- usedispatch=true表示使用分发功能(即使用读写分离),可以在oscarconfig.properties文件中配置;或者,在数据库连接的url中,直接使用usedispatch=true
- hostLoadRate设置主机的负载率,0–100
不同的应用对于读写操作的一致性、性能的需求不同,需要进行jdbc的配置。
- transactionDispatchStraight表示显式事物内语句的分发策略,默认是2,有1,2两种配置。 1代表事务中的所有语句都分发到主机。 2代表事务开始的读语句可以分发到备机, 一旦出现写语句,后面的语句都分发到主机。
- useAsynchronous,代表读操作是否可以分发到非强制同步备机,默认值true,强制同步备机是指该备机是同步节点,并且配置了数据库参数
ENABLE_HA_SLAVE_SYNC_REDO为TURE
,主机必须在收到所有强制同步备机都重做完了某事务的修改后,才能够提交此事务。强制同步备机能够保证备节点数据的强实时性,但会影响主机上事务的提交性能。 - useSlaveSyncRead,代表读备机时是否等待备机数据同步完成,默认是false,如果是true的话,驱动会发送lsn到备机,备机等待数据同步完成才会返回结果,如果对性能有要求,不要开启这个参数。
- useSlaveSyncReadGlobal,默认值false。设置
useSlaveSyncRead=ture
后此参数才有作用。useSlaveSyncReadGlobal为false,使用线程级lsn仅保证可以查询到同一个线程之前的更新事务所做的修改。 useSlaveSyncReadGlobal为true,使用全局lsn保证可以查询到所有线程之前的更新事务所做的修改。 - 上述中的几个参数设置方式,同Usedispatch的设置方式。