http://blog.sina.com.cn/s/blog_4d22b97201012b81.html
容灾项目系统切换演练方案
上海同城容灾切换演练
目 录
1. 文档概述.. 4
1.1 范围.. 4
1.2 适用人员.. 4
1.3 术语定义.. 4
2. 切换环境概述.. 5
2.1 GoldenGate逻辑结构.. 5
2.2 数据库服务器.. 5
2.3 存储.. 5
3. 切换流程概述.. 5
3.1 计划内切换.. 5
3.2 计划外切换.. 6
4. 计划内同城切换.. 6
4.1 关闭192.168.xxx.50的job, trigger 6
4.2 停止192.168.xxx.50中OGG的extlc和dpelc进程.. 7
4.3 停止192.168.xxx.112中OGG的replc进程.. 8
4.4 确认数据库对象一致.. 9
4.5 启动192.168.xxx.112的job, trigger 10
4.6 启动192.168.xxx.112中OGG的extlc和dpelc进程.. 11
4.7 调整192.168.xxx.50数据库的sequence. 12
4.8 启动192.168.xxx.50中OGG的replc进程.. 12
5. 计划外同城切换.. 13
5.1 停止192.168.xxx.112中OGG的replc进程.. 13
5.2 比较数据库对象是否一致并记录当前SCN.. 14
5.3 启动192.168.xxx.112的job, trigger 16
5.4 启动192.168.xxx.112中OGG的extlc和dpelc进程.. 16
1. 文档概述
此文档是关于环迅支付容灾项目上海同城切换演练方案。它将为环迅公司发生上海容灾切换演练时提供指导,包括切换流程及切换命令。此文档根据之前测试报告进行制定,可作为切换过程的操作手册使用。
1.1 范围
此文档涵盖的容灾切换内容包括
l 计划内上海同城容灾切换演练流程
l 计划外上海同城容灾切换演练流程
此文档适用于环迅的上海数据库平台,上海商户测试数据库192.168.xxx.50,上海容灾数据库192.168.xxx.112.。.
1.2 适用人员
此测试文档主要面向环迅容灾项目项目经理,信息部门,数据库管理员和其他相关人员。
1.3 术语定义
2. 切换环境概述
2.1 GoldenGate逻辑结构
正常状态下,192.168.xxx.50对外提供商户测试服务,192.168.xxx.112从192.168.xxx.50同步数据,对外提供容灾服务。
当192.168.xxx.50发生计划内或计划外停机时而无法使用时,将使用192.168.xxx.112对外提供服务。
2.2 数据库服务器
数据库服务器192.168.xxx.50使用PC SERVER,其主要配置信息是:
CPU: 1* Intel(R) Xeon(R) CPU 5110 @ 1.60GHz
Memory: 2GB
网卡: 2* 1000Gb ethernet
硬盘: 1*200GB disk
数据库服务器192.168.xxx.112使用SUN T5120,其主要配置信息是:
CPU: 1*1165 MHz SUNW,UltraSPARC-T2
Memory: 32GB
网卡: 2* 1000Gb ethernet
硬盘: 4*300GB 10K 2.5 SAS disk
2.3 存储
由于仅仅是切换演练系统,故都是使用本地磁盘。
3. 切换流程概述
3.1 计划内切换
步骤
192.168.xxx.50
192.168.xxx.112
1
关闭job, trigger
2
停止OGG的extlc和dpelc进程
3
停止OGG的replc进程
4
确认数据对象和数据完全一致
5
更改主机和数据库IP地址为192.168.100.66
6
更改主机和数据库IP地址为192.168.100.167
7
启动job,trigger
8
启动OGG的extlc和dpelc进程
10
调整数据库的sequence
11
启动OGG的replc进程
3.2 计划外切换
步骤
192.168.xxx.50
192.168.xxx.112
1
停止OGG的replc进程
2
比较数据是否一致,记录当前SCN
3
更改主机和数据库IP地址为192.168.100.66
4
启动job,trigger
5
启动OGG的extlc和dpelc进程
4. 计划内同城切换
关闭192.168.xxx.50到192.168.xxx.112的复制
4.1 关闭192.168.xxx.50的job, trigger
l 操作确认
1) 顺序检查生产中心数据库数据库连接的session中除了GoldenGate和sys用户外的数据连接是否都运行完毕(确认无应用连接)
$ sqlplus / as sysdba
SQL> column username format a12
SQL> column program format a20
SQL> column machine format a10
SQL> select username,program,machine,last_call_et,sql_hash_value,status from gv$session where username is not null and username<>'SYS' and type='USER';
确认非sys用户的status状态是INACTIVE
2) 禁用ddl
SQL>@ /home/oracle/ggs/ddl_disable.sql
SQL> select TRIGGER_NAME,STATUS from dba_triggers where trigger_name like '%GGS%';
确认trigger的状态都是DISABLED
3) 禁用所有的job和trigger
SQL> @ /home/oracle/ggs/dirsql/disable_all.sql
确认disable_all显示的结果中status都是DISABLED
4.2 停止192.168.xxx.50中OGG的extlc和dpelc进程
l 操作确认
1.
2.
1) 检查生产库extlc进程是否将数据全部抓取出来
GGSCI> info all
GGSCI> lag ext extlc
确认结果为:At EOF, no more records to process
GGSCI> send ext extlc,showtrans
确认输出为:not transaction founds
GGSCI> info extlc, detail
GGSCI> info dpelc, detail
确认extlc的Target Extract Trails中的RBA与dpelc显示的Log Read Checkpoint中的RBA数值一致
2) 检查生产中心dpelc进程是否将数据全部传送完毕
GGSCI> info all
GGSCI> lag ext dpelc
确认结果为:At EOF, no more records to process
GGSCI> info dpelc, detail
记录显示的Target Extract Trails中的RBA值
登录到192.168.xxx.112数据库,进入控制台
GGSCI> info replc, detail
记录显示的Log Read Checkpoint中的RBA数值,确认与dpelc记录的数值一致。
3) 停止192.168.xxx.50上的extlc和dpelc进程
GGSCI> stop extlc
GGSCI> stop dpelc
GGSCI> info all
确认两个进程状态都是STOPPED
4.3 停止192.168.xxx.112中OGG的replc进程
l 操作确认
2.
3.
1) 检查192.168.xxx.112中队列内容是否全部apply
GGSCI> info all
GGSCI> lag rep replc
确认结果为At EOF, no more records to process.
2) 确认是否与源端同步完毕
GGSCI> info replc
多次执行,确认rba值无变化
3) 停止replc进程
GGSCI> stop replc
GGSCI> info all
确认replc进程状态是STOPPED
4.4 确认数据库对象一致
l 操作确认
4.
1) 在192.168.xxx.112上比较数据对象是否一致(抽取IPS2所有表比较资料是否一致)
$ sqlplus ips2/password@192.168.xxx.50
SQL> @ /export/home/db01/ggs/dirsql/checkdata_50.sql
SQL> exit
$sqlplus ips2/password@192.168.xxx.112
SQL> @ /export/home/db01/ggs/dirsql/checkdata_112.sql
SQL> exit
$ diff checkdata_50.out checkdata_112.out
确认比较结果完全一致
打开192.168.xxx.112到192.168.xxx.50的复制
4.5 启动192.168.xxx.112的job, trigger
l 操作确认
5.
1) 启用192.168.xxx.112的job和trigger
$ sqlplus / as sysdba
SQL> @/export/home/db01/ggs/dirsql/enable_all.sql
确认结果中所有STATUS都是ENABLED,确认trigger的状态是enable
2) 启用192.168.xxx.112的ddl功能
SQL> @/export/home/db01/ggs /ddl_enable.sql
SQL> select TRIGGER_NAME,STATUS from dba_triggers where trigger_name like '%GGS%';
确认结果中所有STATUS都是ENABLED
4.6 启动192.168.xxx.112中OGG的extlc和dpelc进程
l 操作确认
1) 在192.168.xxx.50上,复制参数文件到192.168.xxx.112
$ cd /ggs/dirprm
$ mv extlc.prm extlcpd.prm
$ mv dpelc.prm dpelcpd.prm
$ scp extlcpd.prm 192.168.xxx.112: /export/home/db01/ggs/dirprm/
$ scp dpelcpd.prm 192.168.xxx.112: /export/home/db01/ggs/dirprm/
2) 在192.168.xxx.50上,停止并删除extlc和dpelc进程
GGSCI> stop extlc
GGSCI> stop dpelc
GGSCI> delete extract extlc
GGSCI> delete extract dpelc
3) 备份旧有参数文件,并复制新的参数文件。
$ cd /ggs/dirprm
$ mv extlc.prm extlcqr.prm
$ mv dpelc.prm dpelcqr.prm
$ cp extlcpd.prm extlc.prm
$ cp dpelcpd.prm dpelc.prm
4) 在192.168.xxx.112的GGSCI控制台上添加extlc和dpelc进程并启动。
3.
4.
5.
6.
GGSCI> add extract extlc, tranlog, begin now
GGSCI> add exttrail ./dirdat/lc, ext extlc, megabytes 10
GGSCI> start ext extlc
GGSCI> add ext dpelc, exttrailsource ./dirdat/rm
GGSCI> add rmttrail ./dirdat/rm, ext dpelc, megabytes 10
GGSCI> start ext dpelc
GGSCI> info all
确认extlc和dpelc状态为RUNNING
4.7 调整192.168.xxx.50数据库的sequence
l 操作确认
在192.168.xxx.50下执行
7.
8.
9.
10.
$ sqlplus ggs/ggs
GGSCI> @/home/oracle/ggs/dirsql/alter_new_target_sequence.sql
进入192.168.xxx.112的OGG控制台
$ sqlplus ggs/ggs
GGSCI> @/export/home/db01/ggs/dirsql/checksequence.sql
确认192.168.xxx.50中sequence的last_number大于或等于192.168.xxx.112中sequence的last_number
4.8 启动192.168.xxx.50中OGG的replc进程
l 操作确认
1) 在192.168.xxx.112上,复制参数文件到192.168.xxx.50
$ cd /ggs/dirprm
$ mv replc.prm replcqr.prm
$ scp replcqr.prm 192.168.xxx.50:/home/oracle/ggs/dirprm/
2) 在192.168.xxx.50上,启动replc进程
11.
12.
13.
14.
GGSCI> add replicat replc,exttrail ./dirdat/rm,nodbcheckpoint
GGSCI> start replc
GGSCI> info all
确认replc状态为RUNNING
l 回退步骤
GGSCI> stop replc
将网络连接切换到备用库
5. 计划外同城切换
前提:192.168.xxx.50由于硬件故障宕机或者DB无法提供服务。
5.1 停止192.168.xxx.112中OGG的replc进程
l 操作确认
5.
6.
1) 检查192.168.xxx.112中队列内容是否全部apply
GGSCI> info all
GGSCI> lag rep replc
确认结果为At EOF, no more records to process.
2) 确认是否与源端同步完毕
GGSCI> info replc
多次执行,确认rba值无变化
3) 停止replc进程
GGSCI> stop replc
GGSCI> info all
确认replc进程状态是STOPPED
l 回退步骤
4) 启动192.168.xxx.112的replc进程
GGSCI> start replc
GGSCI> info all
5.2 比较数据库对象是否一致并记录当前SCN
l 操作确认
7.
1) 在192.168.xxx.112上比较数据对象是否一致(前提:192.168.xxx.50还可以连接)
$ sqlplus ips2/password@192.168.xxx.50
SQL> @/export/home/db01/ggs/dirsql/checkdata_50.sql
SQL> exit
$sqlplus ips2/password@192.168.xxx.112
SQL> @/export/home/db01/ggs/dirsql/checkdata_112.sql
SQL> exit
$ diff checkdata_50.out checkdata_112.out
确认比较结果是否一致,进行记录
2) 记录当前SCN
登录到192.168.xxx.112上
$ sqlplus / as sysdba
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
xxxxxxxx
5.3 启动192.168.xxx.112的job, trigger
l 操作确认
6.
1) 启用192.168.xxx.112的job和trigger
$ sqlplus / as sysdba
SQL> @/export/home/db01/ggs/dirsql/enable_all.sql
确认结果中所有STATUS都是ENABLED,确认trigger的状态是enable
2) 启用192.168.xxx.112的ddl功能
SQL> @/export/home/db01/ggs/ddl_enable.sql
SQL> select TRIGGER_NAME,STATUS from dba_triggers where trigger_name like '%GGS%';
确认结果中所有STATUS都是ENABLED
l 回退步骤
3) 禁用192.168.xxx.112的job和trigger
$ sqlplus / as sysdba
SQL> @/export/home/db01/ggs/dirsql/disable_all.sql
确认结果中所有STATUS都是DISABLED
4) 禁用192.168.xxx.112的ddl功能
SQL> @/export/home/db01/ggs/ddl_disable.sql
SQL> select TRIGGER_NAME,STATUS from dba_triggers where trigger_name like '%GGS%';
确认结果中所有STATUS都是DISABLED,确认trigger的状态是disable
5.4 启动192.168.xxx.112中OGG的extlc和dpelc进程
l 操作确认
1) 在192.168.xxx.50上,复制参数文件到192.168.xxx.112
$ cd /ggs/dirprm
$ mv extlc.prm extlcpd.prm
$ mv dpelc.prm dpelcpd.prm
$ scp extlcpd.prm 192.168.xxx.112: /export/home/db01/ggs/dirprm/
$ scp dpelcpd.prm 192.168.xxx.112:/export/home/db01/ggs/dirprm/
2) 在192.168.xxx.112上,备份旧有参数文件,并复制新的参数文件。
$ cd /ggs/dirprm
$ mv extlc.prm extlcqr.prm
$ mv dpelc.prm dpelcqr.prm
$ cp extlcpd.prm extlc.prm
$ cp dpelcpd.prm dpelc.prm
3) 在192.168.xxx.112的GGSCI控制台上添加extlc和dpelc进程并启动。
15.
16.
17.
18.
GGSCI> add extract extlc, tranlog, begin now
GGSCI> add exttrail ./dirdat/lc, ext extlc, megabytes 10
GGSCI> start ext extlc
GGSCI> add ext dpelc, exttrailsource ./dirdat/lc
GGSCI> add rmttrail ./dirdat/rm, ext dpelc, megabytes 10
GGSCI> start ext dpelc
GGSCI> info all
确认extlc和dpelc状态为RUNNING
l 回退步骤
GGSCI> stop extlc
GGSCI> stop dpelc
192.168.xxx.50上Replicat可以后续配置!
阅读(3285) | 评论(0) | 转发(0) |