在 HADR 多备机这一新的特性中,备机数据库被分为两类,
一类是主要备机(Principal Standby)
另一类是辅助备机(Auxiliary Standby)
一、目录准备
mkdir -p /home/db2inst1/db2_backup
mkdir -p /home/db2inst1/db2_archive
mkdir -p /home/db2inst1/db2_log
chmod -R 775 /home/db2inst1/db2_backup
chmod -R 775 /home/db2inst1/db2_archive
chmod -R 775 /home/db2inst1/db2_log
chown -R db2inst1:db2inst1 /home/db2inst1/db2_backup
chown -R db2inst1:db2inst1 /home/db2inst1/db2_archive
chown -R db2inst1:db2inst1 /home/db2inst1/db2_log
目前成都创新互联已为近1000家的企业提供了网站建设、域名、虚拟空间、网站托管维护、企业网站设计、博望网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
二、设置归档和打开日志重建模式
db2 update db cfg for hadb using logarchmeth2 disk:/home/db2inst1/db2_archive/
db2 update db cfg for hadb using NEWLOGPATH /home/db2inst1/db2_log
三、备份归档
db2 force applications all
db2 backup db hadb to /home/db2inst1/db2_backup/
db2stop force;db2start
db2 archive log for db hadb
三、备份
db2 backup db hadb to /home/db2inst1/db2_backup/
scp /home/db2inst1/db2_backup/HADB.0.db2inst1.DBPART000.20180117141245.001 db2inst1@192.168.12.31:/home/db2inst1/db2_backup/
下面开始配置HADR
1.2.6备份和还原数据
主库离线备份
db2 backup database hadb to /home/db2inst3/
备库还原,
先还原主要主库和辅助备库1,留一个辅助备库2做动态添加用
db2 restore database hadb from "/home/db2inst1/db2_backup/" taken at 20180117141245 replace history file
# 在 M5 上
db2 "UPDATE DB CFG FOR MYDB USING
HADR_TARGET_LIST M4:DB2_db2insta_2nd|M3:DB2_db2insta_pri
HADR_REMOTE_HOST M3
HADR_REMOTE_INST db2insta
HADR_REMOTE_SVC DB2_db2insta_pri
HADR_SYNCMODE superasync
HADR_LOCAL_HOST M5
HADR_LOCAL_SVC DB2_db2insta_3rd "
2.1.1配置主库
db2 "UPDATE DB CFG FOR HADB USING
HADR_TARGET_LIST 192.168.12.31:55004|192.168.12.33:55005----主要备机ip和端口,辅助备机ip和端口
HADR_REMOTE_HOST 192.168.12.31-------主要备机ip和端口
HADR_REMOTE_SVC 55004----主要备机端口
HADR_SYNCMODE sync
HADR_REMOTE_INST db2inst1-----主要备机实例
HADR_LOCAL_HOST 192.168.12.30----主机的ip
HADR_LOCAL_SVC 55003"----主机端口
db2 "UPDATE DB CFG FOR mydb USING
HADR_TARGET_LIST 192.168.12.31:55004|192.168.12.33:55005
HADR_REMOTE_HOST 192.168.12.31
HADR_REMOTE_SVC 55004
HADR_SYNCMODE sync
HADR_REMOTE_INST db2inst1
HADR_LOCAL_HOST 192.168.12.30
HADR_LOCAL_SVC 55003"
2.1.2配置主要备机
# 在 M4 上
db2 "UPDATE DB CFG FOR MYDB USING
HADR_TARGET_LIST M3:DB2_db2insta_pri|M5:DB2_db2insta_3rd
HADR_REMOTE_HOST M3
HADR_REMOTE_INST db2insta
HADR_REMOTE_SVC DB2_db2insta_pri
HADR_SYNCMODE sync
HADR_LOCAL_HOST M4
HADR_LOCAL_SVC DB2_db2insta_2nd "
# 在 host2 上
db2 "UPDATE DB CFG FOR HADB USING
HADR_TARGET_LIST 192.168.12.30:55000|192.168.12.33:55003
HADR_REMOTE_HOST 192.168.12.30
HADR_REMOTE_SVC 55000
HADR_LOCAL_HOST 192.168.12.31
HADR_LOCAL_SVC 55001
HADR_SYNCMODE sync
HADR_REMOTE_INST db2inst1"
2.1.3配置辅助备机1
# 在 host3 上
db2 "UPDATE DB CFG FOR HADB USING
HADR_TARGET_LIST 192.168.12.31:55001|192.168.12.30:55000
HADR_REMOTE_HOST 192.168.12.30
HADR_REMOTE_SVC 55000
HADR_SYNCMODE superasync
HADR_REMOTE_INST db2inst1
HADR_LOCAL_HOST 192.168.12.33
HADR_LOCAL_SVC 55003"
2.2启动HADR
2.2.1启动主要备机
[db2inst3@kvm102 ~]$ db2 START HADR ON DB HADB AS STANDBY
DB20000I The START HADR ON DATABASE command completed successfully.
[db2inst3@kvm102 ~]$ db2pd -hadr -alldbs
2.2.2启动辅助备机
2.2.3启动主库
db2 deactivate db hadb
db2 START HADR ON DB HADB AS PRIMARY
db2 deactivate db sample
db2 stop HADR ON DB HADB
关闭 HADR 对的建议顺序
警告:
尽管可对主数据库和/或备用数据库使用 STOP HADR 命令来停止 HADR,但应谨慎使用。
如果要停止指定的数据库,但仍然想保留其 HADR 主数据库角色或备用数据库角色,请不要发出 STOP HADR 命令。
如果发出 STOP HADR 命令,那么该数据库将变为标准数据库,并且可能需要重新初始化才能继续作为 HADR 数据库运行。请改为发出 DEACTIVATE DATABASE 命令。
如果只想关闭 HADR 操作,那么下面是关闭 HADR 对的建议方法:
取消激活主数据库
对主数据库停止 DB2
取消激活备用数据库
对备用数据库停止 DB2
启动HADR,则刚好相反:
1、启动备库,备库启动后进入local catchup,remote catchup pending,会一直尝试连接主库。
2、启动主库,等待接收备库的连接,如果在规定的时间(hadr_timeout)不能收到备库的连接,则启动失败,这样是为了防止脑裂 brain split.一旦备库连接上主库,
进入remote catchup状态。重放完主库传过来的日志后,进入peer状态。
四、主库上执行
db2 "update db cfg for HADB using
HADR_TARGET_LIST 192.168.12.31:55001|192.168.12.32:55002----辅列表
HADR_REMOTE_HOST 192.168.12.31--------------------------------------主辅
HADR_REMOTE_SVC 55002
HADR_LOCAL_HOST 192.168.12.30---------------------------------------主库
HADR_LOCAL_SVC 55001
HADR_SYNCMODE sync
HADR_REMOTE_INST db2inst1"
配置hosts和services文件
vi /etc/hosts
vi /etc/Services
DB2_HADR_A 55000/tcp
DB2_HADR_B 55001/tcp
DB2_HADR_C 55003/tcp
1、配置三个备机的ROS和UR隔离
db2set DB2_HADR_ROS=1
db2set DB2_STANDBY_ISO=UR
2、备机恢复HADB数据库
db2 restore db HADB
ServerA :192.168.1.105 主机
ServerB: 192.168.1.106 主备
ServerD:192.168.1.104 辅备1
ServerE: 192.168.1.107 辅备2
主备库上执行
注意第一个为主机IP地址,其次为辅备1的IP地址,辅备2的IP地址
db2 "update db cfg for HADB using HADR_TARGET_LIST 192.168.12.30:55001|192.168.12.32:55003
HADR_REMOTE_HOST 192.168.12.30-------------------------------------------------------------------主
HADR_REMOTE_SVC 55001
HADR_LOCAL_HOST 192.168.1.31---------------------------------------------------------------------辅
HADR_LOCAL_SVC 55002
HADR_SYNCMODE sync
HADR_REMOTE_INST db2inst1"
db2 "update db cfg for HADB using HADR_TARGET_LIST 192.168.12.30:55001|192.168.12.32:55003
HADR_REMOTE_HOST 192.168.12.30
HADR_REMOTE_SVC 55001
HADR_LOCAL_HOST 192.168.1.31
HADR_LOCAL_SVC 55002
HADR_SYNCMODE sync
HADR_REMOTE_INST db2inst1"
辅库上执行
db2 "update db cfg for HADB using HADR_TARGET_LIST 192.168.12.31:55002|192.168.12.30:55001
HADR_REMOTE_HOST 192.168.12.30
HADR_REMOTE_SVC 55001
HADR_LOCAL_HOST 192.168.12.32
HADR_LOCAL_SVC 55003
HADR_SYNCMODE superasync
HADR_REMOTE_INST db2hadr"
状态(State):HADR 当前的状态。包括 Local Catchup、Remote Catchup、Remote Catchup Pending、Peer、Disconnect Peer。
Local Catchup: 如果备机在这种状态下,表明备机这在从本地的磁盘上读取日志文件,并且对日志进行重新重做;如果主机在这种状态下,表明它正在等待备机的连接。HADR 的主机并没有从本地读日志并重做的过程,我们之所以让主机显示这个状态,就是通过主机上的这个状态告诉用户,备机正在做本地日志的重做。
Remote Catchup: 处于这个状态的 HADR 的主机正在从本地读日志,并且将这些日志发送给备机;而备机会从主机接受日志,并且将这些日志写入它本地的磁盘,并且对这些日志进行重做。
Remote Catchup Pending: 如果备机出于这种状态,表明它正在尝试连接主机。出现这种状态,一般是因为主机不存在或者主机还没有完全的启动起来,导致连接没有成功。
Peer: 如果 HADR 的主备机器处于这种状态,表明主机和备机的网络连接良好。日志可以顺利的从主机发送到备机。
Disconnect Peer: 如果 HADR 的主备机器处于这种状态,表明主机和备机的网络已经断开,但是连接断开的时间并没有超过 PEER_WINDOW。这个状态内,主机上的事务不可以提交。如果这个时候网络恢复,主机和备机重新建立连接,主备机器会重新回到 PEER 状态;如果双方进入这个状态的原因是主机出现了故障,当在备机上做接管(takeover)操作时,不会发生数据丢失。就是说不会出现主机提交了某个事务,但是备机没有提交这个事务的情况。
Disconnected: 如果主机处于这种状态,表明主机没有收到来自备机的连接。如果备机处于这种状态,表明备机不能连接到主机。