Синхронизация БД с локальным компьютером - возможно?

SN
На сайте с 04.07.2013
Offline
84
928

Есть сайт на хостинге.

Есть его полная копия на локальном ноутбуке (скрипты + база данных)

Возможно ли следующее:

Я на своем ноутбуке без подключения к интернету добавляю и редактирую статьи через админку. То есть они добавляются в локальную базу данных на моем ноуте.

При подключении к интернету у меня появляется возможность синхронизировать мою локальную базу с удаленной, т.е. я хочу чтобы все мои новые статьи и изменения были отправлены на сервак (например при нажатии на определенную кнопку или при вводе команды в консоли).

Если я редактировал на серваке должна быть возможность закачать изменения на локальный ноут, и продолжить редактирование уже на локальном.

Что то вроде git, только для баз данных. Возможно такое? Подозреваю что возможно, но как это называется?

PA
На сайте с 12.02.2016
Offline
24
#1
SeoNk:
Что то вроде git, только для баз данных. Возможно такое? Подозреваю что возможно, но как это называется?

К сожалению - печаль. Будет лучше оставить эту идею в покое. Потом замучиетесь разгребать уникальные ID, различные связи на основе ID и т.д.

Да, можно состряпать велосипед, типа: на ноуте использовать ID+1000 а лучше отдельную табличку для офлайн статей и при соединении отправлять их на сервер. После успешной отправки вытирать(или маркировать как "отправленные") их на ноуте. Затем с сервера забирать эти же статьи(а также новые, которые созданы на сервере) назад уже с правильными ID и прочими причиндалами.

Все на самописе, mysql репликация - не вариант.

. . .
N
На сайте с 06.05.2007
Offline
419
#2

Допустим, бесплатный dbforge studio это делает https://www.devart.com/ru/dbforge/mysql/studio/database-synchronization.html

Но со связями и конфликтами действительно проблема большая может случиться. Если взять за правило всегда перед уходом в офлайн обновлять локальную базу и вносить изменения только в одном месте, то может и нормально заработает.

Вы пробуйте.

Кнопка вызова админа ()
Andreyka
На сайте с 19.02.2005
Offline
822
#3

Вполне можно.

Нужно приложение, которое сохраняет у себя статьи, а при подключении - постит их.

Например - Зеброид.

Не стоит плодить сущности без необходимости
AP
На сайте с 12.06.2015
Offline
75
#4

Можно самому написать примерно так:

1. При добавлении статьи она получает уникальный идентификатор (хэш), который генерируется случайным образом (к примеру 50 букво-цифр). При этом неважно, на локальный компьютер она добавляется или на сервер.

2. При синхронизации программа проверяет все уникальные ключи на удаленном сервере и сверяет их с локальным компьютером. Те статьи, которые отсутствуют в базе, забирает себе в базу. После этого полностью переписывает локальную базу на удаленный сервер (там уже будут статьи с сервера и локально добавленные статьи).

При такой последовательности можно хоть одновременно добавлять разные статьи на локальный компьютер или сервер, при синхронизации ничего не потеряется.

Andreyka
На сайте с 19.02.2005
Offline
822
#5

Ну, если писать код самому, так можно сделать вообще реплики на запись. Для этого уникальный ключ в любой таблице будет составным из номера реплики и уникального значения.

Просто вливается sql дамп и вуаля!

SeoEscander
На сайте с 29.05.2009
Offline
89
#6

+1 за dbforge, сам его использую для таких целей (но я на продакшен вообще ничего не добавляю, всё только через локальную базу), синхронизация в полуавтоматическом режиме

Разработка и сопровождение Java-проектов - 20$/час Контакторы (https://electrocontrol.com.ua/kontaktory), конденсаторы компенсации реактивной мощности (https://electrocontrol.com.ua/kondensatory), укм 0.4 (https://electrocontrol.com.ua/elektroshhitovoe-oborudovanie/kondensatornye-ustanovki-aku-04) Каталог продуктов и еды (http://edanavi.ru/)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий