Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Материалы по PostgreSQL, Собираем ресурсы по PostgreSQL 
:(
    Опции темы
belousov
Дата 25.10.2008, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: 1
Всего: 6



Создаю тему, 
здесь собираем найденные ресурсы, ссылки, ссылки на книги и так далее.


Надеюсь на поддержку моей инициативы

Добавлено @ 23:26
Что такое PostgreSQL (материал из Википедии):
PostgreSQL (произносится «Пост-Грес-Кью-Эл» или просто «постгрес») — свободная объектно-реляционная система управления базами данных (СУБД).
Является свободной альтернативой коммерческим СУБД (таким как Oracle Database, Microsoft SQL Server, IBM DB2, Informix и СУБД производства Sybase) вместе с другими свободными СУБД (такими как MySQL и Firebird).
Поддержка стандартов, возможности, особенности
PostgreSQL базируется на языке SQL и поддерживает многие из возможностей стандарта SQL:2003 (ISO/IEC 9075).

На данный момент (версия 8.4.1), 
в PostgreSQL имеются следующие ограничения:
Максимальный размер базы данных    Нет ограничений
Максимальный размер таблицы    32 ТБайт

Максимальный размер записи    1,6 ТБайт
Максимальный размер поля    1 ГБайт

Максимум записей в таблице    Нет ограничений
Максимум полей в таблице    250—1600, в зависимости от типов полей
Максимум индексов в таблице    Нет ограничений

Сильными сторонами PostgreSQL считаются:
•    поддержка БД практически неограниченного размера;
•    мощные и надёжные механизмы транзакций и репликации;
•    наследование.
•    легкая расширяемость.
Главным слабым местом, происходящим из архитектуры самой СУБД, считается масштабируемость: в PostgreSQL имеются общие для всех соединений «узлы».

 Надёжность
Согласно результатам автоматизированного исследования различного ПО на предмет ошибок, в исходном коде PostgreSQL было найдено 20 проблемных мест на 775 000 строк исходного кода (в среднем, одна ошибка на 39 000 строк кода). Для сравнения: MySQL — 97 проблем, одна ошибка на 4 000 строк кода; FreeBSD (целиком) — 306 проблем, одна ошибка на 4 000 строк кода; Linux (только ядро) — 950 проблем, одна ошибка на 10 000 строк кода.


На версию 8.5.* запланировано введение в состав СУБД следующих возможностей:

    * подключения к внешним источникам данных SQL/MED (Management of External Data)
    * доступ только к индексам при некоторых выборках
    * анонимные блоки на любом доступном языке хранимых процедур
    * отложенные ограничения уникальности
    * Более удобоваримый синтаксис для секционированных таблиц
    * Горячий резерв
    * Планы запросов в виде JSON и XML
    * Триггеры, срабатывающие при обновлении определённых колонок таблицы


Более подробно можно прочитать здесь: http://ru.wikipedia.org/wiki/PostgreSQL

Добавлено @ 23:28
Ресурсы:

Официальный сайт: http://www.postgresql.org/
Официальная документация (на английском): http://www.postgresql.org/docs/
Каталог ресурсов PostgreSQL и специализированный поиск по ним http://www.pgsql.ru/db/pgsearch/
 Русский сайт о PostgreSQL http://postgresql.ru.net/
Частично переведенная документация на русском http://postgresql.ru.net/docs.shtml
Поддержка PostgreSQL в России http://postgresmen.ru/
Официальный русский FAQ http://www.postgresql.org/docs/faqs.FAQ_russian.html


Это сообщение отредактировал(а) belousov - 1.12.2009, 15:14


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
belousov
Дата 26.10.2008, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: 1
Всего: 6



Как заставить PostgreSQL работать с 1С

Этот пример установки для Fedora Core 9 32-bit

Скачиваем с сайта 1С rpm пакеты postges.
Перед тем как ставить постгрес инеобходимо поставить следующие библиотеки

libtermcap-2.0.8-47.i386.rpm
readline-compat-4.3-307.i586.rpm
tcl-8.4.17-1.fc8.i386.rpm

Библиотека ICU

32-bit
Первые три в виде rpm пакетов, найти их не составит труда. Ввести в гугле название и первая же ссылка.
Установка библиотек
rpm -ivh --nodeps libtermcap-2.0.8-47.i386.rpm
rpm -ivh readline-compat-4.3-307.i586.rpm
tcl-8.4.17-1.fc8.i386.rpm


64-bit PostgreSQL
Библиотеки 
readline-4.3-5.x86_64
libtermcap-2.0.8-47.x86_64

rpm –ivh --force readline-4.3-5.x86_64
rpm –ivh --nodeps libtermcap-2.0.8-47.x86_64

Далее установка аналогична для обоих вариантов.

Библиотека icu ставиться так:
сначала распаковываем архив, а затем
переходим в папку icu/source
cd icu/source
пишем права
chmod +x runConfigureICU configure install-sh
Конфигурируем
./configure
Компилируем
gmake
и, наконец, инсталлируем
gmake install

Если не поставить эту библиотеку, то информационная база создаваться не будет!! Именно этого я не нашел ни на одном форуме, ни в одной статье!

Если СУБД поставлена до этой библиотеки, то можно ее поставить после, но базу придется инициализировать заново.

Теперь ставим PostgreSQL
Ставим в следующем порядке
rpm -ivh postgresql-libs-8.3.3-2.1C.i386.rpm
rpm -ivh postgresql-8.3.3-2.1C.i386.rpm
rpm -ivh postgresql-server-8.3.3-2.1C.i386.rpm
rpm -ivh postgresql-contrib-8.3.3-2.1C.i386.rpm


Далее инициализируем PostgreSQL командой
su - postgres -c ‘initdb –locale=ru_RU.utf8 -D /var/lib/pgsql/data/’

Отключаем пароли на подключение к PostgresSQL, заменяя в файле /var/lib/pgsql/data/pg_hba.conf строку
host all all 0.0.0.0/0 md5
на
host all all 0.0.0.0/0 trust

Запускаем PostgresSQL
/sbin/service postgresql start

Подключаемся к PostgresSQL
psql -h localhost postgres postgres

меняем пароль пользователя postgres
ALTER USER postgres PASSWORD ‘new_password’;

И выходим
\q

Включаем пароли на подключение к PostgresSQL, заменяя в файле /var/lib/pgsql/data/pg_hba.conf строку
host all all 0.0.0.0/0 trust
на
host all all 0.0.0.0/0 md5

Перезапускаем PostgresSQL
/sbin/service postgresql restart

Собственно на этом все. надо еще посмотреть на счет фаервола в линуксе, т.к. он блокирует доступ.

Отключается он так
/etc/init.d/iptables stop
Базу данных для информационной базы создавать только средствами 1С:Предприятие, т.к. если создавать базу данных средствами PostgreSQL, то база будет не пригодна.

PS: Странная это вещь PostgreSQL и 1С. После того как вы проделаете все вышесказанное и если не заработает, то надо заново переставить библиотеку ICU и снова инициализировать базу. 
После этого база будет запускаться только под пользователем postgres, командой postgres -D /var/lib/pgsql/data
это все странно, но это работает.


Запуск в фоновом режиме 
su –l postgres –c 'pg_ctl start'

Это сообщение отредактировал(а) belousov - 26.12.2008, 16:07


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
belousov
Дата 26.10.2008, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: 1
Всего: 6



Интересное наблюдение.

В постгресе пишется лог баз данных. Что это такое думаю объяснять не надо, туда пишуться транзакции и нужен он для восстановления. 

Но в постгресе он не такой как, например, в mssql - файл базы данных плюс файл лога.

Здесь лог пишется для всего кластера баз данных.

Следовательно, восстановить только одну БД, например, из нескольких не получиться, восстановяться сразу все. Этот случай относится не к краху сервера, а если вы, например, испортили базу. Думаю  это можно назвать откатом.

Так вот, чтобы восстановить (откатить) только одну базу данных нужно, либо восстанавливать весь кластер сервера на другой машине, а оттуда сделать дамп нужной базы и скопировать его.

Либо на сервере устанавливать несколько серверов постгрес и на каждом сервере держать по одной базе. 

Что кому удобнее, решает каждый для себя


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
belousov
Дата 26.10.2008, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: 1
Всего: 6



Настройка Online Backup в PostgreSQL (непрерывное резервное копирование)

Надо ведь ещё и базу сохранять, чтобы можно было восстановить, если вдруг что случится, не дай Бог конечно…

Здесь расскажу как настроить онлайн бэкап или Continuous Archiving как написано в документации.

Есть англоязычная статейка на эту тему Online Backup & Recovery
я расскажу по русски.

Скачиваем отсюда скриптик pg_hotbackup.
Для правильной работы сего скрипта необходимо поставить библиотеки perl-DBI и perl-DBD-Pg

У вас должно работать архивирование WAL.
Как включить архивирование журнала транзакций. 
В файле postgresql.conf установить параметр
archive_mode = on и убрать знак комментария #

В параметр archive_command вписать путь куда будет сохранятся журнал
например, /usr/bin/scp %p /mnt/server/archivedir/%f </dev/null
После этого сервер надо перезапустить. Подробнее здесь

Действия необходимо производить от пользователя postgres
Запускаем скрипт 
pg_hotbackup --backupdir=/var/lib/pgsql/backups --datadir=/var/lib/pgsql/data
где
--backupdir - путь КУДА будет сохраняться дамп.
--datadir - путь ОТКУДА делается дамп

На этом процесс бэкапа заканчивается. После выполнения дампа продолжается архивирование WAL, т.к. с его помощью можно восстановить базу на более позднее время.


Это сообщение отредактировал(а) belousov - 27.10.2008, 16:05


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
belousov
Дата 27.10.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: 1
Всего: 6



Пример файла cron для резервного копирования. Средства описаны выше

Цитата

0 23 * * 1,2,3,4,5 pg_hotbackup --backupdir=/mnt/full --datadir=/var/lib/pgsql/data


Тут написано. что каждые понедельник, вторник, среду, четверг и пятницу в 23:00 весь кластер сервера будет копироваться в --backupdir


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
belousov
Дата 26.12.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: 1
Всего: 6



Восстановление 

ВАЖНО!!!!!!!!!
Восстановление кластера БД откатит все базы данных находящиеся на сервере. Т.е. кроме нужной базы затрутся и не нужные.
Необходимо либо перед восстановлением на рабочем сервере сделать дамп остальных баз через pg_dump 
(su - postgres -c 'pg_dump -Fc имя_базы > имя_базы.dump').
Либо производить восстановление на другом сервере БД и переносить восстановленную базу на рабочий сервер так же через pg_dump.

Так же необходимо учесть, что если рабочий сервер имеет разрядность 64-bit то восстанавливать его нужно тоже на 64-битном сервере.

Имеются файлы бэкапа кластера pg_hotbackup*.tar.gz  и архивы журнала WAL сделанные после архива pg_hotbackup. 

Действия выполнять под пользователем postgres

Остановить сервер postgresql: su – postgres –c ‘pg_ctl stop’

Полностью удалить директорию кластера БД – это папка data по адресу 
/var/lib/pgsql/data

Снова создать директорию кластера. Важно выполнить эти действия от пользователя postgres, чтобы папке были присвоены правильные права.
su – postgres –c ‘mkdir –p /var/lib/pgsql/data’
su – postgres –c ‘mkdir –p /var/lib/pgsql/data/pg_xlog’
su – postgres –c ‘mkdir –p /var/lib/pgsql/data/pg_xlog/archive_status’

Скопировать файл полного бэкапа в папку /var/lib/pgsql/backups

Распаковать файл дампа в директорию кластера, это уже можно выполнить от root.
Переходим в папку кластера сервера cd /var/lib/pgsql/data
Распаковываем
gzip -dc /var/lib/pgsql/backups/pg_hotbackup_20070103_223518.tar.gz |tar xpf –
Эта команда означает, что архив находящийся по адресу /var/lib/pgsql/backups будет расположен в текущую папку, в которой мы находимся, т.е. /var/lib/pgsql/data

Создать в папке кластера (/var/lib/pgsql/data) файл recovery.conf 

В нем записать команду
restore_command=’/usr/bin/scp <recovery data>/%f %p’
Где <recovery data> адрес куда копируется журнал WAL.

Так же можно ввести параметр recovery_target_time и указать время, до какого момента после выполнения дампа восстановить базу. Если этот параметр не указан, то база восстановиться до последнего момента журнала.
Пример.
recovery_target_time = ‘2009-01-16 14:00:00 MSK’

Запустить сервер 
su – postgres –c ‘pg_ctl start’
после запуска сервера необходимо подождать некоторое время пока будет производится восстановление. Этот процесс можно отследить командой ps aux
Если сервер запуститься и восстановление пройдет успешно, файл recovery.conf будет переименован в файл recovery.done.



Это сообщение отредактировал(а) belousov - 1.12.2009, 15:18


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
mihanik
Дата 14.8.2009, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: нет
Всего: 109



Цитата(belousov @  26.10.2008,  00:00 Найти цитируемый пост)
Если не поставить эту библиотеку, то информационная база создаваться не будет!! Именно этого я не нашел ни на одном форуме, ни в одной статье!


Нашёл.

http://v8.1c.ru/overview/postgres_patches_notes.htm

Здесь явно говориться, что ICU нужно ставить...

Причём, я ICU ставил по-другому.

из под рута подал команду

yum install icu

Всё отлично встало и работало.



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
belousov
Дата 14.8.2009, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: 1
Всего: 6



mihanik, ну это хорошо раз заработало. А у меня после компиляции тоже работало вполне нормально.

Между прочим, на сайте у 1С-ников то написано, что она нужна. Но как это все заставить работать у них не написано, а надо бы. 
И я думаю, что это потому, что PgSQL СУБД бесплатная, и поэтому не все так с ней просто. 

Но обсуждение 1С тема другого раздела

Это сообщение отредактировал(а) belousov - 1.12.2009, 15:20


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.1236 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.