Thread: как узнать hostname?
привет всем Мы имеем опыть работы со всякими подходами в плане 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" У кого-нибудь есть опыть или предложение? спасибо заране
On 21.09.2013 17:40, Andrew Boag wrote: > Все замечательно ... но теперь мы ищем способ определить (через SQL > запрос) "какой у сервера hostname?" или "какой у сервера IP address?" inet_server_addr() - оно?
такие два варианта есть у нас в 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>:
--
Миша Тюрин
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
Мы имеем опыть работы со всякими подходами в плане 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
--
Миша Тюрин
23 сентября 2013 г., 21:57 пользователь Миша Тюрин <tmihail@bk.ru> написал:
такие два варианта есть у нас в 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
Миша Тюрин