DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
Source cluster permissions (mirror principal):
RPC | Component | ACL Operation | ACL Resource | Purpose |
| Fetch | MFT | Read | Topic | Data replication |
| Metadata | MMM | Describe | Topic | Topic discovery and leader tracking |
| DescribeConfigs | MMM | Describe | Topic | Topic configuration sync |
| ListGroups | MMM | Describe | Group | Consumer group offset sync |
| OffsetFetch | MMM | Describe | Group | Consumer group offset sync |
| DescribeAcls | MMM | Describe | Cluster | ACL synchronization |
| LastMirroredOffsets | MMM | ClusterAction | Cluster | Log truncation during failback |
| ApiVersions | MMM | Feature negotiation | ||
| ListOffsets | MFT | Describe | Topic | Offset bounds discovery |
| OffsetsForLeaderEpoch | MFT | Describe | Topic | Leader epoch validation for truncation |
Destination cluster permissions:
RPC | Component | ACL Operation | ACL Resource | Purpose |
| CreateMirror | Controller | Create | ClusterMirror | Create a new cluster mirror |
| AddTopicsToMirror | Controller | Alter | ClusterMirror | Add topics to an existing mirror |
| RemoveTopicsFromMirror | Controller | Alter | ClusterMirror | Remove topics from a mirror (failover) |
| PauseMirrorTopics | Controller | Alter | ClusterMirror | Pause replication for topics |
| ResumeMirrorTopics | Controller | Alter | ClusterMirror | Resume replication for topics |
| DeleteMirror | Controller | Alter | ClusterMirror | Delete a cluster mirror |
| ListMirrors | Broker | Describe | ClusterMirror | List configured mirrors |
| DescribeMirrors | Broker | Describe | ClusterMirror | Describe mirror state and lag |
| DescribeConfigs | Broker | DescribeConfigs | ClusterMirror | Describe mirror configuration |
| WriteMirrorStates | MC | ClusterAction | Cluster | Persist partition state to coordinator |
| ReadMirrorStates | MC | ClusterAction | Cluster | Read partition state from coordinator |
| LastMirroredOffsets | Broker | ClusterAction | Cluster | Query last mirrored offset for truncation |
| FindCoordinator | Broker | ClusterAction | Cluster | Locate mirror coordinator for a partition |
| CreateTopics | MMM | Create | Topic | Create topics with source topic ID |
| CreatePartitions | MMM | Scale partitions to match source | ||
| IncrementalAlterConfigs | MMM | Modify mirror configuration | ||
| OffsetCommit | MMM | Sync consumer group offsets | ||
| CreateAcls | MMM | Sync ACLs from source | ||
| DeleteAcls | MMM | Remove stale ACLs |
...
Feature Support Comparison
| MirrorMaker 2 | Cluster Mirroring | |
|---|---|---|
Offset Translation | Lossy, requires remapping, causes reprocessing overhead | None needed - offsets preserved exactly |
Metadata Sync | Requires separate connector configuration (MirrorSourceConnector, MirrorCheckpointConnector) | Automatic (topics, configs, consumer groups, ACLs) |
Transactional Topics | Markers copied as regular records, incomplete transactions possible during replication | Markers mirrored, LSO truncation ensures consistency before failover |
Topic Write Protection | Not supported (mirror topics always writable) | Read-only enforcement during mirroring, writable only after explicit failover |
Tiered Storage | Fetches from broker (which reads from remote storage) | Not initially supported (future work) |
Active-Active | Supported via topic prefixing and cycle detection | Not supported (read-only enforcement prevents cycles) |
Share Groups | Not supported | Supported |
Failback | Full re-mirror from offset 0 | Delta sync using LastMirroredOffset |
Topic Name Preservation | No - destination topics prefixed with source cluster alias (e.g., source.topic-name) | Yes - same topic name as source |
Topic ID Preservation | No - destination gets new topic ID | Yes - same topic ID as source |
Performance & Isolation Comparison
| MirrorMaker 2 | Cluster Mirroring | |
|---|---|---|
Compression Overhead | Decompress + recompress records | Preserve source compression (zero overhead) |
Failover Time | Offset translation + consumer group sync + bootstrap reconfiguration | Consumer group sync + bootstrap reconfiguration only |
Bandwidth Control (Source) | None (unless client quotas manually configured) | Client quotas (current), dedicated mirror throttling (future) |
Bandwidth Control (Destination) | None (unless client quotas manually) | Replica-level throttling (mirror.replication.throttled.rate) |
Resource Isolation (Source) | Shares network bandwidth and disk I/O with all consumers | Shares network bandwidth and disk I/O with all consumers (same - current); isolated on replica-level (future) |
Resource Isolation (Destination | Separate JVM heap (memory isolated from brokers) but still consume resources from the broker as any client | Shares network, disk I/O; dedicated thread pool within broker JVM |
Malformed Batch Handling | Crashes Connect task, all partitions in task restart | Fails individual partition (FAILED state), others continue |
Blast Radius(Failure) | All partitions in task affected | Single partition affected |
Catch-Up Surge Protection | Connect worker heap may OOM, affects all tasks | Throttling on destination replica + source quota prevent memory spikes |
Unclean Leader Election | No protection against log divergence | Explicitly unsupported with warning logs |
Use Case Guidance:
- MirrorMaker 2: Best for active-active topologies, multi-region writes, complex routing scenarios
- Cluster Mirroring: Best for disaster recovery, failover, migration, simplified operations with exact offset preservation
...