edit-icon download-icon

Cross-region replication

Last Updated: Oct 24, 2017

Bucket Cross-region replication automatically and asynchronously copies objects in buckets across different OSS data centers. It synchronizes changes to objects in the source bucket (create, overwrite, and delete) to the target bucket.

This feature provides ideal cross-region disaster recovery for buckets or meets users’ needs for copying data. Objects in the target bucket are precise copies of objects in the source bucket, with the same object names, metadata, and content. For example, creation time, owner, user-defined metadata, object ACL, and object content.

For more content on cross-region replication, see Cross-region replication.

Enable cross-region replication

You can use OSSClient.addBucketReplication to enable cross-region replication:

  1. AddBucketReplicationRequest request = new AddBucketReplicationRequest("bucketName");
  2. request.setReplicationRuleID("ruleId");
  3. request.setTargetBucketName("targetBucketName");
  4. request.setTargetBucketLocation("oss-cn-qingdao");
  5. ossClient.addBucketReplication(request);

Note: When cross-region replication is enabled, the history data is synchronized by default. If you do not need to synchronize the history data, use AddBucketReplicationRequest.setEnableHistoricalObjectReplication(false) to disable history data synchronization.

View cross-region replication

You can use OSSClient.getBucketReplication to view the cross-region replication enabled on the bucket:

  1. List<ReplicationRule> rules = ossClient.getBucketReplication("bucketName");
  2. for (ReplicationRule rule : rules) {
  3. System.out.println(rule.getReplicationRuleID());
  4. System.out.println(rule.getTargetBucketLocation());
  5. System.out.println(rule.getTargetBucketName());
  6. }

Delete the cross-region replication feature

You can use OSSClient.deleteBucketReplication to delete the enabled cross-region replication feature. Once deleted, the target buckets and objects remain as follows:

  1. ossClient.deleteBucketReplication("bucketName", "ruleId");

View cross-region replication progress

The replication progress is divided into the synchronization progress of the history data and the synchronization progress of the real-time data. The synchronization of the history data is reported in percentages. For example, 0.80 is reported as 80% completed. This is only valid for buckets with the history data synchronization enabled. The real-time data synchronization is reported by the time points of the newly written data, indicating that the data before the specified time point has been synchronized.

You can use OSSClient.deleteBucketReplication to view the cross-region replication progress:

  1. BucketReplicationProgress process = ossClient.getBucketReplicationProgress("bucketName", "repRuleID");
  2. System.out.println(process.getReplicationRuleID());
  3. // Whether the history data synchronization has been enabled
  4. System.out.println(process.isEnableHistoricalObjectReplication());
  5. // History data synchronization progress
  6. System.out.println(process.getHistoricalObjectProgress());
  7. // Real-time data synchronization progress
  8. System.out.println(process.getNewObjectProgress());

View the target data center

You can use OSSClient.getBucketReplicationLocation to get the data center that the data of the bucket data center can be synchronized to:

  1. List<String> locations = ossClient.getBucketReplicationLocation("bucketName");
  2. for (String loc : locations) {
  3. System.out.println(loc);
  4. }
Thank you! We've received your feedback.