|
|
|
Перенос таблиц из одной БД в другую в режиме бесперебойной работы
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вот проникся вопросом. Есть сервер на котором была одна БД, потом решили перенести некоторые таблицы из неё в отдельную БД. Дампы не подходят, так как в таблицу постоянно чтото пишется и останавливать работу нельзя (продакшн). Каким образом можно это сделать? Я думал о копи или селект-инсерт, но может не в ту степь иду, так как не гуру в постгресе. ОС: RHEL 6 PostgreSQL: 9.3.1 Посоветуйте что-нибудь дельное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 19:11:13 |
|
||
|
Перенос таблиц из одной БД в другую в режиме бесперебойной работы
|
|||
|---|---|---|---|
|
#18+
Ах да, еще такой ньюанс. Нужно будет сервис переключать на новую БД. Так вот как это сделать чтоб не возникло коллизий между переносом и новых инсертов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 19:14:06 |
|
||
|
Перенос таблиц из одной БД в другую в режиме бесперебойной работы
|
|||
|---|---|---|---|
|
#18+
Непонятный вопрос. Если только некоторые таблицы переносятся, то как можно перенести сервисы? 'Отдельная БД' - это отдельная база на том же сервере, или новый кластер на другом сервере? Скорее всего вам надо почитать про репликацию, но с вашими требованиями о бесперебойной работе и незнанием Постгреса я бы вам глубоко рекомендовал заплатить денег людям, которые Постгрес знают, и сделают все, как надо. Заодно у них поучитесь. Лучшего совета у меня для вас нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 19:40:54 |
|
||
|
Перенос таблиц из одной БД в другую в режиме бесперебойной работы
|
|||
|---|---|---|---|
|
#18+
Sergei.AgalakovНепонятный вопрос. Если только некоторые таблицы переносятся, то как можно перенести сервисы?. Несколько сервисов работают с разными таблицами, так вот несколько таблиц надо перенести в отдельную бд и соответствующий сервис переключить на эту бд. Sergei.Agalakov'Отдельная БД' - это отдельная база на том же сервере, или новый кластер на другом сервере? На том же сервере. Sergei.AgalakovСкорее всего вам надо почитать про репликацию А разве можно делать репликацию между двумя бд на одном сервере? Просто мануалы и примеры которые я находил и делал - это потоковая репликация между разными серверами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 19:45:41 |
|
||
|
Перенос таблиц из одной БД в другую в режиме бесперебойной работы
|
|||
|---|---|---|---|
|
#18+
RyuzakiДобрый день. Вот проникся вопросом. Есть сервер на котором была одна БД, потом решили перенести некоторые таблицы из неё в отдельную БД. <>а зачем ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 20:01:09 |
|
||
|
Перенос таблиц из одной БД в другую в режиме бесперебойной работы
|
|||
|---|---|---|---|
|
#18+
эттаа зачем ? Для упрощения выставлений. Мешают таблички в этой бд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 11:38:53 |
|
||
|
Перенос таблиц из одной БД в другую в режиме бесперебойной работы
|
|||
|---|---|---|---|
|
#18+
Ryuzakiэттаа зачем ? Для упрощения выставлений. Мешают таблички в этой бд. ? -- я пока вижу один случай -- отсутствие возможности задать для advisory_lock своё, отдельное именное пространство. при этом я пока не проверял, что advisory лочит ресурс[ы] на уровне датабазы, а не всего инстанса. но собираюсь проверить. [проверил --pg_try_advisory_lock лочит на уровне БД.] Но и тут мне не нужно будет выносить таблички. мне нужно выносить вызов pg_advisory_lock-ов в отдельное соединение) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 13:15:16 |
|
||
|
Перенос таблиц из одной БД в другую в режиме бесперебойной работы
|
|||
|---|---|---|---|
|
#18+
Ryuzaki, если я правильно вас понял, то для репликции одной таблицы можно воспользоваться, например, Londiste из SkyTools. насчет прозрачно переключить на новую бд, то тут предлагаю воспользоваться PgBouncer (если он подойет, конечно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 17:42:03 |
|
||
|
Перенос таблиц из одной БД в другую в режиме бесперебойной работы
|
|||
|---|---|---|---|
|
#18+
nmkRyuzaki, если я правильно вас понял, то для репликции одной таблицы можно воспользоваться, например, Londiste из SkyTools. насчет прозрачно переключить на новую бд, то тут предлагаю воспользоваться PgBouncer (если он подойет, конечно). любая асинхронная репликация (хоть готовая, хоть самописная) имеет лаги. 1:1 не гарантирован ничем. Можно сделать " синхронную репликацию последних событий" -- самописными триггерами (с кладкой данных в "slave" через dblink). Зазор между стартом событийной репликации и исходными данными закрыть с помощю 1. COPY (до старта) . -- 2. далее стартовать триггера. --3. а вот чем исчислить/заполнить лаг между 1 и 2 -- вопрос. самое главное -не понятно, зачем такой геморрой, и скорее всего он и не нужен. (т.е .это просто блажь) да и переключение "мастера" без потерь - не факт что возможно будет придумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 18:24:12 |
|
||
|
Перенос таблиц из одной БД в другую в режиме бесперебойной работы
|
|||
|---|---|---|---|
|
#18+
qwwqлюбая асинхронная репликация (хоть готовая, хоть самописная) имеет лаги. 1:1 не гарантирован ничем. про лаги я забыл совсем, но сам воркфлоу я подразумевал как 1. включить londiste 2. дождаться начальной синхронизации 3. сделать pause в pgbouncer 4. подождать когда реплика догонит (пустая очередь в pgq) 5. пустить нагрузку на новый сервер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 22:05:33 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38709975&tid=1998552]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
261ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 185ms |
| total: | 505ms |

| 0 / 0 |
