Mengimpor dan mengekspor basis data SQL Server menggunakan pencadangan dan pemulihan native - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengimpor dan mengekspor basis data SQL Server menggunakan pencadangan dan pemulihan native

Amazon RDS mendukung pencadangan dan pemulihan native untuk basis data Microsoft SQL Server menggunakan file cadangan penuh (file .bak). Saat Anda menggunakan RDS, Anda mengakses file yang disimpan di Amazon S3 bukannya menggunakan sistem file lokal di server basis data.

Misalnya, Anda dapat membuat backup penuh dari server lokal Anda, menyimpannya di S3, lalu memulihkannya ke instans DB Amazon RDS yang ada. Anda juga dapat membuat backup dari RDS, menyimpannya di S3, lalu memulihkannya ke mana pun Anda inginkan.

Pencadangan dan pemulihan asli tersedia di semua AWS Wilayah untuk instans DB AZ tunggal dan multi-AZ, termasuk instans DB multi-AZ dengan replika baca. Pencadangan dan pemulihan native tersedia untuk semua edisi Microsoft SQL Server yang didukung di Amazon RDS.

Diagram berikut menunjukkan skenario yang didukung.

Arsitektur Pencadangan dan Pemulihan Native

Menggunakan file .bak native untuk mencadangkan dan memulihkan basis data biasanya merupakan cara tercepat untuk mencadangkan dan memulihkan basis data. Ada banyak keuntungan tambahan jika menggunakan pencadangan dan pemulihan native. Misalnya, Anda dapat melakukan hal berikut:

  • Memigrasi basis data ke atau dari Amazon RDS.

  • Memigrasi basis data antara beberapa instans DB RDS untuk SQL Server.

  • Memigrasi data, skema, prosedur tersimpan, pemicu, dan kode basis data lainnya di dalam file .bak.

  • Mencadangkan dan memulihkan basis data tunggal, bukan seluruh instans DB.

  • Membuat salinan basis data untuk pengembangan, pengujian, pelatihan, dan demonstrasi.

  • Menyimpan dan mentransfer file backup dengan Amazon S3, untuk perlindungan tambahan bagi pemulihan bencana.

  • Buat backup native dari basis data yang telah mengaktifkan Enkripsi Data Transparan (TDE), dan pulihkan backup tersebut ke basis data on-premise. Untuk informasi selengkapnya, lihat Dukungan untuk Enkripsi Data Transparan di SQL Server.

  • Kembalikan cadangan native basis data on-premise yang mengaktifkan TDE ke RDS untuk instans SQL Server DB. Untuk informasi selengkapnya, lihat Dukungan untuk Enkripsi Data Transparan di SQL Server.

Batasan dan rekomendasi

Berikut ini adalah beberapa batasan dalam menggunakan pencadangan dan pemulihan native:

  • Anda tidak dapat mencadangkan, atau memulihkan dari, bucket Amazon S3 di AWS Wilayah lain dari instans Amazon RDS DB Anda.

  • Anda tidak dapat memulihkan basis data dengan nama yang sama seperti basis data yang sudah ada. Nama basis data bersifat unik.

  • Kami sangat menyarankan agar Anda tidak memulihkan cadangan dari satu zona waktu ke zona waktu yang berbeda. Jika Anda memulihkan cadangan dari satu zona waktu ke zona waktu yang berbeda, Anda harus mengaudit kueri dan aplikasi Anda untuk mengetahui efek dari perubahan zona waktu.

  • Amazon S3 memiliki batas ukuran 5 TB per file. Untuk pencadangan native pada basis data yang lebih besar, Anda dapat menggunakan pencadangan multi-file.

  • Ukuran basis data maksimum yang dapat dicadangkan ke S3 bergantung pada memori, CPU, I/O, dan sumber daya jaringan yang tersedia pada instans DB. Semakin besar basis data, semakin banyak memori yang dikonsumsi agen pencadangan. Pengujian kami menunjukkan bahwa Anda dapat membuat backup terkompresi dari basis data berukuran 16-TB pada jenis instans generasi terbaru kami dari ukuran instans 2xlarge dan lebih besar, dengan sumber daya sistem yang memadai.

  • Anda tidak dapat mencadangkan atau memulihkan lebih dari 10 file backup sekaligus.

  • Pencadangan diferensial didasarkan pada backup penuh yang terakhir. Agar pencadangan diferensial berhasil, Anda tidak dapat mengambil snapshot antara backup penuh terakhir dan pencadangan diferensial. Jika Anda menginginkan pencadangan diferensial, tetapi ada snapshot manual atau otomatis, maka lakukan backup penuh lainnya sebelum melakukan pencadangan diferensial.

  • Pemulihan diferensial dan log diferensial tidak didukung untuk basis data dengan file yang file_guid (pengidentifikasi unik) diatur ke NULL.

  • Anda dapat menjalankan hingga dua tugas pencadangan atau pemulihan pada saat bersamaan.

  • Anda tidak dapat melakukan pencadangan log native dari SQL Server di Amazon RDS.

  • RDS mendukung pemulihan native basis data hingga 16 TB. Pemulihan native untuk basis data di Edisi Ekspres SQL Server dibatasi hingga 10 GB.

  • Anda tidak dapat melakukan pencadangan native selama waktu pemeliharaan, atau saat Amazon RDS sedang dalam proses mengambil snapshot basis data. Jika tugas pencadangan native tumpang tindih dengan jendela pencadangan harian RDS, tugas pencadangan native akan dibatalkan.

  • Pada instans DB Multi-AZ, Anda hanya dapat melakukan pemulihan native di basis data yang dicadangkan di model pemulihan penuh.

  • Memulihkan dari pencadangan diferensial pada instans Multi-AZ tidak didukung.

  • Memanggil prosedur RDS untuk pencadangan dan pemulihan native dalam transaksi tidak didukung.

  • Gunakan enkripsi simetris AWS KMS key untuk mengenkripsi cadangan Anda. Amazon RDS tidak mendukung kunci KMS asimetris. Untuk informasi selengkapnya, lihat Membuat kunci enkripsi simetris KMS di Panduan Developer AWS Key Management Service .

  • File pencadangan native dienkripsi dengan kunci KMS yang ditentukan menggunakan mode kripto "Hanya Enkripsi". Saat Anda memulihkan file backup terenkripsi, ingatlah bahwa file tersebut dienkripsi dengan mode kripto "Encryption-Only".

  • Anda tidak dapat memulihkan basis data yang berisi kelompok file FILESTREAM.

