====== Lesson 1: Planning a Backup Strategy ====== ===== SQL Server Backup Types ===== ^ Backup Type ^ Description ^ ^ Full | 모든 데이터 파일과 트랜잭션 로그의 일부분을 백업한다. | ^ Transaction log | 로그 파일에 기록된 데이터베이스 변화들을 백업한다. | ^ Tail-log | 로그의 활성부분(active portion)을 백업한다. | ^ Differential | The parts of the database that have changed since the last full database backup | ^ File/Filegroup | Specified files or filegroups | ^ Partial | The primary filegroup, every read/write filegroup, and any specified read-only filegroups | ^ Copy-only | The database or log (without affecting the backup sequence) | ===== What Are Recovery Models? ===== ^ Recovery Model ^ Description ^ ^ Simple | Uses full or differential copies of the database. Truncates the transaction logs. | ^ Full | Includes both database backups and transaction log backups. | ^ Bulk-logged | Includes both database and transaction log backups, but uses less log space for some operations. | ===== What Is a Full Database Backup Strategy? ===== * Perform full backups if: * Database is small * Database has few changes or is read-only * Clear transaction log periodically if using the full recovery model ===== What Is a Database and Transaction Log Backup Strategy? ===== * Combine a database and transaction log backup if: * Database is often modified * Full backup takes too long ===== What Is a Differential Bakcup Strategy? ===== * Use differential backups if: * Database changes frequently * You want to minimize backup time * Backup up transaction logs separately ===== What Is a File of Filegroup Backup Strategy? ===== * Use file or filegroups if: * Database is very large * A full backup would take too long * Back up transaction logs separately * Can be complex to manage ===== Considerations for Backup Operators ===== * Members of the following roles have permission to back up the database: * sysadmin * db_owner * db_backuppoperator ===== Considerations for Backup Media ===== * SQL Server supports backing up to: * Tape * Disk * Backup device * A physical storage location for backup files * Backup set * A backup on one or more backup devices ====== Lesson 2: Backing Up User Databases ====== ===== How to Perform a Full Database Backup ===== * Backs up the entire database * Includes part of the transaction log file BACKUP DATABASE {database_name | @dtabase_name_var} TO [, ...n] [WITH [FORMAT] [[,] {INIT | NOINIT}] ] ===== How to Perform a Transaction Log Backup ===== * Recover database to point of failure * Back up transaction logs separately when using the full or bulk-logged recovery models * Create frequently BACKUP LOG {database_name | @database_name_var} TO [, ...n] [WITH [{INIT | NOINIT}] ] ===== How to Perform a Differential Backup ===== * Backs up the changes since the last full backup * Smaller and faster than full backup BACKUP DATABASE {database_name | @database_name_var} TO [, ...n] [WITH [DIFFERENTIAL] ] ===== How to Perform File and Filegroup Backups ===== * Use for very large databases * Complex to manage BACKUP DATABASE {database_name | @database_name_var} [ [, ...n]] TO [, ...n] Where is: { FILE = {logical_file_name | @logical_file_name_var} | FILEGROUP = {logical_filegroup_name | @logical_filegroup_name_var} } ===== Options for Ensuring Backup Integrity ===== * Use the MIRROR TO option of the BACKUP statement * Use the CHECKSUM option of the BACKUP and RESTORE statements * Use the RESTORE VERIFYONLY statement to validate the backup ====== Lesson 3: Restoring User Databases ====== ===== How the Restore Process Works ===== * Phases of the restore process * Data copy * Redo * Undo * Using the NORECOVERY and RECOVERY options ===== How to Restore a Database ===== * Restore from a full or differential backup * Restores database files * Re-creates database objects * Use RECOVERY or NORECOVERY to control recovery behavior * Use MOVE...TO option to change file locations * Use REPLACE option to replace an existing database USE master RESTORE DATABASE AdventureWorks FROM AWBack WITH NORECOVERY RESTORE DATABASE AdventureWorks FROM AWBackDiff WITH RECOVERY ===== How to Restore a Transaction Log ===== * Restore from a transaction log backup * Restores changes to the database that are recorded in the transaction log * Use the RECOVERY option on the final log to be restored RESTORE DATABASE AdventureWorks FROM AWBack WITH NORECOVERY RESTORE LOG AdventureWorks FROM AWBackLog WITH FILE = 1, NORECOVERY RESTORE LOG AdventureWorks FROM AWBackLog WITH FILE = 2, RECOVERY * Use the STOPAT option with RECOVERY to perform point-in-time recovery ====== Lesson 4: Performing Online Restore Operations ====== ===== Overview of Online Restore Operations ===== Database +--------------------+ Primary filegroup | Primary | online, database -------> Filegrup | available | | | | | | File unavailable, -------> Filegroup A |<------- Restoring file [백업장치(테이프,디스크)] filegroup offline | | | | | | All files available, -------> Filegroup B | filegroup online | | +--------------------+ ===== How to Restore a Damaged Page ===== - Identify ID of damaged page - Restore page from a full or differential backup \\ Use PAGE clause to specify pages to restore \\ Specify NORECOVERY RESTORE DATABASE AdventureWorks PAGE = '1:610' FROM AWBack WITH NORECOVERY - Restore transaction logs - Backup transaction log tail - Restore transaction log tail ===== How to Restore a File ===== - Restore damaged file from a full or differential backup \\ Use FILE clause to specify file to restore \\ Specify NORECOVERY RESTORE DATABASE AdventureWorks FILE = AW2 FROM AWBack WITH NORECOVERY - Backup transaction log tail \\ Specify COPY_ONLY - Restore transaction logs - Restore transaction log tail ===== How to Restore a Filegroup ===== - Backup transaction log tail \\ Specify NORECOVERY - Restore filegroup from a full or differentail backup \\ Use FILEGROUP clause to specity filegroup to restore \\ Specify PARTIAL and NORECOVERY RESTORE DATABASE AdventureWorks FILEGROUP = 'DYNAMIC_DATA' FROM AWBackDynamic WITH PARTIAL, NORECOVERY - Restore transaction logs - Restore transaction log tail ===== How to Perform a Piecemeal Restore ===== * Restore a database in stages based on filegroups * Start with primary filegroup * Continue with secondary filegroups * Each filegroup comes online as it is restored * Transactions involving filegroups not yet restored will hold locks until rollback can complete ====== Lesson 5: Recovering Data from Database Snapshots ====== ===== What Is a Database Snapshot? ===== * Read-only, consistent view of a database at a specified point in time * Useful as test or development database, or for reporting * Must exist on same server as source database ===== How Database Snapshots Work ===== Source DB Snapshot DB +--------+ +--------+ | +--+ | | | | | | <--------------------------------- SELECT... | +--+ | | | | | Copy-On-Write | | | +--+ | (first time only) | +--+ | UPDATE... --> | | - - - - - - - - - - - -> | | <--- SELECT... | +--+ | | +--+ | +--------+ +--------+ ===== How Data Can Be Recovered from a Database Snapshot ===== ^ Undelete a row | Insert original data from snapshot | ^ Undo an update | Get original values from snapshot | ^ Recover a dropped object | Generate script from snapshot, then copy data | ^ Revert to snapshot | Restore database from snapshot | ====== Lesson 6: System Databases and Disaster Recovery ====== ===== Considerations for Backing Up System Databases ===== * Back up the system Databases * After modifying the master database * After modifying the msdb database * After modifying the model database ===== Considerations for Restoring System Databases ===== * Restore master, model, and msdb databases from backup if available * If no valid backup of the master database exists, re-create using: * SQL Server Management Studio * Scripts used to create objects * Reattach undamaged databases rather than restoring ===== How to Restore the master Database ===== * If SQL Server instance is accessible - Start SQL Server in single-user mode - Restore your lastest backup of the master database - Restart the server * If SQL Server instance is not accessible - Rebuild master database using Setup.exe - Restore master database - Restore msdb and model databases