Как сделать бэкап базы данных программы автоматически
Модераторы: Duncon, Hawk, Romeo, Eugie
-
- Сообщения: 7
- Зарегистрирован: 31 май 2015, 14:51
Добрый день.
Нужно решить одну проблему. Есть финансовая программа для контроля правильного движения средств. Написана в США, авторов не знаю. Мне нужно делать каждый день бэкап данных, желательно ночью, когда никто в ней не работает. Программа стоит на Виндовс сервер 2003. Сама программа тоже является сервером. Ее работа отображается в виде консоли.
Сейчас резервное копирование делается таким образом:
1. Завершите работу консоли сервера, введя команду shutdown и затем Enter.
2. Если с сервером в настоящее время соединен хоть один пользователь, то вам потребуется ввести подтверждение того, чтобы отключить его. Если вы хотите отключить, то введите слово yes и затем Enter. Через некоторое время работа консоли прекратиться, после чего курсор перейдет в строку командной строки или совсем выйдет из окна командной строки.
3. Условно: если командная строка закрылась, то откройте ее заново, нажав Win+R, и в появившемся окне введите cmd и затем Enter.
4. В командной строке введите команду для резервного копирования (дату и время вводить в указанном формате): backdbcd ггггммдд чч:мм (например, backdbcd 20130907 21:30). Начнется резервное копирование.
Все это делается вручную. Получается если я делаю бэкап днем, то я отключаю пользователей, которые в ней работают и они теряют не сохраненные данные. Предупредить всех об остановке программы нереально - много народу в ней может быть. Если делать в не рабочее время, то мне приходиться очень рано приходить или очень поздно уходить - для меня это проблематично.
Поэтому хочется, чтобы это делалось автоматически, скажем в 3 часа ночи.
Помогите, пожалуйста, решить эту задачу. Сам я чайник в программировании, поэтому просьба писать подробнее.
Нужно решить одну проблему. Есть финансовая программа для контроля правильного движения средств. Написана в США, авторов не знаю. Мне нужно делать каждый день бэкап данных, желательно ночью, когда никто в ней не работает. Программа стоит на Виндовс сервер 2003. Сама программа тоже является сервером. Ее работа отображается в виде консоли.
Сейчас резервное копирование делается таким образом:
1. Завершите работу консоли сервера, введя команду shutdown и затем Enter.
2. Если с сервером в настоящее время соединен хоть один пользователь, то вам потребуется ввести подтверждение того, чтобы отключить его. Если вы хотите отключить, то введите слово yes и затем Enter. Через некоторое время работа консоли прекратиться, после чего курсор перейдет в строку командной строки или совсем выйдет из окна командной строки.
3. Условно: если командная строка закрылась, то откройте ее заново, нажав Win+R, и в появившемся окне введите cmd и затем Enter.
4. В командной строке введите команду для резервного копирования (дату и время вводить в указанном формате): backdbcd ггггммдд чч:мм (например, backdbcd 20130907 21:30). Начнется резервное копирование.
Все это делается вручную. Получается если я делаю бэкап днем, то я отключаю пользователей, которые в ней работают и они теряют не сохраненные данные. Предупредить всех об остановке программы нереально - много народу в ней может быть. Если делать в не рабочее время, то мне приходиться очень рано приходить или очень поздно уходить - для меня это проблематично.
Поэтому хочется, чтобы это делалось автоматически, скажем в 3 часа ночи.
Помогите, пожалуйста, решить эту задачу. Сам я чайник в программировании, поэтому просьба писать подробнее.
Желательно знать тип БД. Если это что-то SQL-подобное, то бекап можно сделать средствами самого SQL-сервера. Иначе писать скрипт (батник) для запуска резервного копирования. Если БД организована на базе файловой системы, то можно делать бэкап своей программой, блокируя файлы для записи и копируя в архив в определенную папку. Для тех данных, что дали вы, наиболее предпочтительный способ - батник
It's a long way to the top if you wanna rock'n'roll
-
- Сообщения: 7
- Зарегистрирован: 31 май 2015, 14:51
Попытаюсь выяснить как написана эта программа. А можете написать батник? Я совсем пока не представляю как это сделать чтобы завершить стандартно программу и затем сделать бэкап.
Ну ты б дал сначала свою команду резервного копирования.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
-
- Сообщения: 7
- Зарегистрирован: 31 май 2015, 14:51
Задача собственно состоит в том, чтобы через консоль завершить выполнение программы. Программа на виртуальном сервере. Команда пишется в консоли программы. Чтобы завершить нужно дать команду "shutdown", а за тем подтвердить - ввести "yes". Сам бэкап сделать довольно просто, проблема именно в завершении. Принудительно завершать нельзя, только через команду. Как при закрытом рабочем столе вести команду в консоль?Сионист писал(а):Ну ты б дал сначала свою команду резервного копирования.
А рабочий стол то здесь зачем? shutdown пишется прямо в консоль, заранее вешаешь скрипт на планировщик и он будет завершать. Но если делать только закрытие, то Вам ведь всё равно придётся сидеть на работе, чтоб вручную ввести команду для бекапа, поэтому задачу надо решить целиком.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
-
- Сообщения: 7
- Зарегистрирован: 31 май 2015, 14:51
Вопрос в том как написать этот скрипт. Я этого не знаю. Можете подсказать что это может быть за скрипт?Сионист писал(а): заранее вешаешь скрипт на планировщик и он будет завершать.
эта часть задачи решена - бекап запускаю через батник в планировщике.Сионист писал(а):Но если делать только закрытие, то Вам ведь всё равно придётся сидеть на работе, чтоб вручную ввести команду для бекапа, поэтому задачу надо решить целиком
Ну вот смотрите: открываете системную Вы командную строку и набираете. Что? Просто shutdown? Это выключение самой машины. Предположим, набрать надо. Тогда эту же строчку можно набрать и в скрипт. Или обычно Вы юзали командную строку самой программы? Тогда я не подскажу, надо переделать для системной.
Код: Выделить всё
c:\program files\Command Shutdown
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
-
- Сообщения: 7
- Зарегистрирован: 31 май 2015, 14:51
Да, команду надо вводить в консоль самой программы.Сионист писал(а):Или обычно Вы юзали командную строку самой программы?
В скрипт надо написать команду, переделанную так, что её надо вводить в командную строку системы.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.