Jika basis data Anda dapat offline saat file backup dibuat, disalin, dan dipulihkan, kami menyarankan Anda untuk menggunakan pencadangan dan pemulihan native untuk memigrasinya ke RDS. Jika database lokal tidak bisa offline, sebaiknya gunakan database AWS Database Migration Service untuk memigrasikan database ke Amazon RDS. Untuk informasi lebih lanjut, lihat Apa itu AWS Database Migration Service?

Pencadangan dan pemulihan native tidak dimaksudkan untuk menggantikan kemampuan pemulihan data dari fitur salinan snapshot lintas-wilayah. Kami menyarankan Anda menggunakan salinan snapshot untuk menyalin snapshot database Anda ke AWS Wilayah lain untuk pemulihan bencana lintas wilayah di Amazon RDS. Untuk informasi selengkapnya, lihat Menyalin snapshot DB.

Menyiapkan pencadangan dan pemulihan native

Untuk mengatur pencadangan dan pemulihan native, Anda memerlukan tiga komponen:

  1. Bucket Amazon S3 untuk menyimpan file cadangan Anda.

    Anda harus memiliki bucket S3 yang akan digunakan untuk file backup kemudian mengunggah backup yang ingin Anda migrasikan ke RDS. Jika sudah memiliki bucket Amazon S3, Anda dapat menggunakannya. Jika tidak, Anda dapat membuat bucket. Atau, Anda dapat memilih untuk dibuatkan bucket baru untuk Anda saat menambahkan opsi SQLSERVER_BACKUP_RESTORE dengan menggunakan AWS Management Console.

    Untuk informasi tentang penggunaan S3, lihat Panduan Pengguna Amazon Simple Storage Service

  2. Peran AWS Identity and Access Management (IAM) untuk mengakses bucket.

    Jika sudah memiliki peran IAM, Anda dapat menggunakannya. Anda dapat memilih untuk dibuatkan peran IAM baru ketika menambahkan opsi SQLSERVER_BACKUP_RESTORE dengan menggunakan AWS Management Console. Atau, Anda dapat membuatnya secara manual.

    Jika Anda ingin membuat peran IAM baru secara manual, gunakan pendekatan yang dibahas di bagian berikutnya. Lakukan hal yang sama jika Anda ingin melampirkan hubungan kepercayaan dan kebijakan perizinan pada peran IAM yang sudah ada.

  3. Opsi SQLSERVER_BACKUP_RESTORE ditambahkan ke grup opsi di instans DB Anda.

    Untuk mengaktifkan pencadangan dan pemulihan native pada instans DB Anda, tambahkan opsi SQLSERVER_BACKUP_RESTORE untuk kelompok opsi pada instans DB Anda. Untuk informasi dan petunjuk selengkapnya, silakan lihat Dukungan untuk pencadangan dan pemulihan native di SQL Server.

Membuat peran IAM secara manual untuk pencadangan dan pemulihan native

Jika Anda ingin membuat peran IAM baru secara manual untuk digunakan dengan pencadangan dan pemulihan native, Anda dapat melakukannya. Dalam hal ini, Anda membuat peran untuk mendelegasikan izin dari layanan Amazon RDS ke bucket Amazon S3. Saat Anda membuat peran IAM, Anda melampirkan hubungan kepercayaan dan kebijakan perizinan. Hubungan kepercayaan memungkinkan RDS mengambil peran ini. Kebijakan izin menentukan tindakan yang dapat dilakukan peran ini. Untuk informasi selengkapnya tentang pembuatan peran, lihat Membuat peran untuk mendelegasikan izin ke layanan AWS.

