All Products
Search
Document Center

Object Storage Service:FAQ tentang replikasi data

Last Updated:May 07, 2026

Topik ini menjawab pertanyaan yang sering diajukan mengenai replikasi data untuk skenario same-account dan cross-account, termasuk replikasi same-region dan cross-region, serta menyediakan metode troubleshooting.

Mengapa saya tidak dapat membuat aturan replikasi data?

  1. Periksa apakah Anda memiliki izin yang diperlukan.

    • Izin yang hilang untuk RAM user

      • Saat RAM user mencoba membuat aturan replikasi data di Konsol, tombol OK tidak tersedia.

        • Penyebab: Izin oss:PutBucketReplication tidak ada.

        • Solusi: Berikan izin oss:PutBucketReplication kepada RAM user tersebut.

      • Saat RAM user membuat aturan replikasi data di Konsol, peran yang dibuat secara kustom tidak ditampilkan untuk dipilih.

        • Penyebab: Izin ram:ListRoles tidak ada.

        • Solusi: Berikan izin ram:ListRoles kepada RAM user tersebut.

      Untuk informasi lebih lanjut, lihat Berikan kebijakan kustom kepada RAM user.

    • Izin yang hilang untuk RAM role

      • Replikasi same-account

        Untuk replikasi same-account, Anda harus memberikan izin kepada RAM role agar dapat melakukan operasi replikasi antara bucket sumber dan bucket tujuan. Untuk informasi lebih lanjut mengenai cara membuat dan memberi otorisasi RAM role, lihat Jenis peran.

      • Replikasi cross-account

        Untuk replikasi cross-account dari Akun A ke Akun B, Anda harus menggunakan Akun A untuk memberikan izin kepada RAM role agar dapat mereplikasi data dari bucket sumber. Anda juga harus menggunakan Akun B untuk memberikan izin kepada RAM role agar dapat menulis objek yang direplikasi ke bucket tujuan. Untuk informasi lebih lanjut mengenai cara membuat dan memberi otorisasi RAM role, lihat Berikan izin kepada RAM role.

  2. Periksa apakah status versioning bucket sumber dan bucket tujuan sama.

    Versioning bucket sumber dan bucket tujuan harus sama-sama diaktifkan atau sama-sama dinonaktifkan.

  3. Periksa apakah informasi endpoint atau AccessKey benar.

    Saat Anda membuat aturan replikasi data menggunakan SDK atau ossutil, periksa konfigurasi berikut:

    • Periksa apakah endpoint untuk wilayah bucket sumber dan bucket tujuan benar. Untuk informasi lebih lanjut, lihat Wilayah dan endpoint.

    • Periksa apakah AccessKey yang digunakan untuk aturan replikasi benar. Untuk informasi lebih lanjut, lihat Lihat Informasi AccessKey RAM user.

Mengapa objek tidak direplikasi ke bucket tujuan?

