Простая настройка репликации в PostgreSQL. Postgresql настройка в windows


windows - Настройка Windows PATH для инструментов Postgres

Я не могу получить доступ к PostgreSQL через командную строку в Windows. Хотя я могу создавать и обновлять базы данных, обращаться к ним через PGAdminIII и нажимать на Heroku, я не могу получить к ним доступ напрямую моей командной строки, используя команду psql.

Когда я пытаюсь создать базу данных с помощью команды

$ createdb mydb

как описано в документации PG, я получаю сообщение

createdb: command not found

Документация предполагает, что в этом случае "PostgreSQL не был установлен правильно. Попробуйте вместо этого вызвать команду с абсолютным путем". Разумеется, я могу создать базу данных, введя прямой путь к файлу:

$ c:/postgreSQL/9.1/bin/createdb mydb

Означает ли это, что путь можно перенастроить для правильного подключения? Или мне нужно переустановить? Я переустановил несколько раз и не смог установить правильный путь. В настоящее время у меня есть пути /bin и/lib, добавленные к моим путям системы и пользователя (: Umezo), но по-прежнему не доступны из командной строки.

User variables for umezo variable name: Path variable value: C:\PostgreSQL\9.1\bin; C:\PostgreSQL\9.1\lib System variables variable name: Path variable value: C:\PostgreSQL\9.1\bin; C:\PostgreSQL\9.1\lib

Любая информация или отзывы о том, как я могу исправить мой взнос, будут оценены.

Моя информация такова:

В основном я следил за этими источниками здесь и здесь. Я установил 32-разрядную версию 9.1, потому что некоторые источники предложили проблемы с 64-разрядным.

PG download version: Installer Version 9.1 Win x86-32 Operating System: Windows 7 (64 bit)

pg_hba.conf

#TYPE DATABASE USER CIER-ADDRESS METHOD # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5

postgresql.conf

# - Connection Settings - listen_addresses = '*' port = 5432 max_connections = 100

pg_ident.conf

# *Everything is commented out*

Войти Роль Umezo #from окно свойств в PGAdminIII

Properties/Role name: Umezo Properties/Can login: "check" Role privileges: all categories "check"

qaru.site

Простая настройка репликации в PostgreSQL

Возникла необходимость быстро и как можно проще организовать репликацию данных с сервера БД на резервный сервер. Простой и понятный способ на просторах Сети так и не нашелся, по этому пришлось по частям собрать информацию, которая и стала этой статьёй.

Решаемая задача. Исходные данные

Итак, имеем сервер БД, с которым работают клиенты, и резервный сервер, на который надо настроить репликацию с основной базы данных.В моём случае используется PostgreSQL 9.2.1, который установлен на обоих серверах и поддерживает потоковую репликацию. Предположим что база данных на основном сервере развернута и работает, на резервном только установлен, но не настроен PostgreSQL. Для примера возьмем IP-адрес 192.168.1.1 за адрес основного сервера, IP-адрес 192.168.1.2 — за адрес резервного.

Настраиваем основной сервер БД

В разделе «Роли входа», через PgAdmin создаем пользователя (роль) repl с правами «Может создавать потоковую репликацию и резервные копии». Дописываем в pg_hba или через «Конфигурацию сервера» в PgAdmin создаем строку, разрешающую пользователю repl подключение к БД.

host replication repl 192.168.1.2/32 trust

В файле postgresql.conf сделали следующие изменения:

Первоначальное значение Сменили значение Описание
#max_wal_senders = 1 max_wal_senders = 2 Число резервных серверов, которое может подключится к основному серверу
#wal_keep_segments = 32 wal_keep_segments = 32 (можно поставить 256) Сколько хранить сегментов. Нужно количество надо выбрать такое, чтобы резервный сервер успевал все забирать и обрабатывать. Я поставил 256 чтобы за сутки wal-файлы не затирались
#wal_level = hot_standby wal_level = hot_standby hot_standby добавляет информацию, необходимую для запуска только для чтения запросов на резервный сервер
#checkpoint_segments = 3 checkpoint_segments = 16 Можно увеличить количество сегментов в WAL-логе
Настраиваем резервный сервер