Untuk fitur pencadangan dan pemulihan native, gunakan hubungan kepercayaan dan kebijakan perizinan yang serupa dengan contoh dalam bagian ini. Dalam contoh berikut, kami menggunakan nama pengguna utama layanan rds.amazonaws.com sebagai alias untuk semua akun layanan. Dalam contoh lain, kami menentukan Amazon Resource Name (ARN) untuk mengidentifikasi akun, pengguna, atau peran lain yang kami berikan akses ke dalam kebijakan kepercayaan.

Sebaiknya gunakan kunci konteks kondisi global aws:SourceArn dan aws:SourceAccount dalam hubungan kepercayaan berbasis sumber daya untuk membatasi izin layanan ke sumber daya tertentu. Ini adalah cara yang paling efektif untuk melindungi dari masalah confused deputy.

Anda dapat menggunakan kedua kunci konteks kondisi global tersebut dan nilai aws:SourceArn berisi ID akun. Dalam hal ini, nilai aws:SourceAccount dan akun dalam nilai aws:SourceArn harus menggunakan ID akun yang sama saat digunakan dalam pernyataan yang sama.

  • Gunakan aws:SourceArn jika Anda menginginkan akses lintas layanan untuk satu sumber daya.

  • Gunakan aws:SourceAccount jika Anda ingin mengizinkan pengaitan sumber daya apa pun di akun tersebut dengan penggunaan lintas layanan.

Dalam hubungan kepercayaan, pastikan untuk menggunakan kunci konteks kondisi global aws:SourceArn dengan ARN penuh dari sumber daya yang mengakses peran. Untuk pencadangan dan pemulihan native, pastikan untuk menyertakan grup opsi DB dan instans DB, seperti yang ditunjukkan dalam contoh berikut.

contoh hubungan kepercayaan dengan kunci konteks kondisi global untuk pencadangan dan pemulihan native
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier", "arn:aws:rds:Region:my_account_ID:og:option_group_name" ] } } } ] }

Contoh berikut menggunakan ARN untuk menentukan sumber daya. Untuk informasi cara menggunakan ARN selengkapnya, lihat Amazon resource name (ARN).

contoh kebijakan perizinan untuk pencadangan dan pemulihan native tanpa didukung enkripsi
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" }, { "Effect": "Allow", "Action": [ "s3:GetObjectAttributes", "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
contoh kebijakan perizinan untuk pencadangan dan pemulihan native dengan didukung enkripsi

Jika Anda ingin mengenkripsi file backup, sertakan kunci enkripsi dalam kebijakan perizinan Anda. Untuk informasi kunci enkripsi selengkapnya, lihat Memulai di Panduan Developer AWS Key Management Service .

catatan

Anda harus menggunakan kunci KMS enkripsi simetris untuk mengenkripsi cadangan Anda. Amazon RDS tidak mendukung kunci KMS asimetris. Untuk informasi selengkapnya, lihat Membuat kunci enkripsi simetris KMS di Panduan Developer AWS Key Management Service .

Peran IAM juga harus menjadi pengguna kunci dan administrator kunci untuk kunci KMS, yaitu, harus disebutkan dalam kebijakan kunci. Untuk informasi selengkapnya, lihat Membuat kunci enkripsi simetris KMS di Panduan Developer AWS Key Management Service .

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" }, { "Effect": "Allow", "Action": [ "s3:GetObjectAttributes", "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Menggunakan pencadangan dan pemulihan native

Setelah Anda mengaktifkan dan mengonfigurasi pencadangan dan pemulihan native, Anda dapat mulai menggunakannya. Pertama, Anda melakukan koneksi ke basis data Microsoft SQL Server, lalu Anda memanggil prosedur tersimpan Amazon RDS untuk melakukan pekerjaan tersebut. Untuk petunjuk tentang melakukan koneksi ke basis data Anda, lihat Menghubungkan ke instans DB yang menjalankan mesin basis data Microsoft SQL Server.

Beberapa prosedur yang disimpan mewajibkan Anda untuk memberikan Amazon Resource Name (ARN) ke bucket dan file Amazon S3 Anda. Format untuk ARN Anda adalah arn:aws:s3:::bucket_name/file_name.extension. Amazon S3 tidak memerlukan nomor akun atau AWS Wilayah di ARN.

Jika Anda juga memberikan kunci KMS opsional, format untuk ARN kuncinya adalah arn:aws:kms:region:account-id:key/key-id. Untuk informasi selengkapnya, lihat nama sumber daya Amazon (ARN) dan ruang nama AWS layanan. Anda harus menggunakan kunci KMS enkripsi simetris untuk mengenkripsi cadangan Anda. Amazon RDS tidak mendukung kunci KMS asimetris. Untuk informasi selengkapnya, lihat Membuat kunci enkripsi simetris KMS di Panduan Developer AWS Key Management Service .

catatan

Baik ketika Anda menggunakan kunci KMS atau tidak, tugas pencadangan dan pemulihan native mengaktifkan enkripsi 256-bit Advanced Encryption Standard (AES) sisi server secara default untuk file yang diunggah ke S3.

Untuk petunjuk bagaimana cara memanggil setiap prosedur tersimpan, lihat topik berikut:

Membuat backup basis data

Untuk membuat backup basis data Anda, gunakan prosedur rds_backup_database yang disimpan.

catatan

Anda tidak dapat membuat backup basis data selama waktu pemeliharaan, atau saat Amazon RDS mengambil snapshot.

Penggunaan

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], [@type='DIFFERENTIAL|FULL'], [@number_of_files=n];

Parameter berikut diperlukan:

  • @source_db_name – Nama basis data untuk dicadangkan.

  • @s3_arn_to_backup_to – ARN yang menunjukkan bucket Amazon S3 yang akan digunakan untuk pencadangan, ditambah nama file backup.

    File dapat memiliki ekstensi apa saja, tetapi .bak biasanya digunakan.

Parameter berikut ini bersifat opsional:

  • @kms_master_key_arn— ARN untuk kunci KMS enkripsi simetris untuk digunakan untuk mengenkripsi item.

    • Anda tidak dapat menggunakan kunci enkripsi default. Jika Anda menggunakan kunci default, basis data tidak akan dicadangkan.

    • Jika Anda tidak menentukan pengidentifikasi kunci KMS, file backup tidak akan dienkripsi. Untuk informasi selengkapnya, lihat Mengenkripsi sumber daya Amazon RDS.

    • Saat Anda menentukan kunci KMS, enkripsi sisi klien digunakan.

    • Amazon RDS tidak mendukung kunci KMS asimetris. Untuk informasi selengkapnya, lihat Membuat kunci enkripsi simetris KMS di Panduan Developer AWS Key Management Service .

  • @overwrite_s3_backup_file – Nilai yang menunjukkan apakah file backup yang sudah ada akan ditimpa.

    • 0 – Tidak menimpa file yang ada. Nilai ini adalah default.

      Mengatur @overwrite_s3_backup_file ke 0 akan menghasilkan kesalahan jika file sudah ada.

    • 1 – Menimpa file yang sudah ada dengan nama yang ditentukan, meskipun itu bukan file cadangan.

  • @type – Jenis pencadangan.

    • DIFFERENTIAL – Membuat pencadangan diferensial.

    • FULL – Membuat backup penuh. Nilai ini adalah default.

    Pencadangan diferensial didasarkan pada backup penuh yang terakhir. Agar pencadangan diferensial berhasil, Anda tidak dapat mengambil snapshot antara backup penuh terakhir dan pencadangan diferensial. Jika Anda menginginkan pencadangan diferensial, tetapi ada snapshot, lakukan pencadangan penuh lainnya sebelum melanjutkan dengan pencadangan diferensial.

    Anda dapat mencari backup penuh atau snapshot terakhir menggunakan contoh kueri SQL berikut:

    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 – Jumlah file yang menjadi tempat di mana backup akan terbagi (terpotong). Jumlah maksimum adalah 10.

    • Pencadangan multi-file didukung untuk backup penuh dan pencadangan diferensial.

    • Jika Anda memasukkan nilai 1 atau menghilangkan parameter, akan dibuat file backup tunggal.

    Berikan awalan yang sama-sama dimiliki beberapa file tersebut, lalu akhiri dengan tanda bintang (*). Tanda bintang dapat diletakkan di mana saja di bagian file_name dari ARN S3. Tanda bintang diganti dengan serangkaian string alfanumerik dalam file yang dihasilkan, dimulai dengan 1-of-number_of_files.

    Misalnya, jika nama file pada S3 ARN adalah backup*.bak dan Anda mengatur @number_of_files=4, file backup yang dihasilkan adalah backup1-of-4.bak, backup2-of-4.bak, backup3-of-4.bak, dan backup4-of-4.bak.

    • Jika salah satu nama file sudah ada, dan @overwrite_s3_backup_file adalah 0, akan muncul kesalahan.

    • Pencadangan multi-file hanya dapat memiliki satu tanda bintang di bagian file_name dari ARN S3.

    • Backup file tunggal dapat memiliki berapa saja tanda bintang dalam bagian file_name dari ARN S3. Tanda bintang tidak dihapus dari nama file yang dihasilkan.

Contoh

contoh dari pencadangan diferensial
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak', @overwrite_s3_backup_file=1, @type='DIFFERENTIAL';
contoh dari backup penuh dengan enkripsi
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE', @overwrite_s3_backup_file=1, @type='FULL';
contoh dari pencadangan multi-file
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @number_of_files=4;
contoh dari pencadangan diferensial multi-file
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @type='DIFFERENTIAL', @number_of_files=4;
contoh dari pencadangan multi-file dengan enkripsi
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE', @number_of_files=4;
contoh dari pencadangan multi-file dengan penimpaan S3
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @overwrite_s3_backup_file=1, @number_of_files=4;
contoh dari pencadangan file tunggal dengan parameter @number_of_files

Contoh ini menghasilkan file backup dengan nama backup*.bak.

exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @number_of_files=1;

Memulihkan basis data

Untuk memulihkan basis data Anda, panggil prosedur tersimpan rds_restore_database. Amazon RDS membuat snapshot awal basis data setelah tugas pemulihan selesai dan basis data terbuka.

Penggunaan

exec msdb.dbo.rds_restore_database @restore_db_name='database_name', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension', @with_norecovery=0|1, [@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'], [@type='DIFFERENTIAL|FULL'];

Parameter berikut diperlukan:

  • @restore_db_name – Nama basis data yang akan dipulihkan. Nama basis data bersifat unik. Anda tidak dapat memulihkan basis data dengan nama yang sama seperti basis data yang sudah ada.

  • @s3_arn_to_restore_from – ARN yang menunjukkan prefiks Amazon S3 dan nama file backup yang digunakan untuk memulihkan basis data.

    • Untuk pencadangan file tunggal, berikan seluruh nama file.

    • Berikan awalan yang sama-sama dimiliki beberapa file tersebut, lalu akhiri dengan tanda bintang (*).

    • Jika @s3_arn_to_restore_from kosong, pesan kesalahan berikut dikembalikan: Awalan ARN S3 tidak boleh kosong.

Parameter berikut ini diperlukan untuk pemulihan diferensial, tetapi opsional untuk pemulihan penuh:

  • @with_norecovery – Klausul pemulihan yang digunakan untuk operasi pemulihan.

    • Atur ke 0 untuk memulihkan dengan RECOVERY. Dalam hal ini, basis data sedang online setelah pemulihan.

    • Atur ke 1 untuk memulihkan dengan NORECOVERY. Dalam hal ini, basis data tetap dalam status RESTORING setelah tugas pemulihan selesai. Dengan pendekatan ini, Anda dapat melakukan pemulihan diferensial berikutnya.

    • Untuk pemulihan DIFFERENTIAL, tentukan 0 atau 1.

    • Untuk pemulihan FULL, nilai ini default menjadi 0.

Parameter berikut ini bersifat opsional:

  • @kms_master_key_arn — Jika Anda mengenkripsi file backup, kunci KMS digunakan untuk mendekripsi file.

    Saat Anda menentukan kunci KMS, enkripsi sisi klien digunakan.

  • @type – Jenis pemulihan. Nilai yang valid adalah DIFFERENTIAL dan FULL. Nilai default-nya adalah FULL.

catatan

Untuk pemulihan diferensial, basis data harus berada dalam status RESTORING atau harus ada tugas yang memulihkan dengan NORECOVERY.

Anda tidak dapat memulihkan pencadangan diferensial di masa mendatang saat basis data online.

Anda tidak dapat mengirimkan tugas pemulihan untuk basis data yang sudah memiliki tugas pemulihan tertunda dengan RECOVERY.

Pemulihan penuh dengan NORECOVERY dan pemulihan diferensial tidak didukung pada instans Multi-AZ.

Memulihkan basis data di instans Multi-Z dengan replika baca itu serupa dengan memulihkan basis data di instans Multi-AZ. Anda tidak perlu mengambil tindakan tambahan apa pun untuk memulihkan basis data di replika.

Contoh

contoh dari pemulihan file tunggal
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
contoh dari pemulihan multi-file

Untuk menghindari kesalahan saat memulihkan beberapa file, pastikan semua file backup memiliki awalan yang sama, dan tidak ada file lain yang menggunakan awalan tersebut.

exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*';
contoh dari pemulihan basis data penuh dengan RECOVERY

Tiga contoh berikut ini melakukan tugas yang sama, pemulihan penuh dengan RECOVERY.

exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', [@type='DIFFERENTIAL|FULL'];
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=0;
contoh dari pemulihan basis data penuh dengan enkripsi
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
contoh dari pemulihan basis data penuh dengan NORECOVERY
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=1;
contoh dari pemulihan diferensial dengan NORECOVERY
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;
contoh dari pemulihan diferensial dengan RECOVERY
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=0;

Memulihkan log

Untuk memulihkan basis data Anda, panggil prosedur rds_restore_log yang disimpan.

Penggunaan

exec msdb.dbo.rds_restore_log @restore_db_name='database_name', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/log_file_name.extension', [@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'], [@with_norecovery=0|1], [@stopat='datetime'];

Parameter berikut diperlukan:

  • @restore_db_name – Nama basis data yang lognya akan dipulihkan.

  • @s3_arn_to_restore_from – ARN menunjukkan awalan Amazon S3 dan nama file log yang digunakan untuk memulihkan log. File dapat memiliki ekstensi apa saja, tetapi .trn biasanya digunakan.

    Jika @s3_arn_to_restore_from kosong, pesan kesalahan berikut dikembalikan: Awalan ARN S3 tidak boleh kosong.

