目录
DSC故障切换
故障处理
故障自动切换
DSC故障切换
故障处理
在 DMDSC 故障处理机制下,一旦产生节点故障,登录到故障节点的所有连接将会断开,所有未提交事务将被强制回滚;活动节点上的用户请求可以继续执行,但是一旦产生节点间信息传递(比如:向故障节点发起 GBS/LBS 请求、或者发起 Remote Read 请求),当前操作就会被挂起;在 DMDSC 故障处理完成后,这些被挂起的操作可以继续执行。
DMDSC 环境 DMSERVER 故障处理主要包括以下工作:
- 暂停所有会话线程、工作线程、日志刷盘线程、检查点线程等,避免故障处理过程中产生并发错误;
- 收集所有活动节点的 Buffer,丢弃无效数据页,获取最新数据页和需要重做 REDO 日志的数据页信息,并在排除故障节点后重新构造 LBS/GBS 信息;
- 重做 REDO 日志;
- 收集所有节点事务信息,重新构造锁对象,并重构相应的 LLS/GLS/LTV/GTV 系统;
- 控制节点执行故障节点活动事务回滚和故障节点已提交事务修改的 PURGE 操作。
故障自动切换
实现故障用户连接自动切换需要在使用 DM 共享存储集群的时候,配置连接服务名。
服务名
用于连接的服务名,用户通过连接服务名访问数据库。
服务名=(IP[:PORT],IP[:PORT],......)
SWITCH_TIMES
检测到数据库实例故障时,接口在服务器之间切换的次数;
SWITCH_INTERVAL
表示在服务器之间切换的时间间隔,单位为毫秒,缺省值为 200。
dm_svc.conf 配置如下:
#以下配置是每次定向连接 dmdsc_svc服务名的的第一个服务器,当服务器故障后,尝试99次,间隔1000毫秒的节奏一直连接第一个服务器;若连接不上,再循环下一个服务器,连接上之后进行使用。
dmdsc_svc=(192.168.64.111:6636,192.168.64.112:6637)
SWITCH_TIMES=(99)
SWITCH_INTERVAL=(1000)
连接到 DMDSC
disql SYSDBA/SYSDBA@dmdsc_svc
SQL> select name from v$instance;
行号 NAME
---------- ------- -------
1 DSC01
会话不关闭,关掉DSC01实例
再次在当前会话执行:
SQL> select name from v$instance;
行号 NAME
---------- ------ --------
1 DSC02
实现了会话的切换。
LOGIN_DSC_CTRL=1 表示使用服务名连接数据库时只选择 DMDSC 主控节点(CONTROL NODE)的库。dm_svc.conf 配置如下:
dmdsc_svc=(192.168.64.111:6636,192.168.64.112:6637)
[dmdsc_svc]
LOGIN_DSC_CTRL=(1)
EP_SELECTOR=N(N>=1)和 AUTO_RECONNECT=2 表示使用服务名连接数据库时会选择“IP 地址和端口号”集合列表中第 N 个节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接,如果第 N 个节点恢复了,当前连接将自动切换到第 N 个节点上。
AUTO_RECONNECT=(1),当服务可以正常连接后当前连接也不会切换;AUTO_RECONNECT=(2),服务恢复,可以正常连接了,会进行切换。
CHECK_FREQ,JDBC 专用,服务名连接数据库时,循环检测连接是否需要重置的时间间隔。
dm_svc.conf 配置如下:
dmdsc_svc=(192.168.64.111:6636,192.168.64.112:6637)
[dmdsc_svc]
EP_SELECTOR=(1)
AUTO_RECONNECT=(2)
CHECK_FREQ=(60000)