Если у вас установлен Postgres в конфигурации по умолчанию, то его базы хранятся в Program Files. Если есть необходимость освободить место на системном диске C, то можно перенести базы данных Postgres на другой диск. Общий алгоритм такой (включая linux системы):
- Останавливаем сервис СУБД
- Перемещаем базы
- Меняем конфиг postgres
- Запускаем сервис СУБД
Для Windows системы:
- Заходим в сервисы
Нажимаем WIN+R, и вводим командуservices.mscОтключаем службу, относяющуюся к СУБД, например postgresql-x64-9.6 — PostgreSQL Server 9.6. В свойствах службы можно посмотреть команду запуска.
В сущности необходимо будет поменять параметр после ключа -D
- Заходим в реестр
Нажимаем WIN+R, и вводим командуregeditИщем ветку служб Windows и наш сервис СУБД, например postgresql-x64-9.6 — PostgreSQL Server 9.6
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services - Меняем ключ реестра ImagePath.
Допустим надо указать папку D:\databases\PostgreSQL\9.6. Тогда, вместо
"C:\Program Files\PostgreSQL\9.6\bin\pg_ctl.exe" runservice -N "postgresql-x64-9.6" -D "C:\Program Files\PostgreSQL\9.6\data" -w
прописываем:
"C:\Program Files\PostgreSQL\9.6\bin\pg_ctl.exe" runservice -N "postgresql-x64-9.6" -D "D:\databases\PostgreSQL\9.6" -w
- Копируем/перемещаем базы из старого места в новое
- Запускаем службу
Для linux системы:
- Отключаем службу, относяющуюся к СУБД
/etc/init.d/postgresql stop - В конфигурационном файле /etc/init.d/postgresql меняем содержимое переменной $PGDATA
- Копируем/перемещаем базы из старого места в новое
- Запускаем службу, относяющуюся к СУБД
/etc/init.d/postgresql start
Ссылка по теме:
- How To Move a PostgreSQL Data Directory to a New Location on Ubuntu 16.04
Как заблокировать обновление пакета в Ubuntu?
Иногда необходимо запретить обновление какого-нибудь пакет из нестабильного репозитория. Для этого есть 2 решения: грубое — отключить репозитарий, элегантное — заморозить обновление отдельного пакета.
Команда, чтобы заблокировать обновление пакета:
sudo apt-mark hold имя_пакета
Команда, чтобы разблокировать обновление пакета:
sudo apt-mark unhold имя_пакета
Как обновить npm и пакеты npm ?
Обновление npm через npm + команда для обновления пакета на примере angular cli (глобально).
Опыт установки сертификата Let’s Encrypt на Ubuntu и nginx
Пример установки сертификата Let’s Encrypt для nginx и ubuntu 16.04 с использованием certbot клиента.
Ubuntu 18.04 Punto Switcher
Нормальной замены на Ubuntu нет, есть gxneur, но он кривой(( Пытался пользоваться несколько месяцев. В итоге удалил.
Linux. Команда sed
Команда sed — это потоковый редактор текста. Вставляет/изменяет/добавляет текст не открывая файл визуально. Обычно используется в скриптах.
Open Windows Terminal in current folder
Add setting "startingDirectory": "." in terminal profile CTRL + ,
Migrating the data cluster from C:\ to E:\
I’m new to working with large data in Windows, and ran into some unexpected difficulty when the PostgreSQL database ran out of space on my server’s C drive. It might also be a good idea to isolate your postgres database from a location other than the C:\Program Files\ folder for permissions/security/data integrity reasons (I had a reference for this but I lost it). Here’s how to move your PostgreSQL data directory
Basing myself on this dba.stackex answer and this wiki post
1. Stop the PostgreSQL service
Go to Start > Services. Scroll down to postgresql-x64-9.5 and right-click Stop
2. Copy data
I copied the data with File Explorer from C:\Program Files\PostgreSQL\9.5\data\ to E:\pg_db\data
3. Modify postgresql.conf (probably not necessary if you move everything to the new location)
I edited the following lines
#------------------------------------------------------------------------------
# FILE LOCATIONS
#------------------------------------------------------------------------------
# The default values of these variables are driven from the -D command-line
# option or PGDATA environment variable, represented here as ConfigDir.
data_directory = 'E:\pg_db\data' # use data in another directory
# (change requires restart)
hba_file = 'C:\Program Files\PostgreSQL\9.5\data\pg_hba.conf' # host-based authentication file
# (change requires restart)
ident_file = 'C:\Program Files\PostgreSQL\9.5\data\pg_ident.conf' # ident configuration file
# (change requires restart)
4. Modify the command that starts PostgreSQL
If you Right Click to Properties on the PostgreSQL services in Services, you’ll notice that the startup command is
"C:\Program Files\PostgreSQL\9.5\bin\pg_ctl.exe" runservice -N "postgresql-x64-9.5" -D "C:\Program Files\PostgreSQL\9.5\data" -w
The -D "C:\Program Files\PostgreSQL\9.5\data" flag is indicating that the data directory is C:\Program Files\PostgreSQL\9.5\data
DO NOT EDIT THE REGISTRY
In any case, I didn’t have permission on the server I was using and it seems to be a Bad Idea(tm) see here
Direct registry modification should be avoided (because you can’t be sure what else Windows is changing when it modifies the path to exe, f.e.) unless you are absolutely sure what you do
Start the cmd prompt as an administrator by hitting the Windows button and typing cmd then right-clicking “Run as Administrator”
You can see the current configuration for PostgreSQL by typing sc qc postgresql-x64-9.5 1000 and hitting Enter.
Modify the configuration to the following with the sc command
sc config postgresql-x64-9.5 binPath= "\"C:\Program Files\PostgreSQL\9.5\bin\pg_ctl.exe\" runservice -N \"postgresql-x64-9.5\" -D \"E:\pg_db\data\" -w"
5. Change permissions for the new data directory
For the new data-dictionary folder: Right-click on it and click Properties. Under the Security Tab click “Edit...” and then “Add...”. Type “Network Service” and then click “Check Names”, make sure it has Modify and Full Control permissions and then click OK.
Equally important PostgreSQL needs to be able to “see” the data-directory (see my ServerFault.StackEx question), i.e. it needs to have read access to the parent directories above it. So Right-click on the pg_db folder and under the Security Permissions add Network Services again, but this time it only needs Read & Execute as well as List folder contents permissions.
6. Restart the Service
Go back to the Services window (if it was still open, refresh it) and Start the PostgreSQL service. You should be able to connect to it again in PGAdmin
postgresql
Как мне перенести базу данных PostgreSQL на новый жесткий диск?
Если у Вас PostgreSQL установлен на системном диске C, но вы хотите переместить базы данных на другой раздел или внешний жесткий диск, т.к на диске C мало места, это может быть сделано без переустановки PostgreSQL.
Первым делом, остановите службу PostgreSQL на время переноса.
Windows XP
Пуск > Панель Управления> Администрирование > Службы
Windows Vista/W7
Пуск > Поиск > Службы
Вам нужно, чтобы открылось такое окно:
Щелкните правой кнопкой мыши по службе PostgreSQL и выберите в меню «Стоп» для остановки службы.
Затем создайте на том диске куда вы хотите перенести базу папку Program Files в ней PostgreSQL и в ней data. Должен получиться путь I:/Program Files/PostgreSQL/data
Далее скопируйте или переместите все данные из первоначальной папки c:/program files/PostgreSQL/8.3/data в новую созданную Вами I:/Program Files/PostgreSQL/data. Это может занять много времени.
Редактирование реестра:
Теперь мы должны указать PostgreSQL новую папку расположения данных, а для этого нам нужно внести изменения в реестр
Windows XP
Перейдите Пуск > Выполнить и в текстовом поле наберите команду regedit, нажмите enter, должно открыться следующее окно:
Windows Vista/W7
Перейдите Пуск> Все программы>Стандартные > Выполнить и в текстовом поле наберите команду regedit, нажмите enter, должно открыться следующее окно:
В левой панели откройте папку : HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/pgsql-8.3, см. картинку ниже:
На картинке красной линией обведен ключ, который нужно изменить. Щелкните правой кнопкой мыши по имени ключа и выберите «Изменить», откроется окно со значением ключа:
«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «C:/Program Files/PostgreSQL/8.3/data/»
Теперь Вам нужно изменить только часть, выделенную жирным шрифтом. Вы переместили базу и должны указать PostgreSQL новый путь, именно он и выделен. Нельзя допустить ошибку в пути, поэтому можно сделать так: открыть в проводнике нашу папку /data и кликнуть правой кнопкой мыши по любому файлу и выбрать Свойства, откроется такое окно:
В строке «Размещение» будет написан полный путь к папке, который нужно выделить и скопировать. И после этого вставить его вместо выделенной части ключа в реестре. Старый ключ выглядел так:
«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «C:/Program Files/PostgreSQL/8.3/data/»
Должно получиться так:
«C:/Program Files/PostgreSQL/8.3/bin/pg_ctl.exe» runservice -w -N «pgsql-8.3» -D «I:/Program Files/PostgreSQL/8.3/data/»
Это все. Закройте все окна и перезагрузите компьютер.
Если перенесенная база данных работает нормально можно удалить исходную папку /data на диске C, если Вы не сделали этого раньше.
Join @AdmNtsRu on Telegram
Зная несколько способов переноса базы постгри, расскажу вам об одном — самом простом и понятном. И проверенного на собственном опыте.
1. Отключаем службу постгри. Заходим в Администрирование — Службы. Находим PostgreSQLDatabaseServer, кликаем правой кнопкой мыши, и нажимаем Стоп.
2. Создаём и переносим базу. Выбираем диск, на который вы бы хотели перенести базу. В моём случае диск F. На этом диске создаём папку ProgramFilesPostgreSQLdata. В эту папку копируем содержимое оригинальной папки (которая создавалась по умолчанию при установке PostgreSQL) — C:Program FilesPostgreSQL8.3data. (у меня 8.3., у вас может быть другая версия).
3. Указываем путь к новой папке. Пуск — Выполнить и вводим regedit. Жмём Enter.
В открывшемся окне в папке HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicespostgresql-Х.x находим magePath. Нажимаем правой кнопкой мыши и выбираем Изменить. Откроется ещё одно окно «Изменение строкового параметра». В нем меняем путь к перенесённой базе.
Старый путь должен выглядеть так — «C:Program FilesPostgreSQL8.3binpg_ctl.exe» runservice -w -N «pgsql-8.3» -D «С:Program FilesPostgreSQL8.3data»
«C:Program FilesPostgreSQL8.3binpg_ctl.exe» runservice -w -N «pgsql-8.3» -D «F:Program FilesPostgreSQLdata»
Жмём Ок и перезагружаем компьютер. И, если вы всё сделали правильно, и ХМ2 при запуске находит PostgreSQL, то папку data на диске С можно удалять.
