такие два варианта есть у нас в avito
1) в лоб, такая штука
-- Function: system_uname()
-- DROP FUNCTION system_uname();
CREATE OR REPLACE FUNCTION system_uname()
RETURNS text AS
$BODY$
use POSIX;
( $kernel, $hostname, $release, $version, $hardware ) = uname();
return $kernel .' '. $hostname .' '. $release .' '. $version .' '. $hardware;
$BODY$
LANGUAGE plperlu VOLATILE
COST 100;
ALTER FUNCTION system_uname()
OWNER TO postgres;
2) хитро. конфиг каждой "ноды" закначивается строкой
include_if_exists 'localvars.conf'
а контент файла localvars.conf в момент деплоя поддерживается через
Puppetа там типа того
# current node server name
xdb.server = 'xdb-node01'
.
ну и далее имеем функцию
CREATE FUNCTION xdb_name() RETURNS text
LANGUAGE sql
AS $$
select format('%s %s', current_setting('xdb.server'), current_database());
$$;
как-то так
Суббота, 21 сентября 2013, 23:40 +10:00 от Andrew Boag <red@red.geek.nz>:
привет всем
Мы имеем опыть работы со всякими подходами в плане PostgreSQL
репликации: slony/DRBD/log shipping , и "встроенный" в 9ой версей где
можно иметь "read only slave" (то, чего мы ждали)
Все замечательно ... но теперь мы ищем способ определить (через SQL
запрос) "какой у сервера hostname?" или "какой у сервера IP address?"
скорее всего можно писать stored procedure? типа:
SELECT get_hostname();
- RETURN: "pg1.example.com"
или
SELECT get_ip_address();
- RETURN: "123.123.123.123"
У кого-нибудь есть опыть или предложение?
спасибо заране
--
Sent via pgsql-ru-general mailing list (pgsql-ru-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-ru-general--
Миша Тюрин