All Products
Search
Document Center

ApsaraDB RDS:Migrasi data cadangan inkremental (untuk SQL Server 2008 R2 dengan cloud disk dan SQL Server 2012 atau versi lebih baru)

Last Updated:Mar 29, 2026

Gunakan metode migrasi ini jika aplikasi Anda memerlukan downtime dalam hitungan menit. Metode ini melibatkan staging cadangan penuh melalui Object Storage Service (OSS), memulihkannya ke ApsaraDB RDS for SQL Server, lalu menerapkan cadangan log atau diferensial untuk menutup celah data sebelum cutover. Karena migrasi ini menggunakan file backup fisik, database tujuan merupakan salinan persis dari sumber—termasuk fragmentasi indeks dan informasi statistik yang tidak dapat dipertahankan oleh migrasi logis.

Penting

Jika aplikasi Anda dapat mentoleransi downtime hingga 2 jam dan ukuran database kurang dari 100 GB, gunakan migrasi cadangan penuh sebagai gantinya. Metode ini hanya memigrasikan satu database dalam satu waktu.

Cara kerja

Migrasi berjalan dalam dua fase:

  1. Migrasi data penuh: Backup database sumber, unggah file cadangan penuh ke bucket OSS, lalu pulihkan ke instans RDS melalui konsol ApsaraDB RDS.

  2. Fase inkremental: Lakukan backup dan unggah berulang file cadangan log atau diferensial untuk mempersempit celah data. Saat cadangan log terakhir berukuran di bawah 500 MB, hentikan penulisan ke database sumber, unggah cadangan log terakhir, lalu buka database tujuan.

Penting

Database tujuan tetap berada dalam status In Recovery (Edisi Ketersediaan Tinggi RDS) atau status Restoring (Edisi Dasar RDS) selama proses migrasi. Database tersebut tidak dapat dibaca atau ditulis hingga Anda membukanya pada langkah terakhir.

Prasyarat

Instans SQL Server yang dikelola sendiri:

  • Menggunakan model pemulihan FULL. Model pemulihan SIMPLE tidak mendukung backup log transaksi, yang diperlukan untuk migrasi inkremental.

  • Jalankan DBCC CHECKDB pada database sumber dan pastikan tidak ada error alokasi atau error konsistensi yang dilaporkan:

    CHECKDB found 0 allocation errors and 0 consistency errors in database 'xxx'.
    DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Instans RDS:

  • Menjalankan SQL Server 2012 atau versi lebih baru, atau SQL Server 2008 R2 dengan cloud disk.

  • Tidak ada database yang sudah ada di instans RDS yang memiliki nama sama dengan database sumber, dan tidak ada file database yang tidak terpasang dengan nama yang sama. Konflik penamaan menyebabkan proses restore gagal.

  • Kapasitas penyimpanan tersedia lebih besar dari ukuran file data yang akan dimigrasikan. Perluas kapasitas penyimpanan sebelum memulai jika diperlukan.

Authorization

Akun layanan ApsaraDB RDS harus memiliki akses ke bucket OSS Anda. Untuk memverifikasi dan memberikan otorisasi:

  1. Pada halaman Backup and Restoration instans RDS Anda, klik Migrate OSS Backup Data to RDS.

  2. Pada wizard Import Guide, klik Next dua kali hingga mencapai langkah 3. Import Data.

  3. Periksa sudut kiri bawah halaman. Jika muncul pesan Anda telah mengizinkan akun layanan resmi RDS mengakses OSS Anda, berarti otorisasi telah selesai. Jika tidak, klik tautan Authorization URL untuk memberikan otorisasi.

image

