Управление резервными копиями для экземпляров SQL Server RDS имеет решающее значение для обеспечения доступности данных и восстановления после катастроф. AWS предоставляет инструменты для упрощения этого процесса, включая команды для резервного копирования баз данных SQL Server RDS непосредственно в Amazon S3. Эта статья проведет вас через команды и настройки, необходимые для выполнения резервного копирования и восстановления.
Резервное копирование SQL Server RDS в S3
Основная хранимая процедура, используемая для создания резервных копий, – это msdb.dbo.rds_backup_database
. Эта команда позволяет вам указать базу данных для резервного копирования и местоположение S3, где будет храниться резервная копия.
Параметры пакета
Хранимая процедура поддерживает несколько параметров, которые классифицируются как обязательные и необязательные.
Обязательные параметры
@source_db_name
: Имя базы данных для резервного копирования.@s3_arn_to_backup_to
: ARN, указывающий на корзину Amazon S3, которую следует использовать для резервного копирования, включая имя файла резервной копии.- Файл может иметь любое расширение, но обычно используется
.bak
.
- Файл может иметь любое расширение, но обычно используется
Необязательные параметры
-
@kms_master_key_arn
- ARN для симметричного ключа шифрования KMS, используемого для шифрования резервной копии.
- Вы не можете использовать ключ шифрования по умолчанию. Использование ключа по умолчанию приведет к сбою резервного копирования.
- Если вы не укажете ключ KMS, файл резервной копии не будет зашифрован.
- Поддерживаются только симметричные ключи KMS.
-
@overwrite_s3_backup_file
- Определяет, следует ли перезаписывать существующий файл.
0
(по умолчанию): Не перезаписывать существующий файл. Возвращает ошибку, если файл уже существует.1
: Перезаписывать существующий файл, даже если он не является файлом резервной копии.
-
@тип
- Определяет тип резервной копии.
ПОЛНАЯ
(по умолчанию): Выполняет полную резервную копию.ДИФФЕРЕНЦИАЛЬНАЯ
: Создает дифференциальную резервную копию на основе последней полной резервной копии.- Важно: Для работы дифференциальных резервных копий не должно быть снимков между последней полной резервной копией и дифференциальной резервной копией. Если снимок существует, выполните еще одну полную резервную копию перед дифференциальной резервной копией. Ниже приведен пример запроса для проверки последней полной резервной копии:
MS SQL
выбрать верхний 1
имя_базы_данных,
дата_начала_резервного_копирования,
дата_окончания_резервного_копирования
из msdb.dbo.backupset
где имя_базы_данных = 'моябаза'
и тип = 'D'
порядок по дата_начала_резервного_копирования убыв;
-
@number_of_files
- Указывает количество файлов (частей), на которые будет разделен резервный копированный файл. Максимум: 10.
- Если установлено значение
1
или пропущено, будет создан один резервный копированный файл. - Многофайловые резервные копии должны использовать символ
*
в имени файла, который будет заменен алфанумерическими строками во время создания. Например:- Ввод:
backup*.bak
,@number_of_files = 4
- Вывод:
backup1-of-4.bak
,backup2-of-4.bak
,backup3-of-4.bak
,backup4-of-4.bak
- Ввод:
-
@block_size
- Указывает физический размер блока (в байтах) для операций резервного копирования.
- Допустимые значения:
512
,1024
,2048
,4096
,8192
,16384
,32768
,65536
.
-
@max_transfer_size
- Обозначает максимальный объем данных (в байтах), передаваемых за одну операцию ввода-вывода.
- Допустимые значения: Множители
65536
байт до4194304
байт (4 МБ).
-
@buffer_count
- Общее количество буферов ввода-вывода, используемых в процессе резервного копирования.
Синтаксис команды
exec msdb.dbo.rds_backup_database
@source_db_name = 'database_name',
@s3_arn_to_backup_to = 'arn:aws:s3:::bucket_name/file_name.extension',
[@kms_master_key_arn = 'arn:aws:kms:region:account-id:key/key-id'],
[@overwrite_s3_backup_file = 0|1],
[@block_size = 512|1024|2048|4096|8192|16384|32768|65536],
[@max_transfer_size = n],
[@buffer_count = n],
[@type = 'DIFFERENTIAL|FULL'],
[@number_of_files = n];
Пример: Полное резервное копирование в S3
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
Настройка сжатия резервного копирования
Чтобы сэкономить место и сократить время передачи, вы можете включить сжатие для резервных копий SQL Server RDS, используя команды rdsadmin
.
Включить сжатие
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
Отключение сжатия
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';
Примечание: SQL Express не поддерживает сжатие резервного копирования; включение этой функции в таких случаях приведет к сбоям резервного копирования.
Выполнение резервного копирования нативными средствами SQL Server
Amazon RDS также поддерживает функционал резервного копирования SQL Server. Ниже приведены команды для операций резервного копирования и восстановления.
Команды резервного копирования
Команда полного резервного копирования
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_diff.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
Команда дифференциального резервного копирования
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/differential_backup*.bak',
@type='DIFFERENTIAL',
@number_of_files=4;
Команда восстановления
Команда дифференциального восстановления
exec msdb.dbo.rds_restore_database
@restore_db_name = 'MyDatabase',
@s3_arn_to_restore_from = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@type = 'FULL';
Команда дифференциального восстановления
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=1;
Мониторинг и управление задачами резервного копирования
Проверка статуса задачи:
exec msdb.dbo.rds_task_status @db_name = 'MyDatabase';
Отмена задачи резервного копирования:
exec msdb.dbo.rds_cancel_task @task_id = 1234;
Соображения
- Убедитесь, что корзина S3, используемая в командах, имеет необходимые разрешения для доступа из экземпляра RDS.
- Для конфиденциальных данных можно использовать мастер-ключ AWS KMS для шифрования резервных копий перед их хранением в S3, указав
@kms_master_key_arn
.
Дополнительные ресурсы
Для более подробных примеров и информации обратитесь к официальной документации AWS по резервному копированию SQL Server.
Этот руководство предлагает надежное основание для управления резервными копиями SQL Server RDS с помощью Amazon S3. Для более продвинутых конфигураций, пожалуйста, обратитесь к документации AWS или экспериментируйте с предоставленными параметрами, чтобы настроить процесс резервного копирования в соответствии с вашим окружением.
Source:
https://dzone.com/articles/how-to-backup-sql-server-rds-to-an-s3-bucket