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

Ответить
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

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

Сообщение Raven » 05 окт 2010, 20:33

Одна из обычных админских задач - работа с базами данных, даже иногда отдельными серверами баз, и ни для кого не секрет что на некоторых ресурсах базы растут как снежный ком - не успеваешь оптимизировать. Самая распространенная СУБД - 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

Теперь осталось немного разобраться с сценариями работающими с базой. Но это уже другая история... :)
Я не злопамятный, я просто часто ковыряю логи
Аватара пользователя
Gen1us2k
Модератор
Модератор
Сообщения: 771
Зарегистрирован: 02 мар 2010, 16:13

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

Сообщение Gen1us2k » 07 окт 2010, 23:27

опаньке... попробую поковырять посгес %)
Изображение
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

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

Сообщение Raven » 08 окт 2010, 09:13

Ну кагбЭ стоит добавить, что особо заметного прироста в скорости я так и не добился, хотя шушуть есть. %)
Я не злопамятный, я просто часто ковыряю логи
Ответить

Вернуться в «PostgreSQL»