Страница 1 из 1

Перенос данных c MySQL на PostgreSQL

Добавлено: 05 окт 2010, 20:33
Raven
Одна из обычных админских задач - работа с базами данных, даже иногда отдельными серверами баз, и ни для кого не секрет что на некоторых ресурсах базы растут как снежный ком - не успеваешь оптимизировать. Самая распространенная СУБД - MySQL, кокой бы хорошей не была, все же довольно ограничена в перспективах роста, да и с увеличением размера базы начинает довольно тяжело поворачиваться. Ну и случилось у меня так, что размер базы превысил 30 Гб, муська начала понемногу тормозить... Снимать устаревшие таблицы в дамп и удалять их из базы мне не позволило руководство по ряду обьективных причин. Пришлось искать решение иного характера - а именно перенос данных на другую СУБД. MSSQL-сервер отбросил сразу же по причине его несостоятельности, неопенсорсности, в общем по причине кровной его связи с мелкомягкими, а то что ими порождено надежным быть не может в принципе. Oracle... Ну тут даже ежу понятно - не дорос я еще до нее, ибо "Админ имеющий сертификат Oracle способен уьивать пользователей простым пингом". Я до такого еще не дорос, да и достать Oracle у нас нереально. Вот тут то и дошли руки до PgSQL. Давно ее хотел опробовать, вот и случай подвернулся. Процесс установки и первичной настройки описывать не буду, процесс потабличного создания дампов тоже, ибо долго это. Опишу лишь сам процесс переноса, главное - дампы с базы надо снимать с флагом совместимости с PgSQL.

Код: Выделить всё

mysqldump --compatible=postgresql databasename > dump.sql
Итак, по сценарию ниже создаем в PostgreSQL пользователя и базу, права на которую присваиваем пользователю.

Код: Выделить всё

su - postgres
createdb test
psql test
create user username password ' password ';
alter role username password ' password ';
create database databasename with encoding 'utf8';
grant all privileges on database databasename to username;
 \l
\c databasename
\q
Далее правим конф

Код: Выделить всё

mcedit /etc/postgresql/pg_hba.conf
Разрешаем парольный доступ с любых хостов (не забудьте потом прикрыться иптраблами)

Код: Выделить всё

host    all         all         0.0.0.0           0.0.0.0            password
И перезапускаемся

Код: Выделить всё

/etc/init.d/postgresql restart
Приводим дампы к подобающему виду:

Код: Выделить всё

sed "s/\\\'/\'\'/g" dump.sql
И загоняем в PgSQL
psql -h server -d databasename -U username -W < dump.sql

Теперь осталось немного разобраться с сценариями работающими с базой. Но это уже другая история... :)

Re: Перенос данных c MySQL на PostgreSQL

Добавлено: 07 окт 2010, 23:27
Gen1us2k
опаньке... попробую поковырять посгес %)

Re: Перенос данных c MySQL на PostgreSQL

Добавлено: 08 окт 2010, 09:13
Raven
Ну кагбЭ стоит добавить, что особо заметного прироста в скорости я так и не добился, хотя шушуть есть. %)