Так уж повелось с давних времен, что наш сайт работал с использованием MySQL. И всебы ничего, но с переходом с версии 5.1 на 5.5 MySQL начал потреблять очень много памяти. Ковыряние конфига и смена MySQL на MariaDB не сильно решили проблему. Решено было переходить на PostgreSQL (да я знаю о фичастости этого сервера, но на сайте с не очень большой посещаемостью решающим стало именно потребление памяти).
Итак, устанавливаем нужные пакеты, создаем юзера и базу данных, все это 100500 раз описано в интернетах, а вот собственно сам процесс переноса базы думаю вызывает интерес у многих. В интернете можно найти совет создать дамп базы с поддержкой PostgreSQL передав приложению mysqldump параметр —compatible=postgresql. Этот способ не работает, ну по крайней мере не заработал у меня. А получилось перенести базу с помощью скрипта py-mysql2pgsql. Установить его можно с помощью pip :
#pip install py-mysql2pgsql
Потребуется установить dev пакеты для PostgreSQL, MySQL и Python.
Далее нужно создать конфиг с таким содержимым:
## В разделе mysql думаю все понятно mysql: hostname: localhost port: 3306 socket: /var/run/mysqld/mysql.sock username: dbase_user password: dbase_password database: dbase_name compress: false destination: file: ## Здесь можно указать итоговый файл с дампом базы postgres: ## Или указать параметры подключения к серверу PostgreSQL для прямого импорта hostname: localhost port: 5432 username: dbase_user password: dbase_password database: dbase_name ## Тут можно указать какие таблицы конвертировать (по умолчанию - все) #only_tables: #- table1 #- table2 ## Здесь можно исключить таблицы #exclude_tables: #- table3 #- table4 ## Если true, то будет использоваться только структура базы supress_data: false ## Если true, то будут использоваться только данные базы supress_ddl: false ## Не совсем понял зачем это нужно :) force_truncate: false ## Если true, конвертит MySQL дату в UTC+tzinfo timezone: false
Затем запускаем скрипт
py-mysql2pgsql -v -f config_file
После экспорта базы нужно изменить драйвер в конфиге друпала с mysql на pgsql, затем запустить скрипт update.php, пройти процедуру обновления и все, сайт начнет работать уже с сервером PostgreSQL.