You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
4.1 KiB
154 lines
4.1 KiB
From c954c6470fe61c73396b45ca75310d146997f81b Mon Sep 17 00:00:00 2001 |
|
From: David Vossel <dvossel@redhat.com> |
|
Date: Wed, 29 Apr 2015 11:16:18 -0500 |
|
Subject: [PATCH 5/6] db2 support |
|
|
|
--- |
|
heartbeat/db2 | 60 +++++++++++++++++++++++++++++++++++++++++++++-------------- |
|
1 file changed, 46 insertions(+), 14 deletions(-) |
|
|
|
diff --git a/heartbeat/db2 b/heartbeat/db2 |
|
index f9db2f8..fed2d86 100755 |
|
--- a/heartbeat/db2 |
|
+++ b/heartbeat/db2 |
|
@@ -132,6 +132,9 @@ END |
|
db2_validate() { |
|
local db2home db2sql db2instance |
|
|
|
+ # db2 uses korn shell |
|
+ check_binary "ksh" |
|
+ |
|
# check required instance vars |
|
if [ -z "$OCF_RESKEY_instance" ] |
|
then |
|
@@ -208,6 +211,14 @@ db2_validate() { |
|
return $OCF_SUCCESS |
|
} |
|
|
|
+master_score() |
|
+{ |
|
+ if ! have_binary "crm_master"; then |
|
+ return |
|
+ fi |
|
+ |
|
+ crm_master $* |
|
+} |
|
|
|
# |
|
# Run the given command as db2 instance user |
|
@@ -380,8 +391,17 @@ db2_check_config_compatibility() { |
|
# |
|
db2_start() { |
|
local output start_cmd db |
|
+ local start_opts="dbpartitionnum $db2node" |
|
+ |
|
+ # If we detect that db partitions are not in use, and no |
|
+ # partition is explicitly specified, activate without |
|
+ # partition information. This allows db2 instances without |
|
+ # partition support to be managed. |
|
+ if [ -z "$OCF_RESKEY_dbpartitionnum" ] && ! [ -a "$db2sql/db2nodes.cfg" ]; then |
|
+ start_opts="" |
|
+ fi |
|
|
|
- if output=$(runasdb2 db2start dbpartitionnum $db2node) |
|
+ if output=$(runasdb2 db2start $start_opts) |
|
then |
|
ocf_log info "DB2 instance $instance($db2node) started: $output" |
|
else |
|
@@ -473,10 +493,15 @@ db2_start() { |
|
# |
|
db2_stop_bg() { |
|
local rc output |
|
+ local stop_opts="dbpartitionnum $db2node" |
|
|
|
rc=$OCF_SUCCESS |
|
|
|
- if output=$(runasdb2 db2stop force dbpartitionnum $db2node) |
|
+ if [ -z "$OCF_RESKEY_dbpartitionnum" ] && ! [ -a "$db2sql/db2nodes.cfg" ]; then |
|
+ stop_opts="" |
|
+ fi |
|
+ |
|
+ if output=$(runasdb2 db2stop force $stop_opts) |
|
then |
|
ocf_log info "DB2 instance $instance($db2node) stopped: $output" |
|
else |
|
@@ -502,13 +527,13 @@ db2_stop() { |
|
local stop_timeout grace_timeout stop_bg_pid i must_kill |
|
|
|
# remove master score |
|
- crm_master -D -l reboot |
|
+ master_score -D -l reboot |
|
|
|
# be very early here in order to avoid stale data |
|
rm -f $STATE_FILE |
|
|
|
- if ! db2_instance_status |
|
- then |
|
+ db2_instance_status |
|
+ if [ $? -eq $OCF_NOT_RUNNING ]; then |
|
ocf_log info "DB2 instance $instance already stopped" |
|
return $OCF_SUCCESS |
|
fi |
|
@@ -585,7 +610,12 @@ db2_instance_status() { |
|
local pscount |
|
|
|
pscount=$(runasdb2 $db2bin/db2nps $db2node | cut -c9- | grep ' db2[^ ]' | wc -l) |
|
- test $pscount -ge 4 |
|
+ if [ $pscount -ge 4 ]; then |
|
+ return $OCF_SUCCESS; |
|
+ elif [ $pscount -ge 1 ]; then |
|
+ return $OCF_GENERIC_ERR |
|
+ fi |
|
+ return $OCF_NOT_RUNNING |
|
} |
|
|
|
# |
|
@@ -626,12 +656,14 @@ db2_hadr_status() { |
|
# |
|
db2_monitor() { |
|
local CMD output hadr db |
|
+ local rc |
|
|
|
- if ! db2_instance_status |
|
- then |
|
+ db2_instance_status |
|
+ rc=$? |
|
+ if [ $rc -ne $OCF_SUCCESS ]; then |
|
# instance is dead remove master score |
|
- crm_master -D -l reboot |
|
- exit $OCF_NOT_RUNNING |
|
+ master_score -D -l reboot |
|
+ exit $rc |
|
fi |
|
|
|
[ $db2node = 0 ] || return 0 |
|
@@ -667,22 +699,22 @@ db2_monitor() { |
|
ocf_log err "DB2 message: $output" |
|
|
|
# dead primary, remove master score |
|
- crm_master -D -l reboot |
|
+ master_score -D -l reboot |
|
return $OCF_ERR_GENERIC |
|
esac |
|
fi |
|
|
|
ocf_log debug "DB2 database $instance($db2node)/$db appears to be working" |
|
- ocf_is_ms && crm_master -v 10000 -l reboot |
|
+ ocf_is_ms && master_score -v 10000 -l reboot |
|
;; |
|
|
|
Standby/*Peer) |
|
- crm_master -v 8000 -l reboot |
|
+ master_score -v 8000 -l reboot |
|
;; |
|
|
|
Standby/*) |
|
ocf_log warn "DB2 database $instance($db2node)/$db in status $hadr can never be promoted" |
|
- crm_master -D -l reboot |
|
+ master_score -D -l reboot |
|
;; |
|
|
|
*) |
|
-- |
|
1.8.4.2 |
|
|
|
|