All Products
Search
Document Center

Object Storage Service:FAQ replikasi data

Last Updated:Sep 10, 2026

Pertanyaan umum mengenai replikasi data dalam akun yang sama dan lintas akun, termasuk skenario dalam wilayah yang sama maupun lintas wilayah.

Dapatkah saya menentukan jalur atau awalan kustom untuk bucket tujuan?

Tidak. Replikasi dalam wilayah yang sama dan lintas wilayah tidak mendukung jalur penyimpanan kustom untuk bucket tujuan. Jalur tujuan ditentukan oleh jalur data bucket sumber yang dikonfigurasi dalam aturan replikasi data.

Dapatkah saya mereplikasi objek berdasarkan waktu modifikasi terakhirnya?

Tidak. Anda tidak dapat mengonfigurasi aturan replikasi data untuk mereplikasi objek berdasarkan rentang waktu modifikasi terakhir tertentu. Namun, Anda dapat menggunakan fitur File Modified Time dari layanan migrasi online untuk melakukan hal ini. Jika Anda menentukan rentang waktu, hanya file yang dimodifikasi dalam periode tersebut yang akan dimigrasikan.

Mengapa saya tidak dapat membuat aturan replikasi data?

  1. Periksa apakah izin yang diperlukan telah diberikan.

    • Izin yang hilang untuk Pengguna RAM

      • Pengguna RAM tidak dapat mengklik OK saat membuat aturan replikasi data di Konsol.

        • Penyebab: Izin oss:PutBucketReplication belum diberikan.

        • Solusi: Berikan izin oss:PutBucketReplication kepada Pengguna RAM.

      • Peran RAM kustom tidak muncul dalam daftar peran RAM saat Pengguna RAM membuat aturan replikasi data.

        • Penyebab: Izin ram:ListRoles belum diberikan.

        • Solusi: Berikan izin ram:ListRoles kepada Pengguna RAM.

      Berikan kebijakan kustom kepada Pengguna RAM.

    • Izin yang hilang untuk Peran RAM

      • Replikasi dalam akun yang sama

        Berikan izin Peran RAM untuk melakukan replikasi antara bucket sumber dan bucket tujuan. Jenis peran.

      • Replikasi lintas akun

        Gunakan Akun A untuk memberikan izin Peran RAM guna mereplikasi data dari bucket sumber, dan Akun B untuk memberikan izin Peran RAM guna menerima objek yang direplikasi di bucket tujuan. Otorisasi peran.

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

    Bucket sumber dan bucket tujuan harus memiliki status versioning yang sama: keduanya di-versioning atau keduanya tidak di-versioning.

  3. Periksa apakah informasi endpoint atau AccessKey benar.

    Jika Anda menggunakan SDK atau ossutil untuk membuat aturan replikasi data, periksa hal berikut:

Apa yang harus saya lakukan jika Konsol Resource Access Management (RAM) menampilkan peringatan otorisasi tidak valid saat saya membuat kebijakan replikasi?

Saat Anda menggunakan visual editor di Konsol RAM untuk membuat kebijakan replikasi kustom yang berisi oss:ReplicateList dan oss:ReplicateGet, Konsol mungkin menampilkan peringatan unrecognized action dan unrecognized resource.

Peringatan ini muncul karena kamus aksi pada visual editor tidak mencakup aksi internal OSS tersebut. Peringatan ini tidak memengaruhi validitas kebijakan.

Buat kebijakan dengan salah satu metode berikut:

  1. Beralih ke mode Script editor dan masukkan JSON kebijakan. Mode ini tidak menampilkan peringatan tersebut.

  2. Gunakan perintah aliyun ram CreatePolicy di command-line interface (CLI) untuk membuat kebijakan.

Setelah membuat kebijakan, buat aturan replikasi lintas akun di Konsol OSS. Jika Anda berhasil membuat aturan tersebut, berarti kebijakan tersebut efektif.

Mengapa objek tidak direplikasi ke bucket tujuan?

