Kaip kurti atsargines SQL duomenų bazių prie tinklo dalis
Reguliariai kopijuokite SQL duomenų bazes. Jau aptarėme būdus, kaip lengvai kopijuoti visus SQL serverio duomenų bazes į vietinį standųjį diską, tačiau tai neapsaugo nuo diskų ir (arba) sistemos gedimų. Kaip papildomas apsaugos nuo tokio tipo nelaimės sluoksnis galite kopijuoti arba tiesiogiai sukurti atsargines kopijas tinklo dalyse.
Atsarginė kopijavimas vietoje ir tada nukopijuokite į tinklo dalį
Pageidautinas ir tiesioginis būdas atlikti šią užduotį yra tiesiog sukurti vietinę duomenų bazės atsarginę kopiją ir kopijuoti atitinkamą atsarginę kopiją į tinklo dalį. Tai galite padaryti sukurdami paketinį scenarijų, kuris atrodo taip:
SET LocalFolder = C: Programų failaiMicrosoft SQL ServerMSSQL.1MSSQLBackup
SqlCmd -E -Q „Atsarginė duomenų bazė„ MyDB To Disk = “% LocalFolder% MyDB.bak“
„XCopy“% LocalFolder% MyDB.bak ““ 19.168.16.55BackupDatabases ”/ Z / V
DEL „% LocalFolder% MyDB.bak“
Šis scenarijus atlieka šiuos veiksmus (eilutės eilutėje):
- Nustatomas vietinio SQL atsarginio katalogo kintamasis.
- Sukuria SQL atsarginę kopiją „MyDB“ (naudojant „Windows“ autentifikavimą) į vietinį SQL atsarginių kopijų katalogą.
- Kopijuoja vietinį atsarginės kopijos failą į tinklo dalį.
- Ištrina vietinį atsarginės kopijos failą.
Vėlgi, tai yra pageidaujamas metodas, nes jis veikia iš dėžutės, o atsarginių kopijų gedimo tikimybė yra minimali, nes atsarginė kopija sukuriama vietiniame diske. Tačiau, jei neturite pakankamai vietos vietos atsarginių failų vietinėms kopijoms saugoti, šis veiksmas nepavyks. Tokiu atveju turėsite pridėti papildomą vietos diske arba atsarginę kopiją tiesiogiai į tinklo dalį.
Atsarginė kopijavimas tiesiai prie tinklo
Paprastai bandant sukurti atsarginę kopiją tiesiai į tinklo dalį naudodami komandą, pvz .:
SqlCmd -E -Q „Atsarginė duomenų bazė„ MyDB To Disk = “„ 191.168.16.55BackupDatabasesMyDB.bak ““
Labiausiai tikėtina, kad gausite klaidą:
Pranešimas 3201, 16 lygis, 1 būsena, serverio JF, 1 eilutė
Negalima atidaryti atsarginio įrenginio „19.168.16.55BackupDatabasesMyDB.bak“. Operacinės sistemos klaida 5 (prieiga neleidžiama.).
3013, 16 lygis, 1 būsena, serverio JF, 1 eilutė
BACKUP DATABASE nustoja galioti neįprastai.
Ši klaida įvyksta nepaisant to, kad „SQL“ atsarginės kopijos komandą naudojote naudodami „Windows“ autentifikavimą („E“ jungiklį) ir „Windows“ paskyrą kaip galimybę pasiekti ir kopijuoti failus prie „Windows Explorer“.
Priežastis, dėl kurios šis veiksmas nepavyksta, yra ta, kad SQL komanda vykdoma pagal paskyros, kurioje veikia „SQL Server“ paslauga, ribas. Kai peržiūrite savo kompiuteryje pateiktą Paslaugų sąrašą, greičiausiai pamatysite, kad „SQL Server“ paslauga bus vykdoma kaip (stulpelyje „Prisijungti kaip stulpelis“) arba vietinė sistema, ar tinklo paslauga, kurios yra sistemos paskyros, kuriose nėra tinklo prieigos.
Mūsų sistemoje nepavyksta kopijuoti tinklo dalijimo komandos, nes mes turime „SQL Server“ paslaugą, kuri veikia kaip vietinė sistema ir kuri vėl negali pasiekti jokių tinklo išteklių.
Kad SQL leistų tiesiogiai kopijuoti į tinklo dalį, turime paleisti SQL Server paslaugą kaip vietinę paskyrą, kuri turi prieigą prie tinklo išteklių.
Redaguokite „SQL Server“ paslaugos ypatybes ir skirtuke „Prisijungti“ konfigūruokite paslaugą veikti kaip alternatyvią paskyrą, turinčią prieigos prie tinklo teises.
Spustelėję Gerai, gausite užklausą, kad nustatymai neįsigalios, kol paslauga nebus paleista iš naujo.
Paleiskite paslaugą iš naujo.
Dabar paslaugų sąrašas turėtų rodyti, kad SQL Server paslauga veikia kaip paskyra, kurią sukonfigūravote.
Dabar, kai paleidžiate komandą, kad galėtumėte tiesiogiai kopijuoti į tinklo dalį:
SqlCmd -E -Q „Atsarginė duomenų bazė„ MyDB To Disk = “„ 191.168.16.55BackupDatabasesMyDB.bak ““
Turėtumėte matyti sėkmės pranešimą:
Apdorojo 152 puslapius „MyDB“ duomenų bazei, faile „MyDB“ 1.
2 puslapiai tvarkomi duomenų bazėje „MyDB“, faile „MyDB_log“ 1.
BACKUP DATABASE sėkmingai apdorojo 154 puslapius per 0,503 sekundes (2,449 MB / s).
Su atsarginės kopijos failu dabar tinklo bendrinimo kataloge:
Tinklo dalies aspektai
Svarbu pažymėti, kad atsarginė komanda tikisi, kad galės prisijungti tiesiogiai prie tinklo dalies, neprašydama suteikti įgaliojimų. Paskyra, kurią sukonfigūravote, kad galėtumėte paleisti „SQL Server“ paslaugą, turi turėti patikimą ryšį su tinklo dalimi, kurioje atitinkami kredencialai suteikia prieigą, kitaip gali atsirasti tokia klaida:
Pranešimas 3201, 16 lygis, 1 būsena, serverio JF, 1 eilutė
Negalima atidaryti atsarginio įrenginio „19.168.16.55BackupDatabasesMyDB.bak“. Operacinės sistemos klaida 1326 (prisijungimo gedimas: nežinomas vartotojo vardas arba blogas slaptažodis.).
3013, 16 lygis, 1 būsena, serverio JF, 1 eilutė
BACKUP DATABASE nustoja galioti neįprastai.
Ši klaida rodo, kad tinklo dalis nepriėmė paskyros vartotojo vardo ir slaptažodžio, o komanda nepavyko.
Kita problema, kurią reikia nepamiršti, yra atsarginė kopija tiesiogiai prie tinklo išteklių, todėl bet kokie tinklo ryšio žagsuliai gali sukelti atsarginės kopijos sugedimą. Dėl šios priežasties turėtumėte atsarginę kopiją tik į tinklo vietas, kurios yra stabilios (t. Y. Tikriausiai ne VPN).
Saugumo padariniai
Kaip minėta anksčiau, pirmenybė teikiama naudojant vietinį atsarginį kopijavimą ir nukopijuokite jį į tinklo dalį, nes tai leidžia paleisti „SQL“ paslaugą tik kaip vietinės sistemos prieigos paskyrą.
Paleidę paslaugą kaip alternatyvią sąskaitą atidarysite duris galimiems saugumo klausimams. Pavyzdžiui, kenkėjiškas SQL scenarijus gali būti vykdomas pagal alternatyvią paskyrą ir atakuoti tinklo išteklius. Be to, bet kokie atitinkamos sąskaitos pakeitimai (slaptažodžio pakeitimai / galiojimo pabaiga arba paskyros ištrynimas / išjungimas) sukels SQL Server paslaugos paleidimą.
Svarbu nepamiršti šių punktų, jei paleisite SQL serverio egzempliorių naudodami alternatyvią paskyrą. Nors jie nėra rodomi kamščiai, jei imamasi tinkamų atsargumo priemonių, turėtumėte apsvarstyti galimybę pridėti papildomą standžiojo disko vietą ir įdiegti vietinę atsarginę kopiją ir kopijuoti, kad galėtumėte paleisti SQL paslaugą vietine paskyra.