Parameter berikut ini bersifat opsional:

  • @kms_master_key_arn — Jika Anda mengenkripsi log, kunci KMS digunakan untuk mendekripsi log.

  • @with_norecovery – Klausul pemulihan yang digunakan untuk operasi pemulihan. Nilai ini default menjadi 1.

    • Atur ke 0 untuk memulihkan dengan RECOVERY. Dalam hal ini, basis data sedang online setelah pemulihan. Anda tidak dapat memulihkan backup log lebih lanjut saat basis data sedang online.

    • Atur ke 1 untuk memulihkan dengan NORECOVERY. Dalam hal ini, basis data tetap dalam status RESTORING setelah tugas pemulihan selesai. Dengan pendekatan ini, Anda dapat melakukan pemulihan log berikutnya.

  • @stopat – Nilai yang menentukan bahwa basis data dipulihkan ke statusnya pada tanggal dan waktu yang ditentukan (dalam format tanggal). Hanya catatan log transaksi yang ditulis sebelum tanggal dan waktu yang ditentukan diterapkan ke basis data.

    Jika parameter ini tidak ditentukan (NULL), log lengkap dipulihkan.

catatan

Untuk pemulihan log, basis data harus dalam keadaan memulihkan atau tugas yang memulihkan dengan NORECOVERY harus sudah ada.

Anda tidak dapat memulihkan backup log saat basis data sedang online.

Anda tidak dapat mengirimkan tugas pemulihan di basis data yang sudah memiliki tugas pemulihan tertunda dengan RECOVERY.

Pemulihan log tidak didukung pada instans Multi-AZ.

Contoh

contoh dari pemulihan log
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
contoh dari pemulihan log dengan enkripsi
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
contoh dari pemulihan log dengan NORECOVERY

Dua contoh berikut melakukan tugas yang sama, pemulihan log dengan NORECOVERY.

exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=1;
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
contoh dari pemulihan log dengan RECOVERY
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0;
contoh dari pemulihan log dengan klausul STOPAT
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0, @stopat='2019-12-01 03:57:09';

Menyelesaikan pemulihan basis data

Jika tugas pemulihan terakhir pada basis data dilakukan menggunakan @with_norecovery=1, basis data sekarang dalam status RESTORING. Buka basis data ini untuk operasi normal dengan menggunakan prosedur tersimpan rds_finish_restore.

Penggunaan

exec msdb.dbo.rds_finish_restore @db_name='database_name';
catatan

Untuk menggunakan pendekatan ini, basis data harus berada dalam status RESTORING tanpa ada tugas pemulihan yang tertunda.

Prosedur rds_finish_restore tidak didukung dalam instans Multi-AZ.

Untuk menyelesaikan pemulihan basis data, gunakan master login. Atau gunakan login pengguna terbaru yang memulihkan basis data atau log dengan NORECOVERY.

Bekerja dengan basis data yang dipulihkan secara parsial

Menghilangkan basis data yang dipulihkan parsial

Untuk melepaskan basis data yang dipulihkan parsial (dibiarkan dalam status RESTORING), gunakan prosedur tersimpan rds_drop_database.

exec msdb.dbo.rds_drop_database @db_name='database_name';
catatan

Anda tidak dapat mengirimkan permintaan DROP basis data untuk basis data yang sudah memiliki tugas pemulihan tertunda atau sudah menyelesaikan tugas pemulihan.

Untuk melepaskan basis data, gunakan master login. Atau gunakan login pengguna terbaru yang memulihkan basis data atau log dengan NORECOVERY.

Perilaku pemulihan dan point-in-time pemulihan snapshot untuk database yang dipulihkan sebagian

Database yang dipulihkan sebagian dalam instance sumber (dibiarkan dalam status RESTORING) dijatuhkan dari instance target selama pemulihan dan pemulihan snapshot. point-in-time

Membatalkan tugas

Untuk membatalkan tugas pencadangan atau pemulihan, panggil prosedur yang tersimpan rds_cancel_task.

catatan

Anda tidak dapat membatalkan tugas FINISH_RESTORE.

Penggunaan

exec msdb.dbo.rds_cancel_task @task_id=ID_number;

Parameter berikut diperlukan:

  • @task_id – ID tugas yang dibatalkan. Anda bisa mendapatkan ID tugas dengan memanggil rds_task_status.

Melacak status tugas

Untuk melacak status tugas pencadangan dan pemulihan Anda, panggil prosedur tersimpan rds_task_status. Jika Anda tidak memberikan parameter apa pun, prosedur yang tersimpan akan memperlihatkan status semua tugas. Status tugas diperbarui kira-kira setiap dua menit sekali. Riwayat tugas disimpan selama 36 hari.

Penggunaan

exec msdb.dbo.rds_task_status [@db_name='database_name'], [@task_id=ID_number];

Parameter berikut ini bersifat opsional:

  • @db_name – Nama basis data yang status tugasnya akan ditampilkan.

  • @task_id – ID tugas untuk menunjukkan status tugas.

Contoh

