Microsoft SQL Server, PostgreSQL, Qt, Базы данных

Резервное копирование базы данных по расписанию: MS SQL Server и PostgreSQL

Резервное копирование базы данных по расписанию: MS SQL Server и PostgreSQLНе во всех СУБД есть возможность настроить Резервное копирование базы данных по расписанию штатными средствами. Например, в Microsoft SQL Server это делается без проблем, а вот в PostgreSQL такой возможности «из коробки» нет.

Но выход есть: создать файл сценария и добавить его исполнение в расписание задач в Windows.

В переменных database, host, port, userName, bin, backupDir будут храниться значения имени базы данных, сервера, порта, имени пользователя БД, путь к bin папке PostgreSQL и директории сохранения резервных копий соответственно.

Пусть значение driver = 0 будет отвечать за PostgreSQL, а 1 — за Microsoft SQL Server.

Определим текст *.bat-файла:

[pastacode lang=»cpp» manual=»QString%20batText%20%3D%20%22%40ECHO%20OFF%20%5Cn%22%0A%20%20%20%20%20%20%20%20%22SET%20dmpfile%3D%22%2Bdatabase%2B%22-FullBackup-%25DATE%3A~6%2C4%25-%25DATE%3A~3%2C2%25-%25DATE%3A~0%2C2%25%20%5Cn%22%0A%20%20%20%20%20%20%20%20%22IF%20%5C%22%25TIME%3A~0%2C1%25%5C%22%3D%3D%5C%22%20%5C%22%20(SET%20dmpfile%3D%25dmpfile%25-0%25TIME%3A~1%2C1%25)%20ELSE%20(SET%20dmpfile%3D%25dmpfile%25-%25TIME%3A~0%2C2%25)%20%5Cn%22%0A%20%20%20%20%20%20%20%20%22SET%20dmpfile%3D%25dmpfile%25-%25TIME%3A~3%2C2%25-%25TIME%3A~6%2C2%25.backup%20%5Cn%22%0A%20%20%20%20%20%20%20%20%22set%20text%20%3D%20Begin%20to%20backup…%20%5Cn%22%0A%20%20%20%20%20%20%20%20%22echo%20%25text%25%20%5Cn%22%3B%0Aif%20(driver%3D%3D0)%0A%20%20%20%20%20%20%20batText%20%2B%3D%20QString(%0A%20%20%20%20%20%20%20%20%20%20%20%22cd%20%251%5C%20%5Cn%22%0A%20%20%20%20%20%20%20%20%20%20%20%22pg_dump.exe%20—host%20%252%20—port%20%253%20—username%20%254%20—no-password%20—format%22%20%0A%09%09%20%20%20%22custom%20—blobs%20—verbose%20—file%20%5C%22%255%5C%5C%25dmpfile%25%5C%22%20%256%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20.arg(bin%2C%20host%2C%20port%2C%20userName%2C%20%0A%09%09%09%09%20backupDir.replace(%22%2F%22%2C%20%22%5C%5C%22)%2C%20database)%3B%0A%20else%0A%20%20%20%20%20%20%20batText%20%2B%3D%20QString(%22SQLCMD%20-S%20%251%20-E%20-Q%20%5C%22BACKUP%20DATABASE%20%252%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%22TO%20DISK%20%3D%20’%253%2F%25dmpfile%25’%20%22%0A%20%20%20%20%20%20%20%20%20%20%20%22WITH%20INIT%2C%20NOFORMAT%2C%20SKIP%2C%20NOUNLOAD%5C%22%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.arg(host%2C%20database%2C%20backupDir)%3B» message=»» highlight=»» provider=»manual»/]

Имя файла резервной копии будет иметь при этом подобный вид: DatabaseName-FullBackup-2018-08-07 -11-23-38.backup, то есть имя базы данных, FullBackup + таймстемп.

Далее запишем текст в файл:

[pastacode lang=»cpp» manual=»%2F%2FbatFileName%20-%20%D0%B8%D0%BC%D1%8F%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%20%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D1%8F%20*.bat%0AQFile%20backupBat(batFileName)%3B%0Aif%20(!backupBat.open(QIODevice%3A%3AReadWrite))%20%7B%0A%09QMessageBox%3A%3Acritical(%0A%09%09this%2C%20%0A%09%09tr(%22%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0%22)%2C%0A%09%09tr(%22%D0%A4%D0%B0%D0%B9%D0%BB%20%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D1%8F%20%D1%80%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%22%0A%20%20%20%20%20%20%20%20%20%09%22%251%20%D0%BD%D0%B5%20%D0%BC%D0%BE%D0%B6%D0%B5%D1%82%20%D0%B1%D1%8B%D1%82%D1%8C%20%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82!%22).arg(batFileName))%3B%0A%09return%3B%20%0A%20%7D%0AQTextStream%20out(%26backupBat)%3B%0Aout%20%3C%3C%20batText%3B%0AbackupBat.close()%3B%0A%2F%2F%D0%B8%20%D0%B2%D1%8B%D0%B2%D0%B5%D0%B4%D0%B5%D0%BC%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%20%D0%BD%D0%B0%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%0AQMessageBox%3A%3Ainformation(this%2C%20tr(%22%D0%A2%D0%B5%D0%BA%D1%81%D1%82%20%D1%81%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%B8%D1%8F%22)%2C%20batText)%3B» message=»» highlight=»» provider=»manual»/]

Дальше заходим в планировщик заданий Windows и ставим выполнение полученного файла по определенному времени.

 

Резервное копирование базы данных по расписанию: MS SQL Server и PostgreSQL: 1 комментарий

Оставьте своё мнение...

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.