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.
155 lines
4.1 KiB
155 lines
4.1 KiB
7 years ago
|
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
|
||
|
|