Hello -
Takatoshi MATSUO did a tremendous job on implementing support for streaming
replication feature in pgsql RA. Also it looks like PostgeSQL 9.1 has all
necessary interfaces to successfully implement Pacemaker's M/S concept. So
I think it's time to start discussion on how to merge Takatoshi's work into
pgsql RA baseline. Here is the link to Takatoshi's GitHUB if somebody wants
to test his RA:
https://github.com/t-matsuo/
So far I tested it for backward compatibility in a standard non-replication
mode and also tested M/S model and found no real issues. Though it
definitely requires some more polishing and testing.
Takatoshi, here are some changes that I want to discuss with you:
1. Is it possible to add a check for PostgreSQL version and fail with
OCF_ERR_INSTALLED when one tries to start replication on version less than
9.1? A simple cat on PG_VERSION with some analysis would probably do.
2. I think that following lines should be moved from pgsql_start to
pgsql_validate_all
535 # Check whether tmpdir is readable by pgdba user
536 if ! runasowner "test -r $OCF_RESKEY_tmpdir"; then
537 ocf_log err "Directory $OCF_RESKEY_tmpdir is not readable by
$OCF_RESKEY_pgdba"
538 return $OCF_ERR_PERM
539 fi
3. I don't really like this part of pgsql_real_monitor:
775 if ! is_replication; then
776 OCF_RESKEY_monitor_sql=`escape_string
"$OCF_RESKEY_monitor_sql"`
777 runasowner -q $loglevel "$OCF_RESKEY_psql $psql_options -c
'$OCF_RESKEY_monitor_sql'"
778 rc=$?
779 else
780 output=`su $OCF_RESKEY_pgdba -c "cd $OCF_RESKEY_pgdata;
$OCF_RESKEY_psql $psql_options -Atc \"${CHECK_MS_SQL}\""`
781 rc=$?
782 fi
I think that functional monitor (the one that uses monitor_sql) should run
always independently of DB mode since its primary role is to check data and
fail if it's not correct or corrupted. In replication mode there should be
additional monitoring. Other way it misleads customer on a usage of
monitor_sql.
4. You already populate several attributes with crm_attribute. Does it make
sense to populate a name of a Master node in promote function and use it
later on instead of running crm_mon on each monitor command?
5. It also requires some changes in terms of a proper English but we can go
through it later.
And yet again thanks for a brilliant work.
Florian, Dejan how would you like to merge a patch when we are ready? The
patch will be rather big one and AFAIK you have some policy on the amount
of changes for one patch.
--
Serge Dubrouski.
Takatoshi MATSUO did a tremendous job on implementing support for streaming
replication feature in pgsql RA. Also it looks like PostgeSQL 9.1 has all
necessary interfaces to successfully implement Pacemaker's M/S concept. So
I think it's time to start discussion on how to merge Takatoshi's work into
pgsql RA baseline. Here is the link to Takatoshi's GitHUB if somebody wants
to test his RA:
https://github.com/t-matsuo/
So far I tested it for backward compatibility in a standard non-replication
mode and also tested M/S model and found no real issues. Though it
definitely requires some more polishing and testing.
Takatoshi, here are some changes that I want to discuss with you:
1. Is it possible to add a check for PostgreSQL version and fail with
OCF_ERR_INSTALLED when one tries to start replication on version less than
9.1? A simple cat on PG_VERSION with some analysis would probably do.
2. I think that following lines should be moved from pgsql_start to
pgsql_validate_all
535 # Check whether tmpdir is readable by pgdba user
536 if ! runasowner "test -r $OCF_RESKEY_tmpdir"; then
537 ocf_log err "Directory $OCF_RESKEY_tmpdir is not readable by
$OCF_RESKEY_pgdba"
538 return $OCF_ERR_PERM
539 fi
3. I don't really like this part of pgsql_real_monitor:
775 if ! is_replication; then
776 OCF_RESKEY_monitor_sql=`escape_string
"$OCF_RESKEY_monitor_sql"`
777 runasowner -q $loglevel "$OCF_RESKEY_psql $psql_options -c
'$OCF_RESKEY_monitor_sql'"
778 rc=$?
779 else
780 output=`su $OCF_RESKEY_pgdba -c "cd $OCF_RESKEY_pgdata;
$OCF_RESKEY_psql $psql_options -Atc \"${CHECK_MS_SQL}\""`
781 rc=$?
782 fi
I think that functional monitor (the one that uses monitor_sql) should run
always independently of DB mode since its primary role is to check data and
fail if it's not correct or corrupted. In replication mode there should be
additional monitoring. Other way it misleads customer on a usage of
monitor_sql.
4. You already populate several attributes with crm_attribute. Does it make
sense to populate a name of a Master node in promote function and use it
later on instead of running crm_mon on each monitor command?
5. It also requires some changes in terms of a proper English but we can go
through it later.
And yet again thanks for a brilliant work.
Florian, Dejan how would you like to merge a patch when we are ready? The
patch will be rather big one and AFAIK you have some policy on the amount
of changes for one patch.
--
Serge Dubrouski.