Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33

Синхронизация двух SQL баз

20.04.2016, 20:30. Показов 3797. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть SQL база расположена локально дабы зитон писал в нее все что нужно без задержек и ожиданий. И есть SQL база на WEB сервере которая используется для отображения результата работы.
Сеть временами ложится и по сему передавать в реальном времен и данные на WEB не представляется возможным.
Как правильно синхронизировать базы данные чтоб при поднятии сети база начинала синхронизироваться?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2016, 20:30
Ответы с готовыми решениями:

Выведите на экран элементы двух баз данных
color_name = color_number =

Синхронизация двух баз
Здравствуйте! Вопрос собственно не по программированию 1С, а по её работе. Ситуация такая: в точке А сидят манагеры, в точке Б - склад. Раз...

Синхронизация двух баз Firebird
Добрый день. Есть два локальных рабочих места, совершенно идентичных. Соответственно, на каждом по серверу Firebird (2.0) и по рабочей...

17
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
21.04.2016, 07:28
По таймеру?
0
 Аватар для Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
21.04.2016, 13:20  [ТС]
В обычном режиме в базу 1 пишутся данные, а в базу 2 они должны дублироваться автоматически (Синхронизироваться). А если сеть ляжет, пропадет или выключится ПК с базой 2 то База 1 продолжит работу и будет писаться. Но вот появилась сеть или включили ПО с Базой 2. Нужно теперь СИНХРОНИЗИРОВАТЬ их чтоб база 2 дополнилась теми записями данных что в ней нет. По итогу обе базы должны быть идентичны.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
21.04.2016, 13:43
Слишком в общем задачу ставите.
0
 Аватар для Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
21.04.2016, 13:54  [ТС]
какой конкретики вы хотите? IP имена баз и таблиц? могу, вопрос какими средствами синхронизировать? по локальной сети!! Как я и писал есть два ПК на каждом из них база нужно чтоб базы после тго как сеть заработает стали идентичными САМИ!
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
21.04.2016, 14:20
rsync по крону?
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
21.04.2016, 14:29
Sovuschka, а от нас вы что хотите?
Ну, как-то так:
Python
1
2
3
4
5
6
7
8
try:
    сконнектиться с БД2
    как-то получить индексы данных, которые есть тут, в БД1, но нет в БД2
    начать транзакцию с БД2
    передать туда нужные данные, записать
    закончить транзакцию
except:
    print ("Epic fail")
По каждой подзадаче тут возможна куча вариантов, + завязка на вашу конкретную ситуацию.
1
 Аватар для Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
21.04.2016, 22:53  [ТС]
Спасибо за описание алгоритма, на мне бs хотелось хоть каких то вариантов, или один из них..
данные - база данных MySQL с именем DATADB1 с таблицей testtable1 c колонками (id (primary key), firstcol (char), secondcol(char), tridcol(INT)) , login=datadb pass=dat22 IP=192.168.1.1 База вторая расположена по адресу IP=192.168.1.110 с именем DATADB2 с таблицей testtable2 c колонками (id (primary key), firstcol (char), secondcol(char), tridcol(INT)) , login=datadb2 pass=dat33.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
22.04.2016, 07:03
Во-первых, этот процесс называется репликация. Советую поискать готовые инструменты.

Если на найдёте - то начинается во-вторых.
По поводу получения индексов, которые есть в БД1, но нет в БД2.
Я бы сделал у каждой записи в БД1 поле, синхронизирована она или нет.

SQL
1
2
3
SELECT * FROM DB1 WHERE synchronized=FALSE
ВСТАВКА ЭТИ ЗАПИСЕЙ В БД2
UPDATE DB1, SET synchronized=TRUE
То есть каждый раз, когда реплицируем, записи помечаем.

Как конкретно - не скажу, я в SQL давно последний раз работал и уже почти всё забыл.
1
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
22.04.2016, 12:50
Наверняка должен существовать инструмент самой БД позволяющий делать синхронизацию/репликацию.
Опять же вопрос записи изменяются или только добавляются?
0
 Аватар для Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
22.04.2016, 19:53  [ТС]
Записи только добавляются
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
23.04.2016, 14:06
Тогда условием синхронизации можно делать количество записей в базе.
0
 Аватар для Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
23.04.2016, 22:06  [ТС]
Цитата Сообщение от Marinero Посмотреть сообщение
Тогда условием синхронизации можно делать количество записей в базе.
В общем это логично но вопрос каким инструментом воспользоваться?
Если получить последнюю запись в таблице я понимаю как
Python
1
2
3
cursor.execute("select * from testtable order by id desc limit 1")
data = cursor.fetchall()
print data
то как получить, а тем патче изменить запись с ID "таким то"?
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
25.04.2016, 09:06
Цитата Сообщение от Sovuschka Посмотреть сообщение
Если получить последнюю запись в таблице я понимаю как
Число записей - штука ненадёжная. Но её получают функцией COUNT.
0
 Аватар для Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
27.04.2016, 17:41  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Число записей - штука ненадёжная..
ID всегда уникален и он есть, значит и запись с этим ID нужно вытянуть.
Цитата Сообщение от dondublon Посмотреть сообщение
Но её получают функцией COUNT.
А пример можно? или ссылку на онный?
0
35 / 32 / 16
Регистрация: 21.01.2014
Сообщений: 102
27.04.2016, 21:16
Цитата Сообщение от Sovuschka Посмотреть сообщение
А пример можно? или ссылку на онный?
Оно?
SQL
1
SELECT COUNT(*) FROM TABLE_NAME;
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
28.04.2016, 07:39
Цитата Сообщение от Sovuschka Посмотреть сообщение
ID всегда уникален и он есть, значит и запись с этим ID нужно вытянуть.
Если б дело было только в ID.

Вы возлагаете на другую базу, БД2, функцию по предоставлению вам информации, какие записи синхронизировались, а какие - нет.
В случае, если записи начнут удаляться - вся ваша логика пойдёт прахом. И не надо мне говорить, что "не начнут". Во-первых, всяко может быть, а во-вторых, если вы вдруг таки захотите их удалять - то уже не сможете, окажетесь связаны логикой.
0
 Аватар для Sovuschka
0 / 0 / 1
Регистрация: 06.08.2013
Сообщений: 33
28.04.2016, 19:54  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Если б дело было только в ID.
Вы возлагаете на другую базу, БД2, функцию по предоставлению вам информации, какие записи синхронизировались, а какие - нет.
В случае, если записи начнут удаляться - вся ваша логика пойдёт прахом. И не надо мне говорить, что "не начнут". Во-первых, всяко может быть, а во-вторых, если вы вдруг таки захотите их удалять - то уже не сможете, окажетесь связаны логикой.
Такой сценарий возможен, но пока задача стоит обратная.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2016, 19:54
Помогаю со студенческими работами здесь

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

Синхронизация баз данных access на двух ПК
Здравствуйте. У меня есть задание синхронизировать базу данных (access), установленную на 2х ПК, находящихся в локальной сети. обмен...

Синхронизация двух идентичных баз данных на Access
Есть клиент к базе данных на access, организовано все через adoquery. Нужно сделать возможность синхронизации БД в программе с внешним...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru