إدارة النسخ الاحتياطية لمثيلات خدمة قاعدة البيانات العلاقية (RDS) لـ SQL Server أمر حيوي لضمان توافر البيانات واستعادة الكوارث. توفر خدمة 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
: تقوم بالكتابة فوق الملف الموجود، حتى لو لم يكن ملف نسخ احتياطي.
-
@type
- يحدد نوع النسخة الاحتياطية.
FULL
(الافتراضي): يقوم بعمل نسخة احتياطية كاملة.DIFFERENTIAL
: ينشئ نسخة احتياطية تفاضلية بناءً على النسخة الاحتياطية الكاملة الأخيرة.- مهم: لكي تعمل النسخ الاحتياطية التفاضلية، يجب ألا توجد لقطة بين النسخة الاحتياطية الكاملة الأخيرة والنسخة الاحتياطية التفاضلية. إذا كانت هناك لقطة، قم بعمل نسخة احتياطية كاملة أخرى قبل النسخة الاحتياطية التفاضلية. فيما يلي استعلام مثال للتحقق من آخر نسخة احتياطية كاملة:
MS SQL
select top 1
database_name,
backup_start_date,
backup_finish_date
from msdb.dbo.backupset
where database_name = 'mydatabase'
and type = 'D'
order by backup_start_date desc;
-
@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
تدعم Amazon RDS أيضًا وظيفة النسخ الاحتياطي الأصلي لخادم SQL. فيما يلي الأوامر لعمليات النسخ الاحتياطي والاستعادة.
أوامر النسخ الاحتياطي
أمر النسخ الاحتياطي الكامل
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.
يقدم هذا الدليل أساسًا قويًا لإدارة نسخ احتياطية لخادم SQL Server RDS باستخدام Amazon S3. للحصول على تكوينات متقدمة أكثر، يرجى استشارة وثائق AWS أو تجربة المعلمات المقدمة لضبط عملية النسخ الاحتياطي وفقًا لبيئتك.
Source:
https://dzone.com/articles/how-to-backup-sql-server-rds-to-an-s3-bucket