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

Post Reply
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2793
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

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

Post by Raven » 05 Oct 2010, 20:33

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

Code: Select all

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

Code: Select all

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
Далее правим конф

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

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

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

Post by Gen1us2k » 07 Oct 2010, 23:27

опаньке... попробую поковырять посгес %)
Image
Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2793
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

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

Post by Raven » 08 Oct 2010, 09:13

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