Jika menggunakan Pengguna Resource Access Management (RAM), persyaratan tambahan berikut berlaku:

  • Pengguna RAM memiliki izin AliyunOSSFullAccess dan AliyunRDSFullAccess. Lihat Kelola izin OSS menggunakan RAM dan Kelola izin ApsaraDB RDS menggunakan RAM.

  • Akun Alibaba Cloud Anda telah membuat kebijakan akses kustom dan melampirkannya ke pengguna RAM:

    import com.aliyun.oss.*;
    import com.aliyun.oss.common.auth.*;
    import com.aliyun.oss.common.comm.SignVersion;
    import com.aliyun.oss.internal.Mimetypes;
    import com.aliyun.oss.model.*;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Demo {
    
        public static void main(String[] args) throws Exception {
            // Ganti dengan titik akhir untuk wilayah bucket Anda.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Kredensial dibaca dari variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            String bucketName = "examplebucket";
            // Jalur objek lengkap di dalam bucket, tidak termasuk nama bucket.
            String objectName = "exampledir/exampleobject.txt";
            // Jalur lokal lengkap dari file cadangan yang akan diunggah.
            String filePath = "D:\\localpath\\examplefile.txt";
            // Pengidentifikasi wilayah untuk bucket, misalnya "cn-hangzhou".
            String region = "cn-hangzhou";
    
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
            OSS ossClient = OSSClientBuilder.create()
                    .endpoint(endpoint)
                    .credentialsProvider(credentialsProvider)
                    .clientConfiguration(clientBuilderConfiguration)
                    .region(region)
                    .build();
    
            try {
                // Mulai unggah multi-bagian.
                InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectName);
                ObjectMetadata metadata = new ObjectMetadata();
                if (metadata.getContentType() == null) {
                    metadata.setContentType(Mimetypes.getInstance().getMimetype(new File(filePath), objectName));
                }
                request.setObjectMetadata(metadata);
                InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request);
                String uploadId = upresult.getUploadId();
    
                List<PartETag> partETags = new ArrayList<PartETag>();
                // Setiap bagian berukuran 1 MB; sesuaikan berdasarkan ukuran file dan kondisi jaringan Anda.
                final long partSize = 1 * 1024 * 1024L;
    
                final File sampleFile = new File(filePath);
                long fileLength = sampleFile.length();
                int partCount = (int) (fileLength / partSize);
                if (fileLength % partSize != 0) {
                    partCount++;
                }
    
                // Unggah setiap bagian secara berurutan.
                for (int i = 0; i < partCount; i++) {
                    long startPos = i * partSize;
                    long curPartSize = (i + 1 == partCount) ? (fileLength - startPos) : partSize;
                    UploadPartRequest uploadPartRequest = new UploadPartRequest();
                    uploadPartRequest.setBucketName(bucketName);
                    uploadPartRequest.setKey(objectName);
                    uploadPartRequest.setUploadId(uploadId);
                    InputStream instream = new FileInputStream(sampleFile);
                    instream.skip(startPos);
                    uploadPartRequest.setInputStream(instream);
                    // Bagian terakhir bisa lebih kecil dari 100 KB; semua bagian lainnya harus berukuran minimal 100 KB.
                    uploadPartRequest.setPartSize(curPartSize);
                    // Nomor bagian berkisar dari 1 hingga 10.000.
                    uploadPartRequest.setPartNumber(i + 1);
                    UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);
                    partETags.add(uploadPartResult.getPartETag());
                    instream.close();
                }
    
                // Selesaikan unggahan. OSS merakit semua bagian secara berurutan.
                CompleteMultipartUploadRequest completeMultipartUploadRequest =
                        new CompleteMultipartUploadRequest(bucketName, objectName, uploadId, partETags);
                CompleteMultipartUploadResult completeMultipartUploadResult = ossClient.completeMultipartUpload(completeMultipartUploadRequest);
                System.out.println("Unggahan berhasil, ETag: " + completeMultipartUploadResult.getETag());
    
            } catch (OSSException oe) {
                System.out.println("OSS menolak permintaan: " + oe.getErrorMessage()
                        + " (Kode: " + oe.getErrorCode() + ", ID Permintaan: " + oe.getRequestId() + ")");
            } catch (ClientException ce) {
                System.out.println("Kesalahan klien saat berkomunikasi dengan OSS: " + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }

Catatan penggunaan

ItemDetail
ScopeSatu database per tugas migrasi. Untuk memigrasikan beberapa database, lihat Migrasi data dari instans SQL Server yang dikelola sendiri ke instans ApsaraDB RDS for SQL Server.
Version compatibilityMigrasi dari versi SQL Server yang lebih baru ke versi yang lebih lama tidak didukung.
RAM roleSetelah otorisasi, sebuah peran bernama AliyunRDSImportRole dibuat di RAM. Jangan ubah atau hapus peran ini. Jika Anda melakukannya, lakukan otorisasi ulang menggunakan wizard migrasi.
AccountsSetelah migrasi, akun dari instans yang dikelola sendiri tidak ikut terbawa. Buat akun baru di konsol ApsaraDB RDS.
OSS filesJangan hapus file backup dari bucket OSS sebelum migrasi selesai.
Backup filenamesTidak boleh mengandung karakter khusus seperti !@#$%^&*()_+-=.
Backup file suffixes.bak (cadangan penuh), .diff (cadangan diferensial), .trn atau .log (cadangan log). Jenis file lain tidak dikenali. File .bak dapat berisi cadangan penuh, diferensial, atau log — ekstensi tidak menentukan jenis backup.
Converting `.lbak` filesJika Anda mengunduh cadangan log dari konsol ApsaraDB RDS (format: .zip.log), ubah namanya menjadi .zip, ekstrak isinya, lalu ubah nama file hasil ekstraksi database_name.lbak menjadi .bak, kemudian unggah sebagai cadangan log inkremental.

Contoh timeline migrasi

Contoh berikut menunjukkan cara menyelesaikan migrasi dengan downtime aplikasi kurang dari 5 menit.

FaseLangkahWaktuDetail
Migrasi data penuhPersiapanSebelum 00:00Jalankan DBCC CHECKDB, matikan sistem backup untuk database sumber, dan atur model pemulihan ke FULL.
Langkah 100:01Lakukan backup penuh. Perkiraan durasi: ~1 jam.
Langkah 202:00Unggah file backup penuh ke OSS. Perkiraan durasi: ~1 jam.
Langkah 303:00Pulihkan dari backup penuh di konsol ApsaraDB RDS. Perkiraan durasi: ~19 jam.
Fase inkrementalLangkah 422:00Lakukan backup log pada database sumber. Perkiraan durasi: ~20 menit.
Langkah 522:20Unggah file backup log ke OSS. Perkiraan durasi: ~10 menit.
Langkah 622:30Ulangi Langkah 4–5 hingga backup log terakhir berukuran di bawah 500 MB. Hentikan semua penulisan ke database sumber, lakukan backup log terakhir, lalu unggah.
Open the databaseLangkah 722:34Unggahan inkremental terakhir selesai (~4 menit).
Langkah 822:35Buka database tujuan. Dengan mode Asynchronous DBCC, database online dalam waktu 1 menit.

Langkah 1: Backup database sumber

  1. Unduh skrip backup dan buka di SQL Server Management Studio (SSMS).

  2. Atur parameter berikut:

    ParameterDeskripsi
    @backup_databases_listNama database sumber. Pisahkan beberapa nama database dengan titik koma (;) atau koma (,).
    @backup_typeJenis backup: FULL (backup penuh), DIFF (backup diferensial), atau LOG (backup log).
    @backup_folderDirektori pada instans yang dikelola sendiri untuk menyimpan file backup. Direktori ini dibuat otomatis jika belum ada.
    @is_run1 untuk menjalankan backup; 0 hanya untuk pemeriksaan.
  3. Jalankan skrip backup. File .bak akan dihasilkan terlepas dari jenis backup yang dipilih.

Langkah 2: Unggah file backup ke OSS

File backup harus berada di bucket OSS yang berada di wilayah yang sama dengan instans RDS Anda. Transfer antar wilayah yang sama menggunakan jaringan internal, sehingga menghindari biaya egress internet dan meningkatkan kecepatan unggah.

Siapkan bucket OSS

Jika bucket sudah ada, pastikan memenuhi persyaratan berikut:

  • Jenis penyimpanan adalah Standard (Infrequent Access, Archive, Cold Archive, dan Deep Cold Archive tidak didukung).

  • Enkripsi data tidak diaktifkan.

Jika belum ada bucket, buat bucket baru:

Penting

Bucket ini hanya digunakan untuk migrasi. Setelah migrasi selesai, hapus bucket untuk menghindari biaya yang tidak perlu dan potensi eksposur data. Jangan aktifkan enkripsi data.

  1. Login ke konsol OSS, klik Buckets, lalu klik Create Bucket.

  2. Konfigurasikan parameter kunci:

    ParameterDeskripsiContoh
    Bucket nameUnik secara global; 3–63 karakter; hanya huruf kecil, angka, dan tanda hubung; harus diawali dan diakhiri dengan huruf kecil atau angka.migratetest
    RegionHarus sesuai dengan wilayah instans RDS Anda (dan instans Elastic Compute Service (ECS) jika Anda mengunggah melalui jaringan internal).China (Hangzhou)
    Storage classPilih Standard.Standard
  3. Pertahankan nilai default untuk semua parameter lainnya dan selesaikan pembuatan.

Unggah file backup

Pilih metode unggah berdasarkan ukuran file:

Metode 1: ossbrowser (direkomendasikan untuk sebagian besar kasus)

  1. Unduh ossbrowser.

  2. Ekstrak paket yang diunduh dan jalankan aplikasi (misalnya, oss-browser.exe pada Windows x64).

  3. Pilih AK sebagai metode login, masukkan AccessKeyId dan AccessKeySecret Anda, lalu klik Log On.

    Jaga kerahasiaan kredensial AccessKey Anda. Lihat Buat Pasangan Kunci Akses.

    Login to ossbrowser

  4. Klik bucket target untuk membukanya.

    Open a bucket

  5. Klik 上传图标, pilih file backup, lalu klik Open untuk mengunggah.

Metode 2: Konsol OSS (file di bawah 5 GB)

  1. Login ke konsol OSS.

  2. Klik Buckets, lalu klik nama bucket target.

    Open bucket in console

  3. Pada bagian Objects, klik Upload Object.

    Upload object button

  4. Seret dan lepas file backup ke area Files to Upload, atau klik Select Files untuk menelusuri.

    Select files

  5. Klik Upload Object di bagian bawah halaman.

Metode 3: Unggah multipart OSS API (file di atas 5 GB)

Untuk file backup besar, gunakan OSS Java SDK dengan unggah multipart. Contoh berikut membaca kredensial dari variabel lingkungan. Atur OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET sebelum menjalankan. Untuk dokumentasi lengkap, lihat Unggah multi-bagian.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.internal.Mimetypes;
import com.aliyun.oss.model.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Ganti dengan endpoint wilayah bucket Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Kredensial dibaca dari variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        String bucketName = "examplebucket";
        // Jalur objek lengkap dalam bucket, tanpa nama bucket.
        String objectName = "exampledir/exampleobject.txt";
        // Jalur lokal lengkap file backup yang akan diunggah.
        String filePath = "D:\\localpath\\examplefile.txt";
        // Identifikasi wilayah bucket, misalnya "cn-hangzhou".
        String region = "cn-hangzhou";

        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Mulai unggah multipart.
            InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectName);
            ObjectMetadata metadata = new ObjectMetadata();
            if (metadata.getContentType() == null) {
                metadata.setContentType(Mimetypes.getInstance().getMimetype(new File(filePath), objectName));
            }
            request.setObjectMetadata(metadata);
            InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request);
            String uploadId = upresult.getUploadId();

            List<PartETag> partETags = new ArrayList<PartETag>();
            // Setiap bagian berukuran 1 MB; sesuaikan berdasarkan ukuran file dan kondisi jaringan.
            final long partSize = 1 * 1024 * 1024L;

            final File sampleFile = new File(filePath);
            long fileLength = sampleFile.length();
            int partCount = (int) (fileLength / partSize);
            if (fileLength % partSize != 0) {
                partCount++;
            }

            // Unggah setiap bagian secara berurutan.
            for (int i = 0; i < partCount; i++) {
                long startPos = i * partSize;
                long curPartSize = (i + 1 == partCount) ? (fileLength - startPos) : partSize;
                UploadPartRequest uploadPartRequest = new UploadPartRequest();
                uploadPartRequest.setBucketName(bucketName);
                uploadPartRequest.setKey(objectName);
                uploadPartRequest.setUploadId(uploadId);
                InputStream instream = new FileInputStream(sampleFile);
                instream.skip(startPos);
                uploadPartRequest.setInputStream(instream);
                // Bagian terakhir bisa lebih kecil dari 100 KB; bagian lain minimal 100 KB.
                uploadPartRequest.setPartSize(curPartSize);
                // Nomor bagian berkisar dari 1 hingga 10.000.
                uploadPartRequest.setPartNumber(i + 1);
                UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);
                partETags.add(uploadPartResult.getPartETag());
                instream.close();
            }

            // Selesaikan unggah. OSS merakit semua bagian secara berurutan.
            CompleteMultipartUploadRequest completeMultipartUploadRequest =
                    new CompleteMultipartUploadRequest(bucketName, objectName, uploadId, partETags);
            CompleteMultipartUploadResult completeMultipartUploadResult = ossClient.completeMultipartUpload(completeMultipartUploadRequest);
            System.out.println("Unggah berhasil, ETag: " + completeMultipartUploadResult.getETag());

        } catch (OSSException oe) {
            System.out.println("Permintaan ditolak OSS: " + oe.getErrorMessage()
                    + " (Kode: " + oe.getErrorCode() + ", ID Permintaan: " + oe.getRequestId() + ")");
        } catch (ClientException ce) {
            System.out.println("Error klien saat berkomunikasi dengan OSS: " + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Langkah 3: Buat tugas migrasi

  1. Buka halaman Instances. Di bilah navigasi atas, pilih wilayah instans RDS Anda, lalu klik ID instans.

  2. Di panel navigasi kiri, klik Backup and Restoration.

  3. Di bagian atas halaman, klik Migrate OSS Backup Data to RDS.

  4. Pada wizard Import Guide, klik Next dua kali hingga mencapai langkah Import Data.

    Jika ini pertama kalinya Anda menggunakan wizard migrasi, klik Authorization dan selesaikan proses otorisasi. Tanpa otorisasi, daftar drop-down OSS Bucket akan tetap kosong.
  5. Konfigurasi parameter berikut, lalu klik OK.

    ParameterDeskripsi
    Database nameNama database tujuan pada instans RDS Anda. Tidak boleh bertabrakan dengan database yang sudah ada atau file database yang tidak terpasang pada instans tersebut.
    OSS bucketBucket OSS yang berisi file backup penuh Anda.
    OSS fileKlik ikon kaca pembesar untuk mencari file backup berdasarkan awalan nama file. Hasil menampilkan nama file, ukuran, dan waktu modifikasi terakhir.
    Cloud migration methodPilih Access Pending (Incremental Backup). Opsi ini menjaga database dalam status restoring sehingga backup inkremental dapat diterapkan (BackupMode = UPDF, IsOnlineDB = False). Jangan pilih Immediate Access (Full Backup) — opsi ini membuka database segera setelah backup penuh dan tidak menerima backup inkremental (BackupMode = FULL, IsOnlineDB = True).
  6. Klik Refresh untuk memantau status tugas. Jika tugas gagal, lihat Pemecahan Masalah.

Langkah 4: Impor file backup log atau diferensial

Setelah backup penuh dipulihkan, terapkan backup inkremental untuk menutup celah data.

  1. Buka halaman Instances, pilih wilayah Anda, lalu klik ID instans.

  2. Di panel navigasi kiri, klik Backup and Restoration, lalu klik tab Cloud Migration Records of Backup Data.

  3. Temukan database tujuan dan klik Upload Incremental Files di kolom Task actions. Pilih file inkremental dan klik OK.

Ulangi langkah ini untuk setiap file backup log, unggah secara berurutan sesuai kronologis.

Pastikan file backup log atau diferensial terakhir berukuran di bawah 500 MB. Hentikan semua penulisan ke database sumber sebelum membuat backup terakhir untuk memastikan konsistensi data.

Langkah 5: Buka database

Setelah semua file backup diimpor, buka database tujuan agar tersedia untuk operasi baca dan tulis.

  1. Buka halaman Instances, pilih wilayah Anda, lalu klik ID instans.

  2. Di panel navigasi kiri, klik Backup and Restoration, lalu klik tab Cloud Migration Records of Backup Data.

  3. Temukan database tujuan dan klik Open Database di kolom Task actions.

  4. Pilih mode pemeriksaan konsistensi dan klik OK.

    ModePerilakuGunakan saat
    Asynchronous DBCCMembuka database segera, lalu menjalankan DBCC CHECKDB di latar belakang. Meminimalkan downtime. (CheckDBMode = AsyncExecuteDBCheck)Aplikasi sensitif terhadap downtime tetapi hasil pemeriksaan konsistensi tidak segera kritis.
    Synchronous DBCCMenjalankan DBCC CHECKDB sebelum membuka database. Memperpanjang waktu pembukaan. (CheckDBMode = SyncExecuteDBCheck)Hasil pemeriksaan konsistensi diperlukan sebelum database aktif.

Langkah 6: Lihat catatan migrasi

Buka Backup and Restoration > Cloud Migration Records of Backup Data untuk meninjau semua tugas migrasi. Klik View File Details di kolom Task actions untuk melihat status dan detail setiap file backup yang terkait dengan tugas.

Setelah migrasi selesai, ApsaraDB RDS secara otomatis melakukan backup database sesuai kebijakan backup otomatis yang dikonfigurasi untuk instans Anda. Untuk memicu backup segera, jalankan backup manual.

Pemecahan Masalah

Untuk error yang terjadi selama migrasi backup penuh, lihat Pemecahan Masalah dalam topik ini.

Error berikut khusus terjadi pada migrasi backup inkremental.

Database tujuan gagal dibuka

*Apakah edisi SQL Server sumber lebih tinggi daripada edisi RDS tujuan?*

Pesan error: Failed to open database xxx.

Instans SQL Server yang dikelola sendiri menggunakan fitur (seperti kompresi data atau partisi tabel) yang tidak didukung oleh edisi RDS SQL Server tujuan. Misalnya, jika sumber menjalankan Edisi Perusahaan dan tujuan menjalankan Edisi Web, fitur khusus Edisi Perusahaan menyebabkan error ini.

Solusi:

Ketidaksesuaian LSN dalam rantai backup

*Apakah backup inkremental diunggah tidak sesuai urutan kronologis?*

Pesan error: The log in this backup set begins at LSN XXX, which is too recent to apply to the database. RESTORE LOG is terminating abnormally.

Nomor urutan log (LSN) dalam file backup inkremental tidak berlanjut dari backup sebelumnya. Hal ini terjadi ketika file inkremental diterapkan ke backup dasar yang salah atau diunggah tidak berurutan.

Solusi: Unggah file backup inkremental secara ketat sesuai urutan kronologis, sesuai urutan pembuatannya.

Error konsistensi ditemukan setelah Asynchronous DBCC

*Apakah DBCC CHECKDB melaporkan error konsistensi pada database tujuan?*

Pesan error: asynchronously DBCC checkdb failed: CHECKDB found 0 allocation errors and 2 consistency errors in table 'XXX' (object ID XXX).

Pemeriksaan konsistensi latar belakang menemukan error pada database tujuan, mengindikasikan adanya korupsi pada data sumber.

Solusi:

  • Jalankan pernyataan berikut pada database tujuan untuk memperbaiki error (hal ini dapat menyebabkan kehilangan data):

    Penting

    Pernyataan ini dapat menyebabkan kehilangan data. Gunakan hanya jika dapat diterima.

    DBCC CHECKDB (DBName, REPAIR_ALLOW_DATA_LOSS)
  • Atau, perbaiki database sumber terlebih dahulu, lalu migrasi ulang:

    DBCC CHECKDB (DBName, REPAIR_ALLOW_DATA_LOSS)

File backup penuh dipilih saat file inkremental yang diharapkan

*Apakah Anda memilih file backup penuh pada langkah Upload Incremental Files?*

Pesan kesalahan: Set backup (xxx) merupakan backup FULL Database; kami hanya menerima log transaksi atau backup diferensial.

Setelah backup penuh dipulihkan, hanya file backup log atau diferensial yang diterima pada langkah Upload Incremental Files.

Solusi: Pilih file backup log atau diferensial.

Batas jumlah database terlampaui

*Apakah instans RDS telah mencapai jumlah maksimum database?*

Pesan kesalahan: Migrasi database (xxx) gagal karena melebihi batas jumlah database yang diizinkan.

Solusi: Migrasi ke instans RDS lain, atau hapus database yang tidak lagi diperlukan.

Masalah izin pengguna RAM

*Apakah tombol OK tampak redup saat mengonfigurasi tugas migrasi?*

Pengguna RAM kemungkinan tidak memiliki izin yang diperlukan. Verifikasi bahwa izin AliyunOSSFullAccess, AliyunRDSFullAccess, dan kebijakan kustom AliyunRDSImportRole telah diberikan (lihat Prasyarat).

*Apakah pengguna RAM mendapat error no permission saat memberikan izin AliyunRDSImportRole?*

Berikan sementara izin AliyunRAMFullAccess kepada pengguna RAM menggunakan akun Alibaba Cloud. Lihat Gunakan RAM untuk mengelola izin ApsaraDB RDS. Hapus izin ini setelah penyiapan selesai.

Referensi API

APIDeskripsi
CreateMigrateTaskMembuat tugas migrasi yang memulihkan file backup dari OSS ke instans ApsaraDB RDS for SQL Server.
CreateOnlineDatabaseTaskMembuka database tujuan setelah semua file backup diimpor.
DescribeMigrateTasksMenampilkan daftar tugas migrasi untuk instans ApsaraDB RDS for SQL Server.
DescribeOssDownloadsMengambil detail file untuk tugas migrasi.