4. 恢复
在Multiplex的协调节点上进行数据库恢复时分为两种情况:
(1) 恢复Catalog DB到原位置
举个例子说吧:备份时协调节点上的Catalog DB (mp2.db) 位于/sybiqdb/mp2目录下,在恢复时仍然恢复到相同的目录位置,并且文件名也相同。
(2) 恢复Catalog DB到不同的位置
即备份时协调节点上的Catalog DB (mp2.db) 位于/sybiqdb/mp2目录下,在恢复时恢复到相同不同的目录位置,例如:/sybiqdb/mp2new。
为了能简化IQ Multiplex数据库的恢复步骤,减少发生错误返工的可能性。最好能把IQ Catalog DB恢复到原位置并且文件名也相同。
对于这两种情况,在进行恢复时的某些步骤是不相同的,下面将分别进行说明。
4.1 恢复到原位置
下面是具体的步骤:
(1) 确保IQ Multiplex中每个server所在机器上的IQ 数据库(即Catalog DB)的Home目录还存在。如果不存在的话需要创建它们。
例如:node1(协调节点)上的/sybiqdb/mp2目录是数据库的Home目录,如果在恢复前发现这个目录没有存在,那么需要创建它。
(2) 停止(shutdown) IQ Multiplex中的每一个IQ Server(包括“协调”服务器和所有的“辅助”服务器)
建议使用stop_iq停止iq server。
(3) 在停止所有IQ Server之后,确保数据库真正成功的停止。
在UNIX或LINUX上,使用: ps -ef | grep iqsrv15命令检查是否真正停止了相应的IQ Server。
(4) 移动或复制需要的文件
a.使用操作系统命令制作.iqmsg文件的copy。
b.在Multiplex中的每个server上,保留IQ_SYSTEM_TEMP dbspace所使用的文件或裸设备。
c.在“协调节点”上删除下面的文件:
/.db
/.log
在删除.db和.log文件之前最好能使用OS的cp命令复制一份。
(5) 在“协调节点”上启动启动utility server数据库
例如:
start_iq -n NODE1_UTILITY -c 256m -gd DBA -gm 20 -ti 8400 -x "tcpip(port=3638)"
(6) 使用dbisql连接到utility server
dbisql -c "uid=DBA;pwd=sql;eng=NODE1_UTILITY;dbn=utility_db" –nogui
(7) 执行RESTORE命令
例如:
RESTORE DATABASE '/sybiqdb/mp2/mp2.db' FROM '/backup/mp2db.20110302.db.full.dmp'
(8) 使用stop_iq停止utility数据库
(9) 确定协调节点和辅助接点上的IQ_SYSTEM_TEMP中的dbfiles所使用的文件或裸设备存在,并且具有正确的尺寸
(10) 以正常的方式启动协调服务器
(11) 同步Multiplex中的每一个辅助服务器
例如,在node2节点上进行同步:
dbbackup -y -d -c "uid=DBA;pwd=sql;links=tcpip;eng=mp2node_c" /sybiqdb/mp2
(12) 启动每个辅助服务器
4.2 恢复到不同位置
下面是具体的步骤:
(1) 确保IQ Multiplex中每个server所在机器上的IQ 数据库(即Catalog DB)的Home目录还存在。如果不存在的话需要创建它们。
例如:node1(协调节点)上的/sybiqdb/mp2目录是数据库的Home目录,如果在恢复前发现这个目录没有存在,那么需要创建它。
(2) 停止(shutdown) IQ Multiplex中的每一个IQ Server(包括“协调”服务器和所有的“辅助”服务器)
(3) 在停止所有IQ Server之后,确保IQ Server已经成功停止。
在UNIX或LINUX上,使用: ps -ef | grep iqsrv15命令检查是否真正停止了相应的IQ Server。
(4) 移动或复制需要的文件
a.使用操作系统命令制作.iqmsg文件的copy。
b.在Multiplex中的每个server上,保留IQ_SYSTEM_TEMP dbspace所使用的文件或裸设备。
(5) 在“协调节点”上启动启动utility server数据库
例如:
start_iq -n NODE1_UTILITY -c 256m -gd DBA -gm 20 -ti 8400 -x "tcpip(port=3638)"
(6) 使用dbisql连接到utility数据库
例如:
dbisql -c "uid=DBA;pwd=sql;eng=NODE1_UTILITY;dbn=utility_db" –nogui
(7) 执行RESTORE命令把Catalog DB恢复到新的目录位置中
例如:
原协调节点的IQ数据库Catalog DB目录是 /sybiqdb/mp2,在restore时恢复到/sybiqdb/mp2new目录中。
在Mulitplex数据库的备份中,包括Catalog DB的备份.由于系统表中记录了Catalog DB的绝对路径,所以当restore到Catalog DB到新的路径时,需要删除Mulitplex中的各辅助服务器,然后重建。注意:如果使用了符号链接,那么需要在新的目录中建立它们;如果restore时希望恢复到不同的设备,或是使用了符号链接,但符号链接的位置(即所在目录)放生了变化,那么需要在RESTORE时增加RENAME子句把dbfiles映射到正确的新位置。
注意:如果在创建数据时MESSAGE PATH使用了绝对路径,那么也需要RENAME IQ_SYSTEM_MSG到正确的位置;如果MESSAGE PATH使用了相对路径,即dbname.iqmsg格式,那么在RESTORE时不需要对IQ_SYSTEM_MSG进行RENAME。
(8) 停止utility数据库
(9) 使用-iqmpx_sn 1和-iqmpx_ov 1启动协调节点
例如:
start_iq @params.cfg -n mp2node_c -x "tcpip{port=4888}" -iqmpx_sn 1 -iqmpx_ov 1 mp2.db
(10) 使用dbisql连接到协调服务器,执行DROP MULTIPLEX SERVER语句删除所有的辅助服务器。
例如:
DROP MULTIPLEX SERVER casnode_w1
如果你删除了最后一个服务服务器,协调服务器会自动shutdown,表示Multipelx转化为Simplex。
(11) 重启协调节点上的IQ Server(不加-iqmpx_sn和-iqmpx_ov选项)
例如:
start_iq @params.cfg -n mp2node_c -x "tcpip{port=4888}" mp2.db
(12) 用正确的目录位置重新创建所有的辅助服务器
例如:
CREATE MULTIPLEX SERVER mp2node_w1 DATABASE '/sybiqdb/mp2new/mp2.db' HOST 'node2' PORT 4888 ROLE WRITER STATUS INCLUDED;
需要注意的是:
如果协调服务器上的Catalog DB被恢复到新的目录,并且在新的目录中生成了新的符号链接文件,那么在辅助服务器上对于指向共享IQ Store设备的符号链接的绝对路径名应该与协调服务器相同。例如:在协调节点上把Catalog DB恢复到/sybiqdb/mp2new目录下(原先是在/sybiqdb/mp2目录下)。并且在/sybiqdb/mp2new 目录下创建了符号链接/sybiqdb/mp2new/MP2_SYS_MAIN_FILE01.iq,那么在辅助节点上应该也有这个符号链接文件,并且绝对路径和文件名应该与其完全相同。为了不容易出错,辅助节点的Catalog DB所在目录与符号链接最好与协调节点保持一致。例如:在辅助服务器上也创建一个/sybiqdb/mp2new目录,在这个目录下使用dbbackup命令同步,同步生成的.db文件也位于这个目录,并且保持符号链接文件的绝对路径和文件名与协调服务器相同。
在创建了头一个辅助服务器后,协调服务器会自动shutdown,表示Simplex转化为Multiplex。
(13) 重启“协调服务器”时,在控制台和.srvlog文件中会看到“WARNING : Multiplex environment incorrect for this server Please connect and run procedure sp_iqmpxvalidate”警告消息。这是因为增加的辅助服务器的IQ_SYSTEM_TEMP dbspaces还没有增加过dbfiles。可以忽略这个警告。
(14) 同步辅助服务器
例如,在node2节点上执行如下命令:
dbbackup -y -d -c "uid=DBA;pwd=sql;links=tcpip;eng=mp2node_c" /sybiqdb/mp2new
(15) 启动辅助服务器
(16) 连接到每一个辅助服务器,为IQ_SYSTEM_TEMP增加dbfiles。
(17) 在协调服务器上运行sp_iqmpxvalidate存储过程以检查Multiplex是否有效。如果执行返回“no error detected”,那么表示Mulitplex环境正常。
阅读(2396) | 评论(0) | 转发(0) |