Jika objek tidak muncul di bucket tujuan setelah Anda mengonfigurasi aturan replikasi data, periksa penyebab berikut.

  1. Bucket sumber dikonfigurasi secara salah.

    • Periksa apakah status replikasi data adalah Enabled.

    • Awalan salah.

      • Untuk mereplikasi objek tertentu, tetapkan awalan. Misalnya, jika awalannya adalah log, hanya objek seperti log/date1.txt dan log/date2.txt yang direplikasi. Objek seperti date3.txt tidak direplikasi.

        Catatan

        Jangan tambahkan tanda bintang (*) di akhir awalan, seperti log/*. Awalan tidak boleh berisi nama bucket.

      • Untuk mereplikasi semua objek dari bucket sumber ke bucket tujuan, biarkan bidang awalan kosong.

  2. Periksa apakah replikasi objek historis diaktifkan dan apakah objek yang hilang merupakan objek historis.

  3. Periksa apakah objek sumber merupakan replika dari bucket lain.

    OSS tidak mereplikasi objek yang merupakan replika dari aturan replikasi lain. Misalnya, jika replikasi dikonfigurasi dari bucket A ke bucket B dan dari bucket B ke bucket C, replika di bucket B tidak direplikasi ke bucket C.

  4. Periksa apakah objek dienkripsi dengan KMS. Jika iya, aktifkan replikasi untuk objek yang dienkripsi KMS.

    Jika objek sumber atau bucket tujuan menggunakan SSE-KMS dengan CMK ID tertentu, pilih Copy dan konfigurasikan parameter berikut:

    • CMK ID: Tentukan kunci KMS untuk mengenkripsi objek tujuan.

      Pertama-tama buat kunci KMS di wilayah yang sama dengan bucket tujuan. Buat kunci.

    • RAM Role Name: Pilih Peran RAM untuk melakukan enkripsi KMS pada objek tujuan.

      • New RAM Role: Membuat Peran RAM baru untuk enkripsi KMS. Format nama peran adalah kms-replication-SourceBucketName-DestinationBucketName.

      • AliyunOSSRole: Menggunakan peran AliyunOSSRole untuk enkripsi KMS pada objek tujuan. OSS secara otomatis membuat peran ini jika belum ada.

      Catatan

      Jika Anda membuat atau mengubah peran, berikan izin AliyunOSSFullAccess. Jika tidak, replikasi data mungkin gagal.

    Panggil HeadObject dan GetBucketEncryption untuk mengecek status enkripsi objek sumber dan bucket tujuan.

  5. Periksa apakah progres replikasi sudah mencapai 100%.

    Replikasi data bersifat asinkron dan dapat memakan waktu beberapa menit hingga beberapa jam tergantung pada ukuran data. Setelah progres mencapai 100%, periksa apakah objek muncul di bucket tujuan.

Mengapa penghapusan objek tidak direplikasi?

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

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

  • Penyebab 2: Perilaku penghapusan bergantung pada status versioning bucket sumber dan kebijakan replikasi.

    Versioning bucket sumber

    Metode permintaan

    Kebijakan replikasi data

    Hasil

    Tidak di-versioning

    Permintaan Delete diajukan.

    Replikasi penambahan dan modifikasi

    Hanya objek di bucket sumber yang dihapus. Objek di bucket tujuan tidak dihapus.

    Replikasi penambahan, modifikasi, dan penghapusan

    Objek di kedua bucket (sumber dan tujuan) dihapus.

    Versioning diaktifkan

    Permintaan Delete diajukan tanpa ID versi objek.

    Replikasi penambahan dan modifikasi

    Tidak ada objek yang dihapus dari kedua bucket. OSS membuat penanda hapus di bucket sumber dan mereplikasi penanda hapus tersebut ke bucket tujuan.

    Replikasi penambahan, modifikasi, dan penghapusan

    Permintaan Delete diajukan dengan ID versi objek.

    Replikasi penambahan dan modifikasi

    Hanya versi objek di bucket sumber yang dihapus. Versi objek di bucket tujuan tidak dihapus.

    Replikasi penambahan, modifikasi, dan penghapusan

    Versi objek yang ditentukan di kedua bucket (sumber dan tujuan) dihapus.

Verifikasi konsistensi data

Jalankan kode berikut untuk memverifikasi konsistensi data antara bucket sumber dan bucket tujuan setelah replikasi.

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 variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tetapkan srcEndpoint ke 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";
        // Tetapkan destEndpoint ke 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";
        // Jika bucket sumber dan tujuan tidak memiliki versioning yang diaktifkan, panggil listObjectsV2 untuk mencantumkan objek yang direplikasi dari bucket sumber.
        // Jika versioning diaktifkan atau ditangguhkan untuk bucket sumber dan tujuan, panggil listVersions untuk mencantumkan objek yang direplikasi dari bucket sumber.
        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 yang direplikasi ke bucket 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 objek sumber dan tujuan konsisten.
                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 nilai MD5 objek sumber dan tujuan konsisten.
                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 nilai ETag objek sumber dan tujuan konsisten.
                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 replikasi berantai didukung?

Tidak. Data yang direplikasi dari bucket A ke bucket B tidak akan direplikasi lebih lanjut dari bucket B ke bucket C.

Untuk mereplikasi data dari bucket A ke bucket C, konfigurasikan aturan replikasi terpisah dari bucket A ke bucket C.

Jika replikasi historis masih berlangsung untuk kedua bucket, data baru yang ditulis ke bucket A mungkin dipindai oleh tugas replikasi historis dan direplikasi ke bucket C.

Apakah replikasi dua arah antar bucket menciptakan loop replikasi?

Tidak. Data yang direplikasi tidak pernah dikirim kembali ke asalnya. Data yang direplikasi dari A ke B tidak akan direplikasi kembali ke A.

Apakah penghapusan oleh aturan siklus hidup direplikasi?

  • Jika kebijakan replikasi adalah Replikasi penambahan dan modifikasi, objek yang dihapus oleh aturan siklus hidup di bucket sumber tidak dihapus dari bucket tujuan.

  • Jika kebijakan replikasi adalah Replikasi penambahan, modifikasi, dan penghapusan, objek yang dihapus oleh aturan siklus hidup di bucket sumber juga dihapus dari bucket tujuan.

    Catatan

    Jika bucket tujuan masih berisi objek dengan nama yang sama seperti objek sumber yang dihapus oleh aturan siklus hidup, kemungkinan objek tersebut ditulis secara manual ke bucket tujuan.

Mengapa progres replikasi historis terjebak di 0%?

  • Progres replikasi tidak diperbarui secara real time.

    Pembaruan progres replikasi historis hanya terjadi setelah semua file dipindai. Untuk bucket dengan ratusan juta objek, proses ini mungkin memakan waktu beberapa jam. Progres 0% tidak berarti replikasi belum dimulai.

Konfirmasi apakah replikasi historis telah dimulai dengan memeriksa perubahan kapasitas penyimpanan dan trafik bucket tujuan. Kueri penggunaan tingkat bucket.

  • Kebijakan otorisasi bucket sumber salah.

    OSS tidak memvalidasi izin saat membuat aturan replikasi. Aturan tetap dibuat meskipun izin salah, tetapi data tidak akan direplikasi dan progres tetap di 0%.

    Izin yang diperlukan untuk replikasi data.

Apa yang harus dilakukan jika replikasi data lambat?

  • Tingkatkan bandwidth

    Replikasi bersifat asinkron dan dapat memakan waktu beberapa menit hingga beberapa jam tergantung pada volume data. Jika replikasi lambat karena batasan bandwidth, hubungi dukungan teknis untuk meminta peningkatan bandwidth.

  • Aktifkan Replication Time Control (RTC)

    Dengan RTC diaktifkan, OSS mereplikasi sebagian besar objek dalam hitungan detik dan 99,99% dalam waktu 10 menit. Tugas yang diaktifkan RTC dikenai biaya trafik replikasi data. Gunakan Replication Time Control (RTC).

Bagaimana cara melacak operasi replikasi?

Konfigurasikan aturan notifikasi event dengan jenis event ObjectReplication:ObjectCreated, ObjectReplication:ObjectRemoved, dan ObjectReplication:ObjectModified untuk melacak pembuatan, pembaruan, penghapusan, dan penimpaan objek. Gunakan notifikasi event untuk memantau perubahan objek OSS secara real time.

Apakah replikasi didukung pada bucket dengan versioning yang ditangguhkan?

Tidak. Kedua bucket harus memiliki status versioning yang sama: keduanya tidak di-versioning atau keduanya di-versioning.

Apakah panggilan API KMS untuk replikasi dikenai biaya?

Ya. Jika bucket tujuan menggunakan enkripsi KMS, Anda akan dikenai biaya untuk panggilan API KMS yang sesuai. Penagihan KMS 1.0.

Dapatkah saya menonaktifkan aturan replikasi?

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

Data yang telah direplikasi tetap berada di bucket tujuan, tetapi data baru yang ditulis ke bucket sumber tidak lagi direplikasi.

Apakah replikasi mengubah urutan file?

Tidak. Replikasi mempertahankan urutan modifikasi file.