Установка/переустановка PostgreSQL

    • vpmarat
      vpmarat
      Модератор
      Модератор
      На форуме с: 22.01.2008 Сообщения: 83.748
      Предупреждение: что бывает с теми, кто невнимательно читал данную статью, можно увидеть здесь (два идущих подряд поста). :P

      Настоящий текст является изложением на русском инструкций с сайта Holdem Manager (далее по тексту — ХМ), которые там лежат на английском и с картинками. Но действия при установке Postgre в связке с PokerTracker практически точно такие же. Ссылки на оригиналы — по ходу дела. Сведения, относящиеся эксклюзивно к ПТ/ХМ, оговорены в тексте особо.

      Сначала немного теории:
      Сама по себе PostgreSQL - просто менеджер баз данных, система управления ими. Она на компе одна. А вот собственно баз данных, которыми она управляет, может быть сколько хочешь: и от ХМ, и от ПТ, и от еще чего, и даже не по одной каждого вида. Причем все они, базы от разных программ - разные. Как ее спроектировали программеры, такая и есть. И базы ПТ отличаются от баз ХМ. Для ХМ1 \ ПТ базы физически расположены в папке Data. Для ХМ2 там - только часть информации, но об этом см FAQ по ХМ2.
      Доступная аналогия: вот есть подъемный кран на стройплощадке. Он менеджирует перемещение и прочие действия со стройматериалами. Это PostgreSQL. А вот что можно построить из тех кирпичей и бетона - дело архитектора. Хоть баню, хоть стадион. А крану все равно, что поднимать.

      Важные замечания
      0. Имеются хорошие видео по установке ХМ и по установке ПТ3. Теперь будет и текст.
      1. Для работы программ покерной статистики требуется установить не только саму эту программу, но также систему управления (менеджер) базами данных PostgreSQL. Это бесплатная система, сделанная по принципу так называемого «открытого кода». (Это значит, что каждый желающий может посмотреть, как она сделана «внутри», если, конечно, знает, куда и как смотреть — в отличие от, скажем, программ Майкрософта).
      1а. Минимальная версия Postgre, с которой работают все вышеупомянутые програмы = 8.3.10. В частности, при установке ХМ прямо в ходе ее скачивается самый свежий установщик 8.4.x с сайта postgres, ПТ3 — вообще без Постгри в дистрибутиве (типа "скачай сам").
      Взять отдельный дистрибутив Postgre можно на сайте Постгри.
      И еще: Posgres версии 9.0 и более свежие полномасштабно для работы с ХМ\ПТ не тестировались. Более того, разработчики ПТ вообще заявили, что 9.1 и 9.2 - не поддерживаются. И, кстати, повышения быстродействия по сравнению с более старыми на обычных компьютерах, которые имеются у пользователей, практически не заметно. Даже так: на 32-битных системах 8.4 быстрее, чем все девятые.
      Кроме того: попытка перейти на другую версию postgres (в варианте "было 8.4 - поставлю 9") автоматически означает создание новой базы данных, потому что базу от старой версии новая не увидит.
      Если вы все же соберетесь (хотя зачем?) поставить postgres 9 - то на 64-битную Виндовс надо ставить именно 64-битную postgres. И брать 9.2 (но не 9.0\9.1\9.3). "Восьмые" версии - все 32-битные.
      2. Оптимально сначала ставить Postgre, а потом уже — ХМ/ПТ.
      3. Для работы базы данных обязательно нужно, чтобы т.н. «кластер базы» располагался на диске с файловой системой NTFS. А собственно программным файлам — это всё равно, их и FAT32 устроит. Если вы планируете «рассредоточить» установку по разным дискам (логическим или физическим), то имейте это в виду. Вин7\8 как раз таковую NTFS и имеет.
      Изменить файловую систему с FAT32 на NTFS достаточно просто штатными средствами Windows (см в конце статьи).
      3а) И, кроме того, postgres не работает на RAID-массивах, ни на каких, только "одиночный" диск.
      4. Если по каким-то причинам предыдущая установка Postgre на компьютере вас не устраивает, инструкция по корректной ее деинсталляции — чуть ниже.
      5. Пользователям Win7\Vista\Win8: Для работы Postgresql и, соответственно, ХМ/ПТ требуется отключить UAC (User Access Control) — инструкция в конце статьи - и запускать программы по правому клику на файл "от администратора". Даже если пользователь Вин7\Висты имеет права админа, этого факта мало. И полностью отключить (а лучше вообще временно деинсталлировать) антивирусы и файерволлы. Потом вернете, соответственно настроив (чтобы разрешали нашим программам работать).
      6. Для корректной установки программ требуется, чтобы пути к папкам, где они (программы и/или данные) будут находиться, не содержали неанглийских символов. И имя компьютера/домена тоже. Если что не так - обязательно переименовать, иначе Posgres не установится.
      6a) И обязательно - имя пользователя Виндовс должно содержать только английские сивмолы (или цифры). Подробности см. ниже.
      7. Перед установкой PostgreSQL нужно запустить службу Secondary Logon (в русской версии "Вторичный вход в систему"), если она еще не запущена. Для этого (в любой версии Виндовс) нужно зайти в Панель управления > Администрирование > Службы, найти в списке нужную службу, правый клик мышью на ней, пункт меню "Свойства". . Тип запуска ставим "Авто", после чего жмем "Запустить".
      8. Установка Postgres на компе — одна, программы покерной статистики пользуются ею каждая сама по себе, и другим не мешают. В принципе, можно даже все их запустить одновременно — вот только не каждый компутер такое выдержит (зато потом может отомстить за издевательство). Базы данных у каждой программы, естественно, свои. И они взаимонепонимаемы — у них и структура разная (таблицы и прочее).
      9. И на закуску: полная история развития программ покерной статистики и "почему именно postgresql" - в этой статье.
  • 10 ответов
    • vpmarat
      vpmarat
      Модератор
      Модератор
      На форуме с: 22.01.2008 Сообщения: 83.748
      Установка PostgreSQL
      Текст на английском здесь
      Далее описан процесс установки версии 8.3.х. Для 8.4 - почти то же самое, но экранов поменьше и управления ими - тоже.
      1. Развернуть скачанный архив (если он был отдельный) в удобное место и запустить файл setup.bat (для версии 8.3). В случае ПТ такого файла нету, запускать надо файл postgresql-8.3.msi из папки ПТ. Для версии 8.4.х - просто запустить установщик.
      2. На первом экране выбрать язык (наверное, русский...), на котором будет вестись установка (и только она, остальные языковые опции — потом) и нажать Старт.
      3. Выполнить просьбу закрыть все работающие программы и нажать Далее
      4. Не читая Заметки о версии, нажать Дальше.
      5. А вот на экране Опции установки как раз можно поуправлять размещением программных файлов (смысла менять дефолтное нету, хотя — решение за вами) и кластера базы данных (папка Data directory). База, кстати, по размерам достаточно быстро увеличивается. И не забыть про NTFS. Подробности про кластер — когда будем обсуждать ПЕРЕустановку.
      6. Также можно установить русский язык интерфейса PGAdmin и хелпа (включить National language support, а потом выставить в программе).
      7. Жмем Далее и видим окно Конфигурация сервера. В верхних полях ничего не меняем (в том числе оставляем имя домена (главное, чтобы оно было нерусское!) и имя юзера ”postgres”), а в поле пароля (и его подтверждения, естественно) вводим по вкусу (можно ставить дефолтный). Это еще не пароль к базам данных, это пароль к сервису, и пользуется им только Винда. В версии 8.4 етого окна нету, там сразу см п. 11.
      Пароль для ХМ по умолчанию = «postgrespass» (без кавычек) — и смысла его менять, вообще говоря, никакого.
      При установке ПТ3 дефолтный пароль В ЕТОЙ ФОРМЕ = «svcpass», но ето они, по-моему, перестарались (см п. 11), и удобнее вводить тот же самый пароль, который будет потом еще в одной форме = dbpass (если потом ставится ПТ).
      Жмем Далее
      8. Если вылезет (редко, но бывает) сообщение об ошибке «account could not be created» (аккаунт не может быть создан), измените Account Name на postgresuser (или holdemmanager, или что захотите, но — запомните). Как правило, такое происходит при предшествовавшем некорректном удалении Постгри.
      9. Дальше выскакивает сообщение типа «...User not found» (юзер не найден) и предложение его создать. Придется согласиться.
      10. А вот потом внимание! Появится сообщение, что «вы придумали слабозащищеный пароль» (weak) и система предложит сгенерировать крутой пароль. Отвечаете решительнным НЕТ! Нас и этот устроит.
      11. Дальше будет окно конфигурирования кластера базы данных. Там нужно выставить следующее:
      Encoding (Server) = Win1251
      Encoding (Client) = Win1251
      Locale = ставим Russian
      И вводим все тот же пароль (из предыдущего экрана) куда следует. Игнорируя (!) сообщение справа от пароля. А вот ето уже пароль доступа к базам данных!
      Еще раз: дефолтный пароль = postgrespass (или dbpass). Который потом надо будет вводить в самом ХМ/ПТ. Причем, если вы планируете иметь на компе несколько программ статистики, то юзер и пароль во всех случаях используются те, какие вы вводили здесь.
      12. На этом же экране есть флаг «инициализировать кластер базы данных». Если вы устанавливаете Postgre в первый раз, то у вас никаких старых данных нету, и флаг надо взвести. А вот если у вас данные есть, и они вам таки нужны, и вы даже помните к ним пароль — флаг снять. Предварительно установив все по п. 11 и указав на предыдущем экране (п. 5) местоположение имеющейся папки Data. Но об этом случае подробнее - ниже.
      11. На всех остальных экранах ничего не менять и жать Далее. По окончании установки появится экран, где надо снять галку ”Launch Stack Builder at Exit” (нам он не нужен) и нажать Финиш.
      12. Если получите ошибку типа access denied, и у вас Виста\вин7\вин8, то вспомите, что UAC должен быть теперь выключеным навсегда. Иначе ни PostgreSQL, ни ХМ/ПТ работать корректно не будут.
      13. В некоторых случаях установка Postgres до конца не доводится с выдачей сообщения об ошибке чтения файла конфигурации (или ошибке инициализации кластера базы данных). Обычно выглядит так:
      "problem running post-install step. installation may not complete correctly.Error reading file F:/Program Files/PostgreSQL/data/postgresql.conf"
      Тогда делаем так:
      13.1. Вариант универсальный:
      деинсталлировать postgres (если она есть в списке установленных программ)
      НЕ удалять пользователя
      Для папки C:\postgresql задать полный доступ (Full access) для пользователя postgres (а еще лучше - для пользователя Everyone, в русской виндовс он зовется "Все" - без кавычек) - как на этих картинках




      английская инструкция здесь
      Запустить установку и указать как цель именно эту папку

      13.2. Вариант для "продвинутых юзеров" (а раз так, то без комментариев, сами разберетесь):
      13.2.а) После неудачной установки не паниковать, а запустить командную строку от имени пользователя postgres. Сделать это можно или так: "Пуск - Выполнить", или так: комбинация клавиш "Win + R".
      В открывшемся окне вводим команду:
      runas /user:postgres cmd
      (внимательно с пробелами и слешем!)
      и нажимаем ОК - откроется еще одно окно командной строки.
      13.2.б) В этом новом система запросит пароль пользователя postgres, который соответственно нужно ввести (тот что указывали при установке, по умолчанию = postgrespass).
      При правильном вводе пароля командная строка должна запуститься от имени postgres, о чем сообщит в заголовке окна.
      Далее в командной строке нужно перейти в каталог "bin" установленной PostgreSQL, например:
      cd C:\PostgreSQL\9.0\bin
      13.2.в) Произвести инициализацию базы данных по такому шаблону:
      initdb -D <Путь к каталогу данных>
      Пример:
      initdb -D C:\PostgreSQL\9.0\data
      (Примечание: папка Data перед этой операцией должна быть абсолютно пуста, что собственно, и имеет место после вышеупомянутой ошибки установки. Если там что-то есть - например, папка для логов - удалить ее).
      13.2.г). Теперь нужно открыть Панель управления - Администрирование - Службы - и запустить службу postgresql. А "на потом" - задать ей тип запуска "автоматически". Службы можно открыть и из Диспетчера задач - так даже быстрее добираться.
      13.2.д) После чего обязательно запустить PGAdmin, соединиться с сервером (попросит пароль - ввести и поставить галку его сохранять), развернуть дерево до уровня баз данных и кликнуть на ту единственную, что там пока есть, с именем postgres. Будет задан вопрос насчет "чего-то не хватает, исправить?" - согласиться.

      14. В некоторых случаях не срабатывает VBS-скрипт инициализации кластера базы данных. Как правило, потому что на компе ранее установлена какая-то программа, которая забрала на себя ассоциацию файлов VBS. Исправляется так:
      запускаем cmd (по правому клику от админа, если вин7 или 8).
      вводим команду
      ASSOC .VBS=VBSFile
      нажимаем Enter - после чего CMD закрываем
      и повторяем установку postresql (сначала деинсталлировав неудачную)
    • vpmarat
      vpmarat
      Модератор
      Модератор
      На форуме с: 22.01.2008 Сообщения: 83.748
      Повторная установка PostgreSQL

      Если возникла (по любой причине) необходимость повторно установить систему управления базами данных PostgreSQL, то в некоторых случаях сначала надо ее правильно удалить имеющуюся через Панель управлания - Программы.
      Папка с данными при этом не удаляется, о чем деинсталлятор сообщит, и путь к ней укажет. Удалять пользователя postgres НЕ надо.
      Дальше — в зависимости от того, есть у вас нужные в дальнейшем данные в базах. Если «все это старьё» вам не нужно — просто удалите вручную папку Data из той папки, где раньше был Постгри (или оттуда, куда вы ее вручную «нестандартно» положили).
      Если есть, и вы не собираетесь ничего менять в расположении файлов на компе — посмотрите вот ето небольшое видео и постарайтесь не ошибиться со вводом паролей.
      Затем просто инсталлируйте Postgre согласно первой части статьи.
      А вот если вам захочется (вполне обоснованно, кстати) теперь держать папку Data не в «стандартном» месте (то есть, как подпапку в собственно папке Постгри), тогда надо немного поработать руками.
      Так вот, дальнейшие действия — есть расширение упомянутого видео (в котором все правильно, толково и понятно изложено, но — частный случай) - до обобщения. Итак:
      0. Если вы собираетесь менять Постгри с 8.3.х на 8.4 (и т.п.), то новая версия старую базу не поймет. И нормальных средств миграции нету - только создание новой пустой базы и импорт в нее историй.
      1. Удаляем имеющуюся Постгри (ссылка выше).
      2. Перемещаем (неудаленную автоматически) папку Data в нужное нам местоположение. Можем даже переименовать по вкусу. Для примера, кладем ее на диск F и (и путь к ней, соответственно, русть будет F:\MyGames\PGData ).
      3. Удаляем из корня етой папки несколько файликов:
      postmaster.opts
      postmaster.pid (если есть)
      и postgresql.bak
      4. А файл postgresql.conf открываем в Блокноте (Notepad) – он текстовый, и находим (недалеко от начала) такой текст (это если вы ничего раньше не меняли, а если меняли, то вы уже всё знаете...)
      code:
      #data_directory = 'ConfigDir' 		# use data in another directory

      вместо етого ConfigDir вписываем наше местоположение папки Data
      'f:/MyGames/PGData'
      Внимание: кавычки (одинарные) должны остаться, а вот слеши надо поставить не те, что мы привыкли, а обратные! И буква диска — в нижнем регистре. А путь — точно так, как он есть. Хотя спокойнее было бы изначально все буквы в том пути задавать в нижнем регистре еще на этапе переименования папки.
      И снимаем «решетку» (символ комментария) в первой позиции строки. Получается
      code:
      data_directory = 'f:/MyGames/PGData'		# use data in another directory

      5. Сохраняем файл в то же место, где он был, и ставим Postgre как описано ранее.
      Но когда дойдем до опции выбора места установки, ставим курсор на строку «База данных» и, нажав кнопку выбора, меняем умолчательное на нужное нам местоположение папки Data.
      6. А на следующем экране сначала вводим пароль (старый) и выставляем все, что указано в пункте 11 первой части статьи. А потом СНИМАЕМ верхний флажок (галку) «Инициализировать кластер базы данных». От какового действия все, что мы видим ниже флага, станет серым и недоступным.
      7. Продолжаем установку. Если вы ставите ту же самую версию Постгри, что у вас и была ранее (а так оно обычно и есть), то появится сообщение, что в той папке, которую вы вручную указали двумя экранами ранее, уже есть какие-то данные, совместимые с Постгри. Собственно, вот мы и получили нужный результат. Доведите установку до конца, запустите программу статистики — и можете ностальгировать, глядя на сыгранные давным-давно руки.
      8. Вообще говоря, если нужно просто передвинуть отдельно взятую папку Data на другой диск, то можно и не сносить Постгри. Но там нужно ковыряться в реестре, а это опасно. Подробнее см в отдельной статье ниже.
    • vpmarat
      vpmarat
      Модератор
      Модератор
      На форуме с: 22.01.2008 Сообщения: 83.748
      Приложение 1. Файловая система диска
      1. Открыть Мой компутер и смотреть свойства диска - там написано, какая у него файловая система.
      2. Чтобы перевести FAT32 в NTFS, надо в окне ДОС («командная строка») написать
      CONVERT D: /FS:NTFS /V
      вместо D поставить букву нужного диска. Внимательно со слешами и пробелами!
      Параметр V означает «верификация» - будет дольше, но спокойнее. Но можно убрать (вместе со слешем).
      и нажать Enter - будет выполнено при следующей перезагрузке (если диск системный), или сразу.
      Вполне безопасно, но придется подождать. Обратно вернуть FAT32 так легко не получится.
    • vpmarat
      vpmarat
      Модератор
      Модератор
      На форуме с: 22.01.2008 Сообщения: 83.748
      Приложение 2. Как отключить UAC
      Вот ссылки на английские инструкции с сайта ХМ. Там, вроде, достаточно понятно, да еще и с картинками.
      Для Вин7 http://faq.holdemmanager.com/questions/30/Turning+Off+UAC+%28Windows+7%29
      Для Висты http://faq.holdemmanager.com/questions/29/Turning+Off+UAC+%28Vista%29
    • vpmarat
      vpmarat
      Модератор
      Модератор
      На форуме с: 22.01.2008 Сообщения: 83.748
      Оригинал пользователя vpmarat
      8. Честно говоря, если нужно просто передвинуть отдельно взятую папку Data на другой диск, то можно и не сносить Постгри. Но там сложнее, есть нюансы и нужно ковыряться в реестре, а ето опасно. Так что — как-нибудь в другой раз.
      Внимание! Эта инструкция касается только ХМ1. Если у вас ХМ2, то помимо всего нижеописанного надо иметь в виду, что есть и другая папка с данными, игнорировать которую нельзя. Подробнее здесь

      Инструкция по переносу папки Data.
      1) Пуск - программы - администрирование - службы. Останавливаем сервис Postgresql.
      2) Папку с базой C:\Program Files\PostgreSQL\8.3\data копируем в нужное нам место, например D:\pgdata
      3) Даем "Полный доступ" на эту новую папку пользователю postgres. Действуя согласно п. 13 здесь.
      4) Пуск - выполнить - Regedit (если виста\вин7\вин8 - обязательно по правому клику от админа)
      Ищем ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pgsql-8.3
      Параметр ImagePath меняем
      c
      "C:\Program Files\PostgreSQL\8.3\bin\pg_ctl.exe" runservice -w -N "pgsql-8.3" -D "D:\Program Files\PostgreSQL\8.3\data\"
      на
      "C:\Program Files\PostgreSQL\8.3\bin\pg_ctl.exe" runservice -w -N "pgsql-8.3" -D "D:\pgdata"
      (или как там у нас новая папка и полный путь к ней называется)
      5) Запускаем сервис Postgres.
      6) Когда убедимся, что все нормально работает, удаляем старую папку data, чем освобождаем место на диске C.

      Предупреждение: Если что-нибудь сделать не так, можно сломать и то, что есть! Людям, не уверенным в своих отношениях с компутерами вообще, с Виндовс, ее реестром и базами данных в частности - настоятельно рекомендуется даже и не пробовать.






      ================================
      Альтернативный способ переноса папки (под WinXP не сработает!):
      - остановить сервис Postgresql (Панель управления - Администрирование - Службы)
      - переместить на другой диск папку
      C:\PostgreSQL\Х.Х\data, а на старом месте создать с ней логическую связь при помощи команды (запускать через Пуск - выполнить)

      mklink.exe /J C:\PostgreSQL\9.0\data\ D:\PostgreSQL\data\

      где (для примера) C:\PostgreSQL\9.0\data\ - старый путь к папке, место где будет связь
      D:\PostgreSQL\data - новое место куда мы переместили папку data.

      - После чего запустить сервис Постгри обратно

      Теперь Постгри будет думать что папка на старом месте.
      Чтобы вернуть все на место, нужно остановить сервер, удалить связь как обычную папку, а потом вернуть папку data на место.

      UPD.
      Почти такой же фокус с линком можно проделать с помощью RAR manager.
    • vpmarat
      vpmarat
      Модератор
      Модератор
      На форуме с: 22.01.2008 Сообщения: 83.748
      если на Вин7\8 или Висту (в том числе 64-разрядные) Postgres с параметрами по умолчанию не ставится, то надо устанавливать ее в специально созданную папку, находящуюся вне папки Programm Files . И дать на
      ту новую папочку все права (см выше).

      И по-любому PosgtresQL на Вин7\8 не установится, если имя юзера компа содержит кириллицу. Надо создать нового юзера с "нормальными" символами в имени, дать ему все права администратора, загрузить комп под ним и установить СУБД. А потом можно вернуться к загрузке под своим виндовым профилем - дальше работать уже будет и в этой конфигурации компа.

      Полный алгоритм для Вин7 здесь

      и вот еще для пользователей Висты и более новых Виндовс, у которых не получается установка Постгри
      PostgreSQL и Vista = геморрой

      и вот еще рецептик
      Win7 и PostgreSQL, не могу установить
    • vpmarat
      vpmarat
      Модератор
      Модератор
      На форуме с: 22.01.2008 Сообщения: 83.748
      Если выдается ошибка
      could not create any TCP/IP sockets

      в окне DOS дать команду
      netsh winsock reset

      после чего перегрузить комп
    • vpmarat
      vpmarat
      Модератор
      Модератор
      На форуме с: 22.01.2008 Сообщения: 83.748
      и вот еще отчет об удачном опыте установки Постгри на 64бит - после первоначальных сообщений об ошибках
    • vpmarat
      vpmarat
      Модератор
      Модератор
      На форуме с: 22.01.2008 Сообщения: 83.748
      Инструкция по миграции с одной версии Postgres на более свежую - см здесь
    • vpmarat
      vpmarat
      Модератор
      Модератор
      На форуме с: 22.01.2008 Сообщения: 83.748
      Если при установке Postgres вылезает ошибка
      An error occurred executing the Microsoft VC++ runtime installer
      (в основном встречается при установке на вин8)

      То делать надо вот что:
      Сначала (для удобства) положить файл установщика postgres в корень диска C

      Запустить Командную строку (CMD) - причем по правому клику "от админа"
      И в ней ввести команду запуска установщика, но добавить к ней после пробела еще параметр
      C:\postgresql-9.1.1-1-windows-x64.exe --install_runtimes 0
      и нажать enter