contoh untuk menyusun daftar status untuk tugas tertentu
exec msdb.dbo.rds_task_status @task_id=5;
contoh untuk menyusun daftar status untuk basis data dan tugas tertentu
exec msdb.dbo.rds_task_status @db_name='my_database', @task_id=5;
contoh untuk menyusun daftar semua tugas dan statusnya di basis data tertentu
exec msdb.dbo.rds_task_status @db_name='my_database';
contoh untuk menyusun daftar semua tugas dan statusnya di instans saat ini
exec msdb.dbo.rds_task_status;

Respons

Prosedur tersimpan rds_task_status memunculkan kolom berikut.

Kolom Deskripsi

task_id

ID tugas.

task_type

Jenis tugas tergantung pada parameter input, sebagai berikut:

  • Untuk tugas pencadangan:

    • BACKUP_DB – Pencadangan basis data secara penuh

    • BACKUP_DB_DIFFERENTIAL – Pencadangan basis data secara diferensial

  • Untuk tugas pemulihan:

    • RESTORE_DB – Pemulihan basis data secara penuh dengan RECOVERY

    • RESTORE_DB_NORECOVERY – Pemulihan basis data secara penuh dengan NORECOVERY

    • RESTORE_DB_DIFFERENTIAL – Pemulihan basis data secara diferensial dengan RECOVERY

    • RESTORE_DB_DIFFERENTIAL_NORECOVERY – Pemulihan basis data secara diferensial dengan NORECOVERY

    • RESTORE_DB_LOG – Pemulihan log dengan RECOVERY

    • RESTORE_DB_LOG_NORECOVERY – Pemulihan log dengan NORECOVERY

  • Untuk tugas yang menyelesaikan pemulihan:

    • FINISH_RESTORE – Selesaikan pemulihan dan buka basis data

Amazon RDS membuat snapshot awal basis data setelah basis data terbuka saat menyelesaikan tugas pemulihan berikut:

  • RESTORE_DB

  • RESTORE_DB_DIFFERENTIAL

  • RESTORE_DB_LOG

  • FINISH_RESTORE

database_name

Nama basis data yang terkait dengan tugas.

% complete

Kemajuan tugas sebagai nilai persen.

duration (mins)

Durasi yang dihabiskan untuk tugas, dalam menit.

lifecycle

Status tugas. Status yang mungkin adalah sebagai berikut:

  • CREATED – Segera setelah Anda memanggil rds_backup_database atau rds_restore_database, tugas dibuat dan status diatur menjadi CREATED.

  • IN_PROGRESS – Setelah tugas pencadangan atau pemulihan dimulai, statusnya diatur menjadi IN_PROGRESS. Diperlukan hingga 5 menit agar status berubah dari CREATED ke IN_PROGRESS.

  • SUCCESS – Setelah tugas pencadangan atau pemulihan selesai, statusnya diatur menjadi SUCCESS.

  • ERROR – Setelah tugas pencadangan atau pemulihan gagal, statusnya diatur menjadi ERROR. Untuk informasi selengkapnya tentang kesalahan, lihat kolom task_info.

  • CANCEL_REQUESTED – Segera setelah Anda memanggil rds_cancel_task, status tugas diatur menjadi CANCEL_REQUESTED.

  • CANCELLED – Setelah tugas berhasil dibatalkan, status tugas diatur ke CANCELLED.

task_info

Informasi tambahan tentang tugas.

Jika terjadi kesalahan saat membuat backup atau memulihkan basis data, kolom ini berisi informasi tentang kesalahan tersebut. Untuk daftar kesalahan yang mungkin terjadi, dan strategi mitigasinya, lihat Pemecahan Masalah.

last_updated

Tanggal dan waktu status tugas terakhir diperbarui. Status akan diperbarui setelah setiap 5 persen kemajuan.

created_at

Tanggal dan waktu tugas dibuat.

S3_object_arn ARN menunjukkan awalan Amazon S3 dan nama file yang sedang dicadangkan atau dipulihkan.

overwrite_s3_backup_file

Nilai dari parameter @overwrite_s3_backup_file yang ditentukan saat memanggil tugas pencadangan. Untuk informasi selengkapnya, lihat Membuat backup basis data.

KMS_master_key_arn ARN untuk kunci KMS yang digunakan untuk enkripsi (untuk pencadangan) dan dekripsi (untuk pemulihan).
filepath Tidak berlaku untuk tugas pencadangan native dan pemulihan native.
overwrite_file Tidak berlaku untuk tugas pencadangan native dan pemulihan native.

Mengompresi file backup

Untuk menghemat ruang di bucket Amazon S3, Anda dapat mengompresi file backup. Untuk informasi selengkapnya tentang pengompresan file backup, lihat Backup compression dalam dokumentasi Microsoft.

Pengompresan file backup didukung untuk edisi basis data berikut:

  • Edisi Perusahaan Microsoft SQL Server

  • Edisi Standar Microsoft SQL Server

Untuk mengaktifkan kompresi untuk file backup Anda, jalankan kode berikut:

