pip install "psycopg[binary]"

Перенос из MariaDB/MySQL в postgres:

  1. Средствами jango:
    python manage.py dumpdata --natural-primary --natural-foreign --indent 2 > data.json
    createdb имя_базы
    python manage.py migrate
    python manage.py loaddata data.json
  2. Средствами pgloader (https://github.com/dimitri/pgloader.git):
    pgloader mysql://user:pass@localhost/old_db postgresql://user:pass@localhost/new_db


Основные параметры (для сервера с 8 ГБ RAM):

  1. 1.Общие настройки памяти
    shared_buffers = 2GB        # 25–30% от RAM, место для кеша страниц
    work_mem = 64MB             # память на сортировки/джойны (на каждую операцию!)
    maintenance_work_mem = 512MB # для VACUUM, CREATE INDEX и т.п.
    effective_cache_size = 6GB  # "предполагаемый" размер дискового кеша ОС
  2. WAL и контроль записи
    wal_buffers = 16MB
    checkpoint_completion_target = 0.9
  3. Автовакуум
    autovacuum = on
    autovacuum_max_workers = 3
    autovacuum_naptime = 30s
  4. Коннекты
    max_connections = 100
  5. Дополнительно (для больших выборок)
    random_page_cost = 1.1
    seq_page_cost = 1.0

Загрузка дампа

PGPATH=/usr/bin/psql
PGDBHOST=localhost
PGDB=db
PGUSER=user
PGPASS=pass
PGPORT=5432

# чтобы пароль не спрашивало — используем PGPASSWORD
export PGPASSWORD=${PGPASS}

MYPG="${PGPATH} -h ${PGDBHOST} -U ${PGUSER} -d ${PGDB} -p ${PGPORT}"

${MYPG} < my.sql

Пример создания суперпользователя

createuser backup_user --pwprompt --superuser -h localhost -p 65432