5.2.1. Preparing Hosts for MongoDB Replication
During the replication process, data is exchanged from the MySQL
database/table/row structure into corresponding MongoDB structures, as
In general, it is easier to understand that a row within the MySQL table
is converted into a single document on the MongoDB side, and automatically
added to a collection matching the table name.
For example, the following row within MySQL:
select * from recipe where recipeid = 1085 \G
*************************** 1. row ***************************
title: Creamy egg and leek special
1 row in set (0.00 sec)
Is replicated into the MongoDB document:
"_id" : ObjectId("5212233584ae46ce07e427c3"),
"recipeid" : "1085",
"title" : "Creamy egg and leek special",
"subtitle" : "",
"servings" : "4",
"active" : "1",
"parid" : "0",
"userid" : "0",
"rating" : "0.0",
"cumrating" : "0.0",
"createdate" : "0"
When preparing the hosts you must be aware of this translation of the
different structures, as it will have an effect on the way the information
is replicated from MySQL to MongoDB.
The data replicated from MySQL can be any data, although there are some
known limitations and assumptions made on the way the information is
The following are required for replication to
MySQL must be using Row-based replication for information to be
replicated to MongoDB. For the best results, you should change the
global binary log format, ideally in the configuration file
binlog-format = row
Alternatively, the global binlog format can be changed by executing
the following statement:
SET GLOBAL binlog-format = ROW;
For MySQL 5.6.2 and later, you must enable full row log images:
binlog-row-image = full
This information will be forgotten when the MySQL server is restarted;
placing the configuration in the
my.cnf file will ensure this
option is permanently enabled.
Table format should be updated to UTF8 by updating the MySQL
Tables must also be configured as UTF8 tables, and existing tables
should be updated to UTF8 support before they are replicated to
prevent character set corruption issues.
To prevent timezone configuration storing zone adjusted values and
exporting this information to the binary log and MongoDB, fix the
timezone configuration to use UTC within the configuration file
For the best results when replicating, be aware of the following issues
Use primary keys on all tables. The use of primary keys will improve
the lookup of information within MongoDB when rows are updated.
Without a primary key on a table a full table scan is performed, which
can affect performance.
TEXT columns are
correctly replicated, but cannot be used as keys.
BLOB columns are
converted to text using the configured character type. Depending on
the data that is being stored within the
BLOB, the data may need to be
custom converted. A filter can be written to convert and reformat the
content as required.
Enable networking; by default MongoDB is configured to listen only on
localhost (127.0.0.1) IP
address. The address should be changed to the IP address off your
indicates all interfaces on the current host.
Ensure that network port 27017, or the port you want to use for
MongoDB is configured as the listening port.