Останавливаем сервис Postgresql 9.2 на резервном сервере и очищаем папку с данными, которые создаются при установке PostgreSQL, например D:database. После этого запускаем бекап из командной строки:

"C:PostgreSQLbinpg_basebackup.exe" --host=192.168.1.1 --port=5432 --username=repl -D "D:database"

Настраиваем postgresql.conf в D:database

Первоначальное значение Сменили значение Описание
#hot_standby = off hot_standby = on Разрешит read-only запросы к СУБД во время процесса восстановления

Настраиваем recovery.conf в D:database

Значение Описание
standby_mode = 'on' Включить режим восстановления и работать как резервный сервер (slave)
primary_conninfo = 'host=192.168.1.1 port=5432 user=repl' Параметры для соединения с основным сервером
trigger_file = 'D:\database\end_trig' Если создадим файл с именем end_trig в указанной папке, то сервер выйдет из режима репликации и станет обычным сервером

Запускаем сервис Postgresql на резервном сервере. Должно стартовать без ошибок. Проверяем работу репликации: производим изменения в таблице на основном сервере, и проверяем — отразились ли они на резервном.

Настройка архивирования логов (если нужно)

В файле postgresql.conf на основном сервере включаем следующее:

archive_mode = on archive_command = 'copy "%p" «e:\Backup\%f»'

В папку e:Backup будут падать архивы логов. (Внимание, они могут забить все место на диске, нужно настроить очистку при переполнении)

Чтобы воспользоваться архивами логов, нужно cкопировать логи в папку из которой будем восстанавливаться и в recovery.conf дописать строчку

restore_command = 'copy "e:\Backup\%f" "%p"'

Действия при сбоях

Если вышел из строя резервный сервер, то останавливаем на нем службу Postgres и выполняем все действия как в пункте «Настраиваем резервный сервер».Если вышел из строя основной сервер, то необходимо перевести резервный сервер в обычный режим работы: для этого необходимо создать файл end_trig в папке как указано в recovery.conf trigger_file = 'D:\database\end_trig' b сделать vacuum и reindex базы.

Примечания

Репликации можно настраивать как с Windows XP на Windows 7, так и наоборот.Для Windows 7 и Wndows XP в pg_hba разные настройки, т.к. в XP нет протокола ip6, то строка с ним должна быть закомментирована.

Автор: RazdoR

Источник

www.pvsm.ru

Создание базы геоданных в PostgreSQL на Windows—Справка

