Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2015, 08:46   #1
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
Вопрос Бэкап БД после каждого изменения (INSERT, UPDАTE)

Возможно ли как-то реализовать автоматический бэкап БД после каждой команды INSERT, UPDАTE (данные операции выполняются не часто, так что насчет нагрузки можно не волноваться)?? Резервные копии делаются каждый день, но все же после сбоя работы системы не все изменения могут попасть в сам бэкап. Хотелось бы избежать потерь данных в таких ситуациях.

Сама программка простая (работа с пациентами), с БД работают параллельно 2 человека. Сначала возникла мысль по поводу триггеров, но они вроде как не работают в этом плане (или я просто не нашел). Есть варианты?

П.С. Сама прога реализована на механизме ADO в среде Delphi 7
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo

Последний раз редактировалось regman; 27.08.2015 в 08:49.
regman вне форума Ответить с цитированием
Старый 27.08.2015, 08:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Бэкап в реальном режиме времени это - Репликация.
Почитай в мануалах твоей СУБД может ли репликацию она делать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2015, 09:01   #3
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Бэкап в реальном режиме времени это - Репликация.
Почитай в мануалах твоей СУБД может ли репликацию она делать.
репликацию делать некуда. Программка весьма проста чтобы запускать на втором ПК еще один сервер и делать репликацию. Да и клиент хочет сам уметь в случае переустановки винды настроить прогу (установка сервера, импорт бэкапа последнего) по инструкции. Если сюда еще репликацию приделать - то вряд ли он справиться.
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo

Последний раз редактировалось regman; 27.08.2015 в 09:11.
regman вне форума Ответить с цитированием
Старый 27.08.2015, 09:49   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
INSERT, UPDАTE (данные операции выполняются не часто,
Цитата:
Хотелось бы избежать потерь данных в таких ситуациях.
так что потери от дневного сбоя будут невелики?

требование постоянного копирования это требования очень "осторожного" заказчика ?
может сделать проще ?
ДАТЬ пользователю возможность САМОМУ запускать процедуру копирования (backup) в любое удобное и(ли) интересующее его время.
СДЕЛАТЬ "кнопку" РЕЗЕРВНОЕ КОПИРОВАНИЕ. а на триггер можно будет повесить "активацию" данной кнопки. чтобы напомнить забывчивому человеку о том что в БД есть НЕ скопированные изменения

и конечно это не должно заменять копирование по расписанию!!! Человеки они такие, вечно все забывают, даже если им будут постоянно об этом напоминать.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 27.08.2015 в 10:05.
evg_m вне форума Ответить с цитированием
Старый 27.08.2015, 09:56   #5
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
так что потери от дневного сбоя будут невелики?

может сделать проще ?
ДАТЬ пользователю возможность САМОМУ запускать процедуру копирования (backup) в любое удобное и(ли) интересующее время.
СДЕЛАТЬ "кнопку" РЕЗЕРВНОЕ КОПИРОВАНИЕ.
и конечно это не должно заменять копирование по расписанию!!!
это все есть. Есть кнопка в панели инструментов, и есть автоматический бэкап каждый день раз в день. Сами потери возможно невелики, но они критичны для ведения учета произведенных процедур у пациента. Да, он сам конечно может сказать что ему делали прошлый раз на приеме, но все же удобней, если врач сам видит, что ему было сделано просто открыв карточку пациента в программе, без переспросов. Вот в чем проблема, хотелось бы этого избежать.

Подумал, может проще будет вести дневной лог в виде текстового файла в виде списка произведенных изменений, который будет обнуляться при исполнении команды резервного копирования....
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo

Последний раз редактировалось regman; 27.08.2015 в 10:02.
regman вне форума Ответить с цитированием
Старый 27.08.2015, 10:52   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Вы опрделитесь уже - вам шашечки или ехать?
Если вам нужна надежность, тогда у вас один путь - репликация.
Если нет, тогда делайте кнопку бэкапа и всегда рискуйте, что можете потерять данные после последнего бэкапа.

То, что вы будете писать в какой-то файл и обнулять его после команды резервного копирования вам ничего особенного не даст - те же яйца, только в профиль.
waleri вне форума Ответить с цитированием
Старый 27.08.2015, 12:21   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
клиент хочет сам уметь в случае переустановки винды настроить прогу
Дак просто делай бэкап при запуске проги
Зачем при каждой транзакции? Это ничего не даст, данные не будут достаточно актуализированы все равно.

А что за СУБД?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2015, 14:06   #8
regman
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 90
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Вы опрделитесь уже - вам шашечки или ехать?
Если вам нужна надежность, тогда у вас один путь - репликация.
Если нет, тогда делайте кнопку бэкапа и всегда рискуйте, что можете потерять данные после последнего бэкапа.

То, что вы будете писать в какой-то файл и обнулять его после команды резервного копирования вам ничего особенного не даст - те же яйца, только в профиль.
че тут определяться - я проссо спросил. Раз нету другой возможности окромя репликации - так тому и быть. Это просто моя первая софтина с использованием MySQL.
Apache/2.2.23 (Win32) PHP/5.3.18
Win7Pro 64
Vertrigo
regman вне форума Ответить с цитированием
Старый 27.08.2015, 14:40   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Зачем так часто реплики делать? Репликация делается в основном на многопользовательской системе. А если один юзырь, то простого бэкапа в начале работы вполне хватает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.08.2015, 20:01   #10
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Как-то я не увидел ни в одном ответе, в том числе и от автора - а где хранится бэкап? Если он хранится не на другом сервере в другой комнате, желательно чтобы она не горела вместе с комнатой где стоит сервер с бд, грош - цена этому бэкапу.

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

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

Если вы используете нормальную СУБД, она имеет три вещи, которые вы должны грамотно использовать - транзакции, лог операций и план резервного копирования.

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

Именно поэтому придумали репликации и кластеризацию серверов.

Если работает два пользователя и ценность информации измеряется не месячным бюджетом организации, а всего лишь потраченными 15ю минутами на допрос пользователей что было в прошлый раз - чего вы заморачиваетесь на тему бэкапирования?
Бэкап базы раз в день и логов хоть каждый час решит вашу проблему раз и навсегда.

Но опять же, вы говорите, что операции вставки и обновления выполняются нечасто, тогда в чем смысл постоянного бэкапирования? Типа пользователь идиот, любит баловаться, вставлять всякую фигню, обновлять карточки второго пользователя и ему для этого нужно иметь кучу бэкапов, чтобы ради смеха потом всё это откатить?

А что значит сбой работы системы? Какой? Вашего приложения или ОС? Если вашего приложения - тестируйте лучше, данные проверяйте, что пользователь вводит. Если ОС - другой вопрос какой именно крах. Может вирус файлы запаролил и тогда бэкапы вам могут не помочь (если паролилось всё подряд).
Переустановка ОС для нормальной СУБД никаких проблем не несет - файлы должны подцепляться без особых проблем, а в них и без бэкапов все данные должны быть.

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

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

Последний раз редактировалось Stilet; 28.08.2015 в 20:19.
Akeloya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнять INSERT каждого дня только 1 раз xxbesoxx SQL, базы данных 9 22.07.2015 13:22
Макрос вставки после каждого слова. Demetros Microsoft Office Word 2 15.12.2014 23:04
вставить заданное значение после каждого элимента массива, расположенного после первого нулевого элимента D.vers Общие вопросы C/C++ 0 01.06.2014 17:17
Написать процедуру подобно insert, которая после каждого вхождения символа C в строку S1 вставляет строку S2 azalia Паскаль, Turbo Pascal, PascalABC.NET 17 09.01.2014 12:39
Макрос записать файл после каждого изменения Konstantin_Z Microsoft Office Excel 6 06.02.2013 15:05