Jika objek tidak direplikasi ke bucket tujuan setelah Anda mengonfigurasi aturan replikasi data, lakukan troubleshooting dengan memeriksa kemungkinan penyebab berikut.

  1. Periksa apakah bucket sumber dikonfigurasi dengan benar.

    • Periksa apakah status replikasi data diatur ke Enabled.

    • Periksa apakah awalan (prefix) benar.

      • Replikasi objek tertentu: Untuk mereplikasi hanya objek dengan awalan tertentu, atur parameter Prefix ke awalan yang diinginkan. Misalnya, jika Anda mengatur awalan ke log, OSS hanya akan mereplikasi objek yang namanya diawali dengan log, seperti log/date1.txt dan log/date2.txt. OSS tidak akan mereplikasi objek yang tidak sesuai dengan awalan tersebut, seperti date3.txt.

        Catatan

        Awalan tidak boleh diakhiri dengan tanda bintang (*), seperti log/*, dan tidak boleh mencakup nama bucket.

      • Replikasi semua objek: Untuk mereplikasi semua objek dari bucket sumber, biarkan parameter Prefix kosong.

  2. Periksa apakah replikasi objek yang sudah ada diaktifkan. Objek yang sudah ada tidak akan direplikasi jika opsi ini dinonaktifkan.

  3. Periksa apakah objek di bucket sumber merupakan replika dari aturan replikasi lain.

    Jika suatu objek di dalam bucket merupakan replika yang dibuat oleh aturan replikasi lain, OSS tidak akan mereplikasi objek tersebut lagi. Misalnya, jika Anda mengonfigurasi replikasi dari Bucket A ke Bucket B, dan dari Bucket B ke Bucket C, objek yang direplikasi dari Bucket A ke Bucket B tidak akan direplikasi ke Bucket C.

  4. Periksa apakah objek dienkripsi menggunakan KMS. Jika ya, Anda harus mengaktifkan replikasi untuk objek yang dienkripsi KMS.

    Jika objek di bucket sumber atau bucket tujuan dienkripsi menggunakan metode enkripsi sisi server yang menggunakan CMK yang dikelola oleh KMS (SSE-KMS), Anda harus memilih Copy dan mengonfigurasi parameter berikut:

    kms

    • CMK ID: Tentukan CMK untuk mengenkripsi objek di bucket tujuan.

      Anda harus membuat CMK di Konsol KMS di wilayah yang sama dengan bucket tujuan. Untuk informasi lebih lanjut, lihat Buat CMK.

    • RAM Role Name: Otorisasi RAM role untuk melakukan enkripsi KMS pada objek di bucket tujuan.

      • New RAM Role: Membuat RAM role baru untuk melakukan enkripsi KMS pada objek tujuan. Nama peran mengikuti format kms-replication-<SourceBucketName>-<DestinationBucketName>.

      • AliyunOSSRole: Menggunakan peran terkait layanan AliyunOSSRole untuk melakukan enkripsi KMS pada objek tujuan. Jika Anda belum membuat peran ini, OSS akan membuatnya secara otomatis saat Anda memilih opsi ini.

      Catatan

      Jika Anda membuat RAM role atau mengubah izin peran yang sudah ada, pastikan Anda menyambungkan kebijakan AliyunOSSFullAccess ke peran tersebut. Jika tidak, replikasi data mungkin gagal.

    Anda dapat memanggil operasi HeadObject untuk menanyakan status enkripsi objek sumber dan operasi GetBucketEncryption untuk menanyakan status enkripsi bucket tujuan.

  5. Periksa apakah progres replikasi telah mencapai 100%.

    Replikasi data adalah proses asinkron yang dapat memakan waktu beberapa menit hingga beberapa jam, tergantung pada ukuran data. Jika Anda mereplikasi objek besar, tunggu hingga replikasi selesai. Setelah progres replikasi mencapai 100%, periksa apakah objek tersebut ada di bucket tujuan.

Mengapa operasi penghapusan tidak disinkronkan ke bucket tujuan?

  • Penyebab 1: Kebijakan retensi (WORM) dikonfigurasi untuk bucket tujuan.

    Sebelum periode retensi berakhir, tidak ada pengguna—termasuk pemilik sumber daya—yang dapat menghapus objek dari bucket tersebut.

  • Penyebab 2: Apakah operasi penghapusan direplikasi bergantung pada status versioning bucket sumber dan kebijakan replikasi data.

    Status versioning bucket sumber

    Jenis permintaan

    Kebijakan replikasi data

    Hasil

    Unversioned

    Initiate a Delete request

    Add/Change

    Objek hanya dihapus dari bucket sumber. Objek di bucket tujuan tidak dihapus.

    Add/Delete/Change

    Objek dihapus dari bucket sumber maupun bucket tujuan.

    Versioning enabled

    Initiate a Delete request without specifying an object version ID

    Add/Change

    Objek tidak dihapus dari kedua bucket. Sebagai gantinya, OSS membuat penanda hapus di bucket sumber, dan penanda hapus ini direplikasi ke bucket tujuan.

    Add/Delete/Change

    Initiate a Delete request specifying an object version ID

    Add/Change

    Versi objek yang ditentukan hanya dihapus dari bucket sumber. Tidak dihapus dari bucket tujuan.

    Add/Delete/Change

    Versi objek yang ditentukan dihapus dari bucket sumber maupun bucket tujuan.

Memverifikasi konsistensi data

Anda dapat menjalankan kode berikut untuk memverifikasi konsistensi data antara bucket sumber dan bucket tujuan setelah tugas replikasi selesai:

import com.aliyun.oss.OSSClient;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.model.*;
import com.aliyun.oss.OSSException;
import com.aliyuncs.exceptions.ClientException;

public class Demo {
    public static void main(String[] args) throws ClientException {
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan Anda telah mengonfigurasi variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Ganti srcEndpoint dengan endpoint wilayah tempat bucket sumber berada.
        String srcEndpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        OSSClient srcClient = new OSSClient(srcEndpoint , credentialsProvider);
        // Tentukan nama bucket sumber.
        String srcBucketName = "src-replication-bucket";

        // Ganti destEndpoint dengan endpoint wilayah tempat bucket tujuan berada.
        String destEndpoint = "https://oss-cn-beijing.aliyuncs.com";
        OSSClient destClient = new OSSClient(destEndpoint, credentialsProvider);
        // Tentukan nama bucket tujuan.
        String destBucketName = "dest-replication-bucket";
        // Panggil listObjectsV2 jika versioning dinonaktifkan untuk bucket, atau panggil listVersions jika versioning diaktifkan atau ditangguhkan.
        ListObjectsV2Result result;
        ListObjectsV2Request request = new ListObjectsV2Request(srcBucketName);
        do {
            result = srcClient.listObjectsV2(request);
            for (OSSObjectSummary summary : result.getObjectSummaries())
            {
                String objectName = summary.getKey();
                ObjectMetadata srcMeta;
                try {
                    // Dapatkan metadata objek sumber.
                    srcMeta = srcClient.headObject(srcBucketName, objectName);
                } catch (OSSException ossException) {
                    if (ossException.getErrorCode().equals("NoSuchKey")) {
                        continue;
                    } else {
                        System.out.println("head src-object failed: " + objectName);
                    }
                    continue;
                }

                ObjectMetadata destMeta;
                try {
                    // Dapatkan metadata objek tujuan.
                    destMeta = destClient.headObject(destBucketName, objectName);
                } catch (OSSException ossException) {
                    if (ossException.getErrorCode().equals("NoSuchKey")) {
                        System.out.println("dest-object not exist: " + objectName);
                    } else {
                        System.out.println("head dest-object failed: " + objectName);
                    }
                    continue;
                }
                // Periksa apakah nilai CRC-64 objek sumber dan tujuan sama.
                Long srcCrc = srcMeta.getServerCRC();
                String srcMd5 = srcMeta.getContentMD5();
                if (srcCrc != null) {
                    if (destMeta.getServerCRC() != null) {
                        if (!destMeta.getServerCRC().equals(srcCrc)) {
                            System.out.println("crc not equal: " + objectName
                                    + " | srcCrc: " + srcCrc + " | destCrc: " + destMeta.getServerCRC());
                        }
                        continue;
                    }
                }
                // Periksa apakah hash MD5 objek sumber dan tujuan sama.
                if (srcMd5!= null) {
                    if (destMeta.getContentMD5() != null) {
                        if (!destMeta.getContentMD5().equals(srcMd5)) {
                            System.out.println("md5 not equal: " + objectName
                                    + " | srcMd5: " + srcMd5 + " | destMd5: " + destMeta.getContentMD5());
                        }
                        continue;
                    }
                }
                // Periksa apakah ETag objek sumber dan tujuan sama.
                if (srcMeta.getETag() == null || !srcMeta.getETag().equals(destMeta.getETag())) {
                    System.out.println("etag not equal: " + objectName
                            + " | srcEtag: " + srcMeta.getETag() + " | destEtag: " + destMeta.getETag());
                }
            }

            request.setContinuationToken(result.getNextContinuationToken());
            request.setStartAfter(result.getStartAfter());
        } while (result.isTruncated());
    }
}

Apakah OSS mendukung replikasi berantai?

Tidak. Misalnya, jika Anda mengonfigurasi aturan untuk mereplikasi data dari Bucket A ke Bucket B, dan aturan lain untuk mereplikasi data dari Bucket B ke Bucket C, data dari Bucket A hanya direplikasi ke Bucket B, bukan ke Bucket C.

Untuk mereplikasi data dari Bucket A ke Bucket C, Anda harus mengonfigurasi aturan replikasi data terpisah dari Bucket A ke Bucket C.

Jika Anda mengaktifkan replikasi data yang sudah ada untuk aturan dari Bucket B ke Bucket C, pemindaian awalnya mungkin mereplikasi objek yang baru saja tiba di Bucket B dari Bucket A.

Replikasi dua arah dan loop tak terbatas

Tidak. Jika Anda mengonfigurasi replikasi dua arah antara Bucket A dan Bucket B, data (baik baru maupun yang sudah ada) yang direplikasi dari Bucket A ke Bucket B tidak akan direplikasi kembali ke Bucket A. Demikian pula, data yang direplikasi dari Bucket B ke Bucket A tidak akan direplikasi kembali ke Bucket B.

Sinkronisasi penghapusan dengan aturan siklus hidup

  • Jika kebijakan replikasi data diatur ke Add/Change, objek yang dihapus oleh aturan siklus hidup di bucket sumber tidak dihapus dari bucket tujuan.

  • Jika kebijakan replikasi data diatur ke Add/Delete/Change, objek yang dihapus oleh aturan siklus hidup di bucket sumber juga dihapus dari bucket tujuan.

    Catatan

    Jika Anda menemukan objek di bucket tujuan yang seharusnya telah dihapus, hal ini tidak berarti kebijakan Add/Delete/Change gagal. Anda mungkin telah menulis objek secara manual dengan nama yang sama ke bucket tujuan.

Progres replikasi macet di 0%

  • Progres tidak diperbarui secara real time

    Progres replikasi untuk objek yang sudah ada hanya diperbarui setelah semua objek dipindai. Jika bucket Anda berisi jumlah objek yang sangat besar, misalnya ratusan juta, pembaruan progres dapat memakan waktu beberapa jam. Bilah progres yang statis tidak selalu berarti replikasi terhenti.

Anda dapat memverifikasi bahwa replikasi telah dimulai dengan memantau penggunaan penyimpanan dan trafik replikasi inbound bucket tujuan. Untuk informasi lebih lanjut, lihat Tanyakan penggunaan sumber daya bucket.

  • Kebijakan izin yang salah untuk bucket sumber

    Saat Anda membuat aturan replikasi data, OSS tidak memeriksa izin bucket sumber. Artinya, aturan dapat dibuat berhasil meskipun izin yang diperlukan tidak tersedia. Namun, replikasi akan gagal, dan progres akan tetap di 0%.

    Untuk mengonfigurasi izin yang benar, lihat Izin untuk replikasi data.

Replikasi data lambat

  • Tingkatkan bandwidth

    Replikasi data adalah proses asinkron yang hampir real-time. Waktu yang dibutuhkan bergantung pada jumlah data dan dapat berkisar dari beberapa menit hingga beberapa jam. Replikasi yang lambat dapat disebabkan oleh keterbatasan bandwidth. Jika bandwidth menjadi masalah, hubungi technical support untuk meminta peningkatan bandwidth.

  • Aktifkan Replication Time Control (RTC)

    Dengan RTC diaktifkan, OSS mereplikasi sebagian besar objek dalam hitungan detik dan 99,99% objek dalam waktu 10 menit. Saat Anda mengaktifkan RTC, Anda akan dikenai biaya untuk trafik replikasi data yang dihasilkan oleh tugas yang diaktifkan RTC. Untuk informasi lebih lanjut, lihat Gunakan Replication Time Control (RTC).

Memantau operasi replikasi

Anda dapat mengonfigurasi aturan notifikasi event untuk memantau perubahan objek di bucket sumber dan bucket tujuan selama replikasi. Atur jenis event ke ObjectReplication:ObjectCreated, ObjectReplication:ObjectRemoved, atau ObjectReplication:ObjectModified untuk menerima notifikasi tentang pembuatan, penghapusan, pembaruan, dan penimpaan objek. Untuk informasi lebih lanjut, lihat Gunakan notifikasi event untuk memantau perubahan objek secara real time.

Replikasi untuk bucket dengan versioning ditangguhkan

Tidak. Anda hanya dapat mengaktifkan replikasi data antara dua bucket yang sama-sama unversioned atau sama-sama versioning-enabled.

Enkripsi KMS dan biaya panggilan API

Ya. Menggunakan enkripsi KMS untuk bucket tujuan akan dikenai biaya untuk panggilan API KMS. Untuk informasi lebih lanjut, lihat penagihan KMS 1.0.

Menonaktifkan aturan replikasi

Ya. Anda dapat menghentikan replikasi data dengan mengklik Disable Replication di samping aturan tersebut.

Setelah Anda menonaktifkan replikasi, data yang telah direplikasi tetap berada di bucket tujuan. OSS tidak lagi mereplikasi data inkremental dari bucket sumber ke bucket tujuan.

Replikasi dan urutan objek

Replikasi tidak mengubah urutan modifikasi objek.