""" Name: create_enterprise_gdb.py Description: Provide connection information to a DBMS instance and create an enterprise geodatabase. Type create_enterprise_gdb.py -h or create_enterprise_gdb.py --help for usage """ # Import system modules import arcpy import os import optparse import sys # Define usage and version parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for " + arcpy.GetInstallInfo()['Version'] ) #Define help and options parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, or POSTGRESQL.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Do not specify for Oracle") parser.add_option ("--auth", dest="Account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Default=DATABASE_AUTH") parser.add_option ("-U", dest="Dbms_admin", type="string", default="", help="DBMS administrator user") parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password") parser.add_option ("--schema", dest="Schema_type", type="choice", choices=['SDE_SCHEMA', 'DBO_SCHEMA'], default="SDE_SCHEMA", help="Schema type applies to geodatabases in SQL Server only. Type SDE_SCHEMA to create geodatabase in SDE schema or type DBO_SCHEMA to create geodatabase in DBO schema. Default=SDE_SCHEMA") parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name; Must always be sde for PostgreSQL, sde-schema geodatabases in SQL Server, and master sde geodatabase in Oracle") parser.add_option ("-p", dest="Gdb_admin_pwd", type="string", default="", help="Geodatabase administrator password") parser.add_option ("-t", dest="Tablespace", type="string", default="", help="Tablespace name; For PostgreSQL, type name of existing tablespace in which to store database. If no tablespace name specified, pg_default is used. For Oracle, type name of existing tablespace, or, if tablespace with specified name does not exist, it will be created and set as the default tablespace for the sde user. If no tablespace name is specified, SDE_TBS tablespace is created and set as sde user default. Tablespace name not supported for SQL Server.") parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file; file created when ArcGIS Server Enterprise authorized, and stored in \\Program Files\ESRI\License<release#>\sysgen on Windows or /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen on Linux") # Check if value entered for option try: (options, args) = parser.parse_args() #Check if no system arguments (options) entered if len(sys.argv) == 1: print("%s: error: %s\n" % (sys.argv[0], "No command options given")) parser.print_help() sys.exit(3) #Usage parameters for spatial database connection database_type = options.Database_type.upper() instance = options.Instance database = options.Database.lower() account_authentication = options.Account_authentication.upper() dbms_admin = options.Dbms_admin dbms_admin_pwd = options.Dbms_admin_pwd schema_type = options.Schema_type.upper() gdb_admin = options.Gdb_admin gdb_admin_pwd = options.Gdb_admin_pwd tablespace = options.Tablespace license = options.Authorization_file if (database_type == "SQLSERVER"): database_type = "SQL_SERVER" if( database_type ==""): print(" \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified.")) parser.print_help() sys.exit(3) if (license == ""): print(" \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")) parser.print_help() sys.exit(3) if(database_type == "SQL_SERVER"): if(schema_type == "SDE_SCHEMA" and gdb_admin.lower() != "sde"): print("\n%s: error: %s\n" % (sys.argv[0], "To create SDE schema on SQL Server, geodatabase administrator must be SDE.")) sys.exit(3) if (schema_type == "DBO_SCHEMA" and gdb_admin != ""): print("\nWarning: %s\n" % ("Ignoring geodatabase administrator specified when creating DBO schema...")) if( account_authentication == "DATABASE_AUTH" and dbms_admin == ""): print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified with database authentication")) sys.exit(3) if( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != ""): print("\nWarning: %s\n" % ("Ignoring DBMS administrator specified when using operating system authentication...")) else: if (schema_type == "DBO_SCHEMA"): print("\nWarning: %s %s, %s\n" % ("Only SDE schema is supported on", database_type, "switching to SDE schema..." )) if( gdb_admin.lower() == ""): print("\n%s: error: %s\n" % (sys.argv[0], "Geodatabase administrator must be specified.")) sys.exit(3) if( gdb_admin.lower() != "sde"): if (database_type == "ORACLE"): print("\nGeodatabase admin user is not SDE, creating user schema geodatabase on Oracle...\n") else: print("\n%s: error: %s for %s.\n" % (sys.argv[0], "Geodatabase administrator must be SDE", database_type)) sys.exit(3) if( dbms_admin == ""): print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!")) sys.exit(3) if (account_authentication == "OPERATING_SYSTEM_AUTH"): print("Warning: %s %s, %s\n" % ("Only database authentication is supported on", database_type, "switching to database authentication..." )) # Get the current product license product_license=arcpy.ProductInfo() # Checks required license level if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print("\n" + product_license + " license found!" + " Creating an enterprise geodatabase requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license.") sys.exit("Re-authorize ArcGIS before creating enterprise geodatabase.") else: print("\n" + product_license + " license available! Continuing to create...") arcpy.AddMessage("+++++++++") try: print("Creating enterprise geodatabase...\n") arcpy.CreateEnterpriseGeodatabase_management(database_platform=database_type,instance_name=instance, database_name=database, account_authentication=account_authentication, database_admin=dbms_admin, database_admin_password=dbms_admin_pwd, sde_schema=schema_type, gdb_admin_name=gdb_admin, gdb_admin_password=gdb_admin_pwd, tablespace_name=tablespace, authorization_file=license) for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) arcpy.AddMessage("+++++++++\n") except: for i in range(arcpy.GetMessageCount()): arcpy.AddReturnMessage(i) #Check if no value entered for option except SystemExit as e: if e.code == 2: parser.usage = "" print("\n") parser.print_help() parser.exit(2)

desktop.arcgis.com