在DM 的DEM 系统中,添加数据守护的备库之后,一致显示异常,但备库在主机层看是正常的。 库连接也没有问题。
查看DEM Tomcat 日志,显示如下:
Caused by: java.sql.SQLException: Try to modify user database at standby mode
at dm.jdbc.dbaccess.DBError.throwSQLException(DBError.java:44)
at dm.jdbc.dbaccess.Request_Response.resp_checkErr(Request_Response.java:2503)
at dm.jdbc.dbaccess.Request_Response.resp_prepare(Request_Response.java:699)
at dm.jdbc.dbaccess.DmdbCSI.prepareSQL(DmdbCSI.java:329)
at dm.jdbc.driver.DmdbStatement_bs.directExec(DmdbStatement_bs.java:1745)
at dm.jdbc.driver.DmdbPreparedStatement_bs.initialize(DmdbPreparedStatement_bs.java:249)
at dm.jdbc.driver.DmdbPreparedStatement_bs.<init>(DmdbPreparedStatement_bs.java:170)
at dm.jdbc.driver.DmdbConnection_bs.prepareStatement(DmdbConnection_bs.java:1909)
at dm.jdbc.driver.DmdbConnection_bs.prepareStatement(DmdbConnection_bs.java:1524)
at dm.jdbc.driver.DmdbConnection.do_prepareStatement(DmdbConnection.java:1662)
at dm.jdbc.filter.FilterChain.Connection_prepareStatement(FilterChain.java:594)
at dm.jdbc.driver.DmdbConnection.prepareStatement(DmdbConnection.java:634)
at com.dameng.common.persistence.jdbc.SQLExecute.execute(SQLExecute.java:94)
at com.dameng.common.persistence.jdbc.JdbcSupport.execute(JdbcSupport.java:89)
at com.dameng.dem.server.dao.BaseDao.execute(BaseDao.java:49)
at com.dameng.common.persistence.jdbc.JdbcSupport.execute(JdbcSupport.java:50)
at com.dameng.dem.server.dao.BaseDao.execute(BaseDao.java:37)
at com.dameng.dem.server.dao.dma.impl.DatabaseDao.createTable(DatabaseDao.java:2776)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.dameng.common.aop.DefaultMethodInvocation.proceed(DefaultMethodInvocation.java:77)
at com.dameng.common.persistence.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:130)
... 37 more
[dmdba@monitor logs]$
从这里看,是DEM 需要对备库进行一些修改,但在备库下无法执行:
Caused by: java.sql.SQLException: Try to modify user database at standby mode
在监视器中将主备库进行切换:
show
2019-09-21 14:31:32
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP_DW 453331 TRUE MANUAL FALSE
IP INST_PORT MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INST_OK INAME ISTATUS IMODE RTYPE RSTAT N_OPEN N_TASK TASK_MEM_USED FLSN CLSN SSLSN SLSN
192.168.56.191 5236 5239 2019-09-21 14:31:32 GLOBAL VALID OPEN OK DW1 OPEN PRIMARY REALTIME VALID 2 0 0 47397 47397 47397 47397
192.168.56.192 5236 5239 2019-09-21 14:31:29 GLOBAL VALID OPEN OK DW2 OPEN STANDBY REALTIME VALID 2 0 0 46878 46878 46878 46878
#================================================================================#
switchover grp_dw.dw2
[monitor] 2019-09-21 14:32:05: Not login dmmonitor or server public key changed, please try to login again!
login
username:sysdba
password:
[monitor] 2019-09-21 14:32:11: Login dmmonitor success!
switchover grp_dw.dw2
[monitor] 2019-09-21 14:32:16: Start to switchover instance DW2
[monitor] 2019-09-21 14:32:16: Notify dmwatcher(DW1) switch to SWITCHOVER status
[monitor] 2019-09-21 14:32:16: Dmwatcher process DW1 status switching [OPEN-->SWITCHOVER]
[monitor] 2019-09-21 14:32:16: Switch dmwatcher DW1 to SWITCHOVER status success
[monitor] 2019-09-21 14:32:16: Notify dmwatcher(DW2) switch to SWITCHOVER status
[monitor] 2019-09-21 14:32:16: Dmwatcher process DW2 status switching [OPEN-->SWITCHOVER]
[monitor] 2019-09-21 14:32:16: Switch dmwatcher DW2 to SWITCHOVER status success
[monitor] 2019-09-21 14:32:16: Instance DW1 start to execute sql ALTER DATABASE MOUNT
[monitor] 2019-09-21 14:32:18: Instance DW1 execute sql ALTER DATABASE MOUNT success
[monitor] 2019-09-21 14:32:18: Instance DW2 start to execute sql SP_APPLY_KEEP_BUF()
[monitor] 2019-09-21 14:32:18: Instance DW2 execute sql SP_APPLY_KEEP_BUF() success
[monitor] 2019-09-21 14:32:18: Instance DW2 start to execute sql ALTER DATABASE MOUNT
[monitor] 2019-09-21 14:32:20: Instance DW2 execute sql ALTER DATABASE MOUNT success
[monitor] 2019-09-21 14:32:20: Instance DW1 start to execute sql ALTER DATABASE STANDBY
[monitor] 2019-09-21 14:32:20: Instance DW1 execute sql ALTER DATABASE STANDBY success
[monitor] 2019-09-21 14:32:20: Instance DW2 start to execute sql ALTER DATABASE PRIMARY
[monitor] 2019-09-21 14:32:20: Instance DW2 execute sql ALTER DATABASE PRIMARY success
[monitor] 2019-09-21 14:32:20: Notify instance DW2 to change all arch status to be invalid
[monitor] 2019-09-21 14:32:21: Succeed to change all instances arch status to be invalid
[monitor] 2019-09-21 14:32:21: Notify dmwatcher(DW2) to add ctl record
[monitor] 2019-09-21 14:32:21: Notify dmwatcher(DW2) add ctl record success
[monitor] 2019-09-21 14:32:21: Instance DW1 start to execute sql ALTER DATABASE OPEN FORCE
[monitor] 2019-09-21 14:32:21: Instance DW1 execute sql ALTER DATABASE OPEN FORCE success
[monitor] 2019-09-21 14:32:21: Instance DW2 start to execute sql ALTER DATABASE OPEN FORCE
[monitor] 2019-09-21 14:32:22: Instance DW2 execute sql ALTER DATABASE OPEN FORCE success
[monitor] 2019-09-21 14:32:22: Notify dmwatcher(DW1) switch to OPEN status
[monitor] 2019-09-21 14:32:22: Dmwatcher process DW1 status switching [SWITCHOVER-->OPEN]
[monitor] 2019-09-21 14:32:22: Switch dmwatcher DW1 to OPEN status
[monitor] 2019-09-21 14:32:22: Notify dmwatcher(DW2) switch to OPEN status
[monitor] 2019-09-21 14:32:22: Dmwatcher process DW2 status switching [SWITCHOVER-->OPEN]
[monitor] 2019-09-21 14:32:22: Switch dmwatcher DW2 to OPEN status
[monitor] 2019-09-21 14:32:22: Notify group(GRP_DW)'s dmwatcher to do clear
[monitor] 2019-09-21 14:32:22: Clean request of dmwatcher processer DW1 success
[monitor] 2019-09-21 14:32:22: Dmwatcher process DW2 status switching [OPEN-->RECOVERY]
[monitor] 2019-09-21 14:32:22: Clean request of dmwatcher processer DW2 success
[monitor] 2019-09-21 14:32:22: Switchover instance DW2 success
2019-09-21 14:32:22
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP_DW 453331 TRUE MANUAL FALSE
IP INST_PORT MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INST_OK INAME ISTATUS IMODE RTYPE RSTAT N_OPEN N_TASK TASK_MEM_USED FLSN CLSN SSLSN SLSN
192.168.56.192 5236 5239 2019-09-21 14:32:20 GLOBAL VALID RECOVERY OK DW2 OPEN PRIMARY REALTIME VALID 3 0 0 52394 52394 52394 52394
192.168.56.191 5236 5239 2019-09-21 14:32:22 GLOBAL VALID OPEN OK DW1 OPEN STANDBY REALTIME INVALID 2 0 0 47427 47427 47427 47427
#================================================================================#
[monitor] 2019-09-21 14:32:25: Dmwatcher process DW2 status switching [RECOVERY-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN SSLSN SLSN
2019-09-21 14:32:23 OPEN OK DW2 OPEN PRIMARY VALID 3 52394 52394 52394 52394
show
2019-09-21 14:32:29
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP_DW 453331 TRUE MANUAL FALSE
IP INST_PORT MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INST_OK INAME ISTATUS IMODE RTYPE RSTAT N_OPEN N_TASK TASK_MEM_USED FLSN CLSN SSLSN SLSN
192.168.56.192 5236 5239 2019-09-21 14:32:26 GLOBAL VALID OPEN OK DW2 OPEN PRIMARY REALTIME VALID 3 0 0 52394 52394 52394 52394
192.168.56.191 5236 5239 2019-09-21 14:32:28 GLOBAL VALID OPEN OK DW1 OPEN STANDBY REALTIME VALID 3 0 0 52394 52394 52394 52394
#================================================================================#
切换之后备库变成了主库,还是不能识别。 查看新主库的日志,提示socket异常:
[dave@www.cndba.cn_2 log]# cat dmagent.log
2029-03-21 07:55:24
[ERROR] Post to (http://192.168.20.190:8080/dem/dem/dma_agent) fail!
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:185)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77)
at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105)
at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115)
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832)
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
at com.dameng.agent.dem.util.HttpClientUtil.postInner(HttpClientUtil.java:77)
at com.dameng.agent.dem.util.HttpClientUtil.post(HttpClientUtil.java:52)
at com.dameng.agent.dem.gather.AbstractGather.REQ_RESP(AbstractGather.java:270)
at com.dameng.agent.dem.gather.AbstractGather.doSendData(AbstractGather.java:253)
at com.dameng.agent.dem.gather.AbstractGather.sendData(AbstractGather.java:222)
at com.dameng.agent.dem.gather.AbstractGather$GatherTask.run(AbstractGather.java:70)
at java.util.TimerThread.mainLoop(Timer.java:534)
at java.util.TimerThread.run(Timer.java:484)
重启监控客户端:
[dave@www.cndba.cn_2 log]# /etc/init.d/Dm
DmAPService DmServicedw DmWatcherServicedw
[dave@www.cndba.cn_2 log]# /etc/init.d/DMAgentService restart
Stopping DMAgentService...
Removed stale pid file: /dm/dmdbms/tool/dmagent/wrapper/bin/dmagent.pid
Stopped DMAgentService.
Starting DMAgentService...
.......... running: PID:27569
[dave@www.cndba.cn_2 log]#
正常识别DW环境了:
版权声明:本文为博主原创文章,未经博主允许不得转载。