.. _migrate-replicator: ################################### Migrate from |mmaker| to Replicator ################################### This topic provides examples of how to migrate from an existing datacenter that is using |mmaker| to Replicator. In these examples, messages are replicated from a specific point in time, not from the beginning. This is helpful if you have a large number of legacy messages that you do not want to migrate. Assume there are two datacenters, DC1 (Active) and DC2 (Passive), that are each running a |ak-tm| cluster. There is a single topic in DC1 and it has been replicated to DC2 with the same topic name. The topic name is ``inventory``. .. include:: ../includes/replicator-topic-preserve.rst .. _samepartition: *************************************************** Example 1: Same Number of Partitions in DC1 and DC2 *************************************************** In this example, you migrate from |mmaker| to Replicator and keep the same number of partitions for ``inventory`` in DC1 and DC2. Prerequisites: - |cp| 5.0.0 or later is :ref:`installed `. - You must have the same number of partitions for ``inventory`` in DC1 and DC2 to use this method. - The ``src.consumer.group.id`` in Replicator must match ``group.id`` in |mmaker|. #. Stop the running |mmaker| instance in DC1, where ```` is the |mmaker| process ID. :: kill #. Configure and start Replicator. In this example, Replicator is run as an executable from the command line or from :ref:`a Docker image `. #. Add these values to ``/etc/kafka-connect-replicator/replicator_consumer.properties``. Replace ``localhost:9082`` with the ``bootstrap.servers`` of DC1, the source cluster: .. codewithvars:: bash bootstrap.servers=localhost:9082 topic.preserve.partitions=true #. Add this value to ``/etc/kafka-connect-replicator/replicator_producer.properties``. Replace ``localhost:9092`` with the ``bootstrap.servers`` of DC2, the destination cluster: .. codewithvars:: bash bootstrap.servers=localhost:9092 #. Ensure the replication factors are set to ``2`` or ``3`` for production, if they are not already: .. codewithvars:: bash echo "confluent.topic.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "offset.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "config.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "status.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties #. Start Replicator. .. codewithvars:: bash /bin/replicator --cluster.id \ --producer.config replicator_producer.properties \ --consumer.config replicator_consumer.properties \ --replication.config ./etc/kafka-connect-replicator/quickstart-replicator.properties Replicator will use the committed offsets by |mmaker| from DC1 and start replicating messages from DC1 to DC2 based on these offsets. .. _diffpartition: ******************************************************** Example 2: Different Number of Partitions in DC1 and DC2 ******************************************************** In this example, you migrate from |mmaker| to Replicator and have a different number of partitions for ``inventory`` in DC1 and DC2. Prerequisite: - |cp| 5.0.0 or later is :ref:`installed `. - The ``src.consumer.group.id`` in Replicator must match ``group.id`` in |mmaker|. #. Stop the running |mmaker| instance from DC1. #. Configure and start Replicator. In this example, Replicator is run as an executable from the command line or from :ref:`a Docker image `. #. Add this value to ``/etc/kafka-connect-replicator/replicator_consumer.properties``. Replace ``localhost:9082`` with the ``bootstrap.servers`` of DC1, the source cluster: .. codewithvars:: bash bootstrap.servers=localhost:9082 topic.preserve.partitions=false #. Add this value to ``/etc/kafka-connect-replicator/replicator_producer.properties``. Replace ``localhost:9092`` with the ``bootstrap.servers`` of DC2, the destination cluster: .. codewithvars:: bash bootstrap.servers=localhost:9092 #. Ensure the replication factors are set to ``2`` or ``3`` for production, if they are not already: .. codewithvars:: bash echo "confluent.topic.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "offset.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "config.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties echo "status.storage.replication.factor=3" >> ./etc/kafka-connect-replicator/quickstart-replicator.properties #. Start Replicator. .. codewithvars:: bash /bin/replicator --cluster.id \ --producer.config replicator_producer.properties \ --consumer.config replicator_consumer.properties \ --replication.config ./etc/kafka-connect-replicator/quickstart-replicator.properties Replicator will use the committed offsets by |mmaker| from DC1 and start replicating messages from DC1 to DC2 based on these offsets.