Показать полную графическую версию : MSSQL2008 зеркальное отображение.
Alexandrm
14-07-2011, 09:53
Подскажите подходитли зеркальное отображение для создания актуальной резервной базы при выходе из строя главного SQL сервера?
Delirium
15-07-2011, 05:45
а связь между серверами стабильная, они находятся рядом?
Alexandrm
15-07-2011, 16:56
Связь гигабитная на одном свиче, возможна установка сетевух и связь через них.
давайте начём издалека.
вам это нужно для доступности баз 1С?
или другого приложения?
в чём полная идея?
Alexandrm
16-07-2011, 15:04
Да для баз 1с 7.7.
Идея состоит в том чтобы была точная копия базы данных при выходе из строя главного сервера.
Чтоб можно было прописать в 1С айпи нового сервера и работать на нем пока главный сервер недоступен. База обновляться постоянно и ночные бекапы для этого не подходят.
1C не работает с зеркальной базой.
Идея состоит в том чтобы была точная копия базы данных при выходе из строя главного сервера. »
этого можно добиться только сделав кластер, иначе 1С не разаботает.
База обновляться постоянно и ночные бекапы для этого не подходят. »
бэкапы можно делать не только ночью =)
jinchuuriki27
05-09-2016, 06:23
Прошу прощения за некрофилию, но решился ли как-нибудь данный топик?
У меня решился почти полностью (без кластера), но вот у меня есть необходимость делать ежедневно бэкапы... Подскажите мне вот в таком вопросе?
Решил смотреть в сторону PowerShell для создания полных бэкапов в сетевое хранилище, зеркальную базу по неизвестным мне причинам (я новичок в mssql), нельзя отбэкапить и решил, что скриптом можно выяснить, зеркальное это отображение или основная база... Пока дошел до
select * from sysdatabases
Можно ли как-то расшифровать выдаваемые статусы баз, например из этого:
Это на основном сервере
name : upp_demo
dbid : 6
sid : {1, 5, 0, 0...}
mode : 0
status : 65536
status2 : 1627389952
crdate : 31.08.2016 10:31:44
reserved : 01.01.1900 0:00:00
category : 0
cmptlevel : 110
filename : C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\upp_demo.mdf
version : 706
Это на зеркальном
name : upp_demo
dbid : 6
sid : {1, 0, 0, 0...}
mode : 0
status : 65568
status2 : 1627389952
crdate : 31.08.2016 9:09:15
reserved : 01.01.1900 0:00:00
category : 0
cmptlevel : 110
filename : C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\upp_demo.mdf
version : 706
Являются ли status и status2 той самой информацией, которая гласит что база основная или зеркальная?
Заранее, спасибо!
jinchuuriki27
06-09-2016, 07:06
Сам же спросил - сам и отвечу, вот такой скриптик после гугления получился:
<#
Вызов скрипта производится с параметрами:
-serverName - Имя хоста, где куртится MSSQL
-baseName - Имя самой базы данных
-backupDirectory - Куда сохранять бэкап базы
-incremental - Является ли копия разностной (по умолчанию - нет, произодится полный бэкап)
-daysToStoreBackups - Сколько дней хранить бэкапы, старше - удаляются
Пример вызова с созданием разностной копии:
powershell.exe C:\Backup\backup-new.ps1 -servername "SQLVIRT" -baseName upp_demo -backupDirectory "c:\backup" -incremental 1 -daysToStoreBackups 1 >> C:\Backup\backup.log
Пример вызова с созданием полной копии:
powershell.exe C:\Backup\backup-new.ps1 -servername "SQLVIRT" -baseName upp_demo -backupDirectory "c:\backup" -daysToStoreBackups 1 >> C:\Backup\backup.log
P.S.: Если база находится в режиме не равном ONLINE, тогда бэкап не производится, это сделано для того, чтобы скрипт не пытался создать копию базы - зеркального отображения.
#>
param(
$serverName,
$baseName,
$backupDirectory,
$incremental = 0,
$daysToStoreBackups
)
$dbstatus = Invoke-Sqlcmd -query "select db_name() as databasename, databasepropertyex('upp_demo','status') as dbstatus" -Verbose | Format-Wide -Property dbstatus | Out-String
$status = $dbstatus.Trim()
if($status -eq "ONLINE") {
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoEnum") | Out-Null
$server = New-Object ("Microsoft.SqlServer.Management.Smo.Server") $serverName
$database = $server.Databases["$baseName"]
$dbName = $database.Name
$timestamp = Get-Date -format yyyy-MM-dd-HHmmss
$targetPath = $backupDirectory + "\" + $dbName + "_" + $timestamp + ".bak"
$smoBackup = New-Object ("Microsoft.SqlServer.Management.Smo.Backup")
$smoBackup.Action = "Database"
$smoBackup.BackupSetDescription = "Full Backup of " + $dbName
$smoBackup.BackupSetName = $dbName + " Backup"
$smoBackup.Database = $dbName
$smoBackup.MediaDescription = "Disk"
$smoBackup.Devices.AddDevice($targetPath, "File")
$smoBackup.CompressionOption = “1”
$smoBackup.Incremental = $incremental
$smoBackup.SqlBackup($server)
"backed up $dbName ($serverName) to $targetPath"
Get-ChildItem "$backupDirectory\*.bak" |? { $_.lastwritetime -le (Get-Date).AddDays(-$daysToStoreBackups)} |% {Remove-Item $_ -force }
"removed all previous backups older than $daysToStoreBackups days"
}
Else {
"DataBase $baseName is not ONLINE or not exists on this server"
}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.