Резервное копирование БД

Автор ENE, 12.06.08, 20:26:14

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

ENE

Как можно организовать на предприятии автоматическое резервное копирование базы данных Лоцмана? Какие нужны для этого дополнительные программы или как это сделать через сам Лоцман. Желательно поподробнее...

YorikER

В общем-то довольно просто...
1. В ЛОЦМАН-администраторе есть возможность сохранить резервную копию, но она не удобна...
2. На сервере БД (что на MS SQL Server, что на Oracle) есть также возможность делать резервное копирования каждый день, изучайте документацию...
3. Я пользуюсь очень простым решением. Есть в Windows команда (в DOS окне с командной строки) SC - Взаимодействует с контроллером служб и установленными службами... Смотрите справку о Windows. С помощью нее можно остановить службу MSSQLSERVER и соответственно запустить ее. Далее используйте "Назначенные задания" (или Task Sheduler - Пуск->Все программы->Стандартные->Служебные). Создаете .bat файл, в котором записываете команду SC с параметрами остановки службы MSSQLSERVER и соответственно .bat файл, в котором запускается та же команда с параметрами запуска этой же службы. Далее создаете .bat файл, в котором командой COPY копируете файлы базы данных в какоето место в сети. Затем создаете задание в TaskSheduler, например, на 21:00 (когда никто не работает), которое запускает .bat файл останавливающий MSSQLSERVER. Далее создаете задание, например на 21:15, которое запускает .bat файл, копирующий файлы БД. Затем в 21:30 задание, которое запускает службу. Таким образом мы каждый день копируем в чистом виде файлы БД. Этот способ хорош тем, что я могу перенести файлы БД куда угодно (например домой для работы), установить их вместо файлов прототипов БД в общей папке ЛОЦМАНА, и с помощью ЛОЦМАН-Администратора создать новую БД - полного клона рабочей БД.

ENE

А как создать эти .bat файлы? А то я еще ни разу с таким не сталкивалась...

LDL

Я считаю, что лучше использовать средства СУБД для резервного копирования (возможность выполнения резервного копирования по графику, автоматическая проверка созданной копии, ...). В этом случее не обязательно условие отсутствие подключение к БД. Еще как вариант можно использовать встроенный ntBackup запускаемый так же из планировщика заданий. После этого остается только сжать данные архивной копии для экономии места.

YorikER

Для ENE: обычный текстовый файл с расширением .bat (по другому он называется "командный файл"). В обычном блокноте записывате в нем команду: SC STOP MSSQLSERVER. И сервер SQL будет остановлен. А команда: SC START MSSQLSERVER - запустит его. Переименовываете файл с .txt на .bat и все можете запускать...

ENE

Спасибо! Получилось... А как сделать копирование полностью всей базы данных с одного компьютера на другой по сети? Что теперь нужно писать в блокноте?

YorikER

Я сделал просто: подключил к серверу баз данных сетевой диск (например R:), и указал необходимый сетевой путь (например: \\bdc-ik\home, где bdc-ik - компьютер в сети, а home - открытая на этом компьютере папка). Подключить сетевой диск - Мой компьютер - Главное меню окна - Сервис - Подключить сетевой диск...
Далее в .bat файле команда
COPY E:\Base\VLBase\VLBase_Log.ldf R:\VLBase_Log.ldf
- где COPY - команда копирования;
- E:\Base\VLBase\VLBase_Log.ldf - один из файлов базы данных (полный путь к нему - всего файлов 6)
- R:\VLBase_Log.ldf - куда копировать файл

В принципе вместо R:\VLBase_Log.ldf можно написать сетевой путь \\bdc-ik\home\VLBase_Log.ldf ...

YorikER

Прошу прощения, команда должна выглядеть так COPY /y E:\Base\VLBase\VLBase_Log.ldf R:\VLBase_Log.ldf - где /y подавление запроса на подтверждение перезаписи существующего файла

ENE

Спасибо Вам. Попробую во вторник сделать. Вы мне очень помогли.

YorikER

Желаю успеха... Если что, обращайтесь ershov@infnt.ru, подробности www.infnt.ru...

ENE

Если я буду перезаписывать *.ldf - это же будет перезаписываться только этот файл? А если нужно делать резервное копирование самих файлов, которые входят в БД? Я понимаю, что неуместно перезаписывать все чертежи... Но вдруг что-то случиться? У нас все храниться в БД на сервере. На компьютерах ничего не храним. Можно ли как-то сделать, чтобы он делал резервные копии файлов, которые входят в БД? А потом просто дописывать те, которые только появились?

Максим Хмеляр

Храните файлы на файловом архиве а не в базе, и организовывать резервное копирование файлов будет проще.

ENE

Слышала что-то... А как же тогда можно организовывать резервное копирование файлов?

LDL

ЦитироватьСлышала что-то... А как же тогда можно организовывать резервное копирование файлов?
Точно так же как и резервное копирование файлов баз данных. Только лучше это делать каким нибудь архиватором например 7z
"c:\Program Files\7-Zip\7z.exe"  a %date%FileArhiv.7z e:\FileArhiv\*.*
Какждый архив будет с именем "текущая датаFileArhiv.7z"

Максим Хмеляр

Еще можно настроить встроенный планировщик задач (Task Scheduler) на запуск системной утилиты ntbackup.exe
в ней есть возможность выбирать тип резервной копии (дифферинциальная, инкрементная), т.е. резервная копия будет создана на все файлы, а дальше в нее будут записываться только измененные файлы.

YorikER

Для ENE: Уважаемая Helen, прошу прощения... Был в командировке, поэтому пропал на форуме... Со мной такое бывает, издержки профессии...
Итак, начнем по порядку...
Файлы базы данных Лоцмана:
NameBase_Log.ldf
NameBase_Data.mdf
NameBase_Doc.mdf
NameBase_Idx.mdf
NameBase_Img.mdf
NameBase_Prim.mdf
где NameBase - имя базы данных...
Для резервного копирования БД, копировать надо все эти файлы...
Если вы не используете файловый архив, то файлы документов храняться непосредственно в БД (если не ошибаюсь в файле NameBase_Doc.mdf - постраничное хранение)... При этом указанный файл раздуватся до неприличных размеров (иногда Гигабайты)... Рекомендую хранить файлы в отдельном файловом архиве, в Лоцмане есть такая возможность... Файловый архив расположить на специальном сетевом ресурсе (файловом сервере - в принципе это просто открытая сетевая папка), где и создать специальный режим резервного копирования... Мы храним файлы в файловом архиве на специально выделенном файловом хранилище размером в несколько Террабайт. На нем аппаратно установлено зеркальное копирование...

Muk

Мой админ такую строку придумал:

"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlmaint" -S MYSERVER\SQLEXPRESS -D DEMO -BkUpDB E:\LoodsmanBackup\ -BkUpMedia DISK

А дальше файлы резервной копии базы резервируются как обычные файлы.