Бекап и восстановление

Здравствуйте.
Задался целью написать батник для того, что бы было легче обслуживать базу. И вот прошу квалифицированной помощи.
Вот что у меня получилось.
[SPOILER]

@Echo Off
 
echo 1. Начало. Запрос даты и времени и запись в файл с пометкой "# Начало работы"
echo %date% %time% # Начало работы>> "Z:\PSQLDump\dump & restore.log"
 
echo 3.1. Запрос даты и времени и запись в файл с пометкой "# Рук перед началом создания файла резервной копии базы данных."
echo %date% %time% # Рук перед началом создания файла резервной копии базы данных.>> "Z:\PSQLDump\dump & restore.log"
 
echo 3.2. Подключение к базе и запрос общего количества рук в выводом в файл
"D:/PostgreSQL/9.0/bin/psql.exe" --host localhost --port 5433 --username postgres --dbname Newdatabase --tuples-only --command "SELECT count(*) FROM pokerhands" >> "Z:\PSQLDump\dump & restore.log"
 
echo 3.2.1. Информирование об ошибках и логирование в файл.
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
 
:Error
MSG * /Time:86400 "Ошибка при запросе количества рук. Смотрите 'dump & restore.log'."
ECHO %date% %time% Ошибка при запросе количества рук перед созданием файла резервной копии базы данных. Проверьте возможность запуска PostgreSQL>> "Z:\PSQLDump\dump & restore.log"
GOTO Start_log
 
:Successfull
ECHO %date% %time% Успешный запрос количества рук перед созданием файла резервной копии базы данных>> "Z:\PSQLDump\dump & restore.log"
 
echo 4.1. Создание резервной копии
"D:/PostgreSQL/9.0/bin/pg_dump.exe" --host localhost --port 5433 --username postgres --format custom --blobs --oids --verbose --file "Z:\PSQLDump\Dump\Newdatabase_backup.b" Newdatabase
 
echo 4.1.1. Информирование об ошибках и логирование в файл
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
 
REM В случае ошибки удаляется резервная копия
:Error
DEL /q "Z:\PSQLDump\Dump\"
MSG * /Time:86400 "Ошибка при создании файла резервной копии базы данных. Смотрите 'dump & restore.log'."
ECHO %date% %time% Ошибка при создании файла резервной копии базы данных 'Newdatabase_backup.b'. Файл был удален>> "Z:\PSQLDump\dump & restore.log"
GOTO Start_log
 
:Successfull
ECHO %date% %time% Успешное создание файла резервной копии базы данных>> "Z:\PSQLDump\dump & restore.log"
 
echo 4.2. Восстановление из резервной копии
"D:/PostgreSQL/9.0/bin/pg_restore.exe" --host localhost --port 5433 --username postgres --dbname Newdatabase --clean --verbose "Z:\PSQLDump\Dump\Newdatabase_backup.b"
 
echo 4.2.1. Информирование об ошибках и логирование в файл
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
 
:Error
MSG * /Time:86400 "Ошибка при восстановлении из файла резервной копии базы данных. Смотрите 'dump & restore.log'."
ECHO %date% %time% Ошибка при восстановлении из файла резервной копии базы данных 'Newdatabase_backup.b'>> "Z:\PSQLDump\dump & restore.log"
GOTO Start_log
 
:Successfull
ECHO %date% %time% Успешное восстановление из файла резервной копии базы данных>> "Z:\PSQLDump\dump & restore.log"
 
echo 5.1. Запрос даты и времени и запись в файл с пометкой "# Рук после восстановления из файла резервной копии базы данных."
echo %date% %time% # Рук после восстановления из файла резервной копии базы данных.>> "Z:\PSQLDump\dump & restore.log"
 
echo 5.2. Подключение к базе и запрос общего количества рук в выводом в файл
"D:/PostgreSQL/9.0/bin/psql.exe" --host localhost --port 5433 --username postgres --dbname Newdatabase --tuples-only --command "SELECT count(*) FROM pokerhands" >> "Z:\PSQLDump\dump & restore.log"
 
echo 5.2.1. Информирование об ошибках и логирование в файл
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
 
:Error
MSG * /Time:86400 "Ошибка при запросе количества рук. Смотрите 'dump & restore.log'."
ECHO %date% %time% Ошибка при запросе количества рук после восстановления из файла резервной копии базы данных>> "Z:\PSQLDump\dump & restore.log"
GOTO Start_log
 
:Successfull
ECHO %date% %time% Успешный запрос количества рук после восстановления из файла резервной копии базы данных>> "Z:\PSQLDump\dump & restore.log"
 
echo 7. Запуск файла лога
:Start_log
start Z:\PSQLDump\"dump & restore.log"
 
pause

[/SPOILER]

Вопрос в следующем.
1. Нужны ли параметры "--blobs --oids" при создании бекапа?
2. Посоветовали не использовать параметр "--clean" при восстановлении базы из бекапа, а удалять базу старую, создать новую и в нее выполнить восстановление из бекапа.
Как правильно это прописать в батнике?
Заранее благодарен.
ЗЫ. я не программист, поэтому прошу не пинать больно, а объяснить как для чайника.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

> 1. Нужны ли параметры

> 1. Нужны ли параметры "--blobs --oids" при создании бекапа?
на ваше усмотрение. смотря какая у вас БД

> 2. Посоветовали не использовать параметр "--clean" при восстановлении базы из бекапа, а удалять базу старую, создать новую и в нее выполнить восстановление из бекапа.
Как правильно это прописать в батнике?

Да действительно так лучше. Через DROP DATABASE, CREATE DATABASE

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

Подскажите пожалуйста

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

В UNIX'ах есть утилита diff.

В UNIX'ах есть утилита diff. Думаю и для Windows её можно найти

а запросами это не решается?

а запросами это не решается? можно ли сравнить не бэкапы а развёрнутые базы?

Решается, но вы что на каждый

Решается, но вы что на каждый объект в БД собираетесь запросы писать? Типа надо узнать если ли такая хранимая процедура в БД - запрос! А если таких процедур сотня? А если ещё надо проверить наличие триггеров, наличие, структуру и количество записей в таблицах да ещё и их идентичность? Сколько запросов вам нужно будет сделать вручную? Тысячи? Десятки тысяч?

я понял:) а насчёт "можно ли

я понял:)
а насчёт "можно ли сравнить не бэкапы а развёрнутые базы?"

Нет, нельзя.

Из-за многих вещей, долго объяснять, но нельзя.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023