exec rdsadmin.dbo.rds_set_configuration 'S3 backup compression', 'true';

Untuk mengaktifkan kompresi untuk file backup Anda, jalankan kode berikut:

exec rdsadmin.dbo.rds_set_configuration 'S3 backup compression', 'false';

Pemecahan Masalah

Berikut adalah masalah yang mungkin Anda hadapi saat menggunakan pencadangan native dan pemulihan native.

Masalah Saran pemecahan masalah

Opsi pencadangan/pemulihan basis data belum diaktifkan atau sedang dalam proses diaktifkan. Silakan di coba lagi nanti.

Pastikan Anda telah menambahkan opsi SQLSERVER_BACKUP_RESTORE ke grup opsi DB yang terkait dengan instans DB Anda. Untuk informasi selengkapnya, lihat Menambahkan opsi pencadangan dan pemulihan native.

Akses Ditolak

Proses pencadangan atau pemulihan tidak dapat mengakses file backup. Hal ini biasanya disebabkan oleh masalah seperti berikut:

  • Mengacu pada bucket yang salah. Mengacu pada bucket yang menggunakan format yang salah. Mengacu pada nama file tanpa menggunakan ARN.

  • Izin yang salah pada file bucket. Misalnya, jika dibuat oleh akun lain yang mencoba mengaksesnya sekarang, tambahkan izin yang benar.

  • Kebijakan IAM yang tidak benar atau tidak lengkap. Peran IAM Anda harus mencakup semua elemen yang diperlukan, termasuk, misalnya, versi yang benar. Semua ini disoroti dalam Mengimpor dan mengekspor basis data SQL Server menggunakan pencadangan dan pemulihan native.

BACKUP basis data WITH COMPRESSION tidak didukung pada Edisi <edition_name>

Mengompresi file backup Anda hanya didukung untuk Edisi Perusahaan dan Edisi Standar Microsoft SQL Server.

Untuk informasi selengkapnya, lihat Mengompresi file backup.

Kunci <ARN> tidak ada

Anda mencoba memulihkan backup terenkripsi, tetapi tidak menyediakan kunci enkripsi yang valid. Periksa kunci enkripsi Anda dan coba lagi.

Untuk informasi selengkapnya, lihat Memulihkan basis data.

Silakan menerbitkan ulang tugas dengan properti ketik dan timpa yang benar

Jika Anda mencoba membuat backup basis data dan memberikan nama file yang sudah ada, tetapi mengatur properti overwrite ke false, operasi penyimpanan gagal. Untuk memperbaiki kesalahan ini, berikan nama file yang belum ada, atau atur properti overwrite ke true.

Untuk informasi selengkapnya, lihat Membuat backup basis data.

Mungkin saja Anda ingin memulihkan basis data Anda, tetapi memanggil prosedur tersimpan rds_backup_database secara tidak sengaja. Dalam hal ini, panggil prosedur tersimpan rds_restore_database.

Untuk informasi selengkapnya, lihat Memulihkan basis data.

Jika Anda ingin memulihkan basis data dan memanggil prosedur tersimpan rds_restore_database, pastikan bahwa Anda memberikan nama file backup yang valid.

Untuk informasi selengkapnya, lihat Menggunakan pencadangan dan pemulihan native.

Silakan tentukan bucket yang berada di wilayah yang sama dengan instans RDS

Anda tidak dapat mencadangkan, atau memulihkan dari, bucket Amazon S3 di AWS Wilayah lain dari instans Amazon RDS DB Anda. Anda dapat menggunakan replikasi Amazon S3 untuk menyalin file cadangan ke Wilayah yang benar. AWS

Untuk informasi lebih lanjut, lihat Replikasi Lintas Wilayah dalam dokumentasi Amazon S3.

Bucket yang ditentukan tidak ada

Pastikan bahwa Anda telah memberikan ARN yang benar untuk bucket dan file Anda, dalam format yang benar.

Untuk informasi selengkapnya, lihat Menggunakan pencadangan dan pemulihan native.

Pengguna <ARN> tidak berwenang untuk melakukan <kms action> pada sumber daya <ARN>

Anda meminta operasi terenkripsi, tetapi tidak memberikan izin yang benar AWS KMS . Verifikasi bahwa Anda memiliki izin yang benar, atau tambahkan.

Untuk informasi selengkapnya, lihat Menyiapkan pencadangan dan pemulihan native.

Tugas Pemulihan tidak dapat memulihkan dari lebih dari 10 file backup. Kurangi jumlah file yang dicocokkan dan coba lagi.

Kurangi jumlah file yang ingin Anda gunakan untuk pemulihan. Anda dapat menjadikan setiap file lebih besar kalau perlu.

Basis data 'database_name' sudah ada. Dua basis data yang berbeda besar huruf atau aksen tidak diperbolehkan. Pilih nama basis data yang berbeda.

Anda tidak dapat memulihkan basis data dengan nama yang sama seperti basis data yang sudah ada. Nama basis data bersifat unik.