Schema definitions on replication slaves sometimes differ.
Ability to rename schemas, tables and columns and still setup
replication with comfort is useful for MySQL to MySQL
replication, while for heterogeneous topologies like these, it's a must. In this article I'll
present a component which I recently developed to enable an easy
way of renaming database objects during both (a) initial slave
load (provisioning) and (b) real-time replication.
It is called RenameFilter and is part of the latest Tungsten
Replicator build. RenameFilter works with all DBMS types that
Replicator supports.
Specifying What to Rename
First, let's look at how rename definitions file looks like. It
is a CSV file which first three columns specify what to rename,
while …
Use tungsten replicator to replicate between mysql and mongodb.
Mysql tables are equivalent to collections in mongodb. The replication works by replicating inserts and updates. But all DDL statements on mysql are ignored...
Replication in detail
In the replication topology I manage there are many layers of
replication filters that prune data at the database and in a
few places table level. The way MySQL replicates Data Definition Language (create, alter, drop)
statements differs from how Data Manipulation Language (insert, update,
delete) statements are handled with row-based replication. I
often need to fix broken replication due to a lack of
understanding of these subtle differences.
With row-based replication DML statements focus directly on the
table being modified. DDL on the other hand always uses
statement-based replication and is tied to what is known in MySQL
as the "default database". The default database is the
schema/database currently in use when a DDL …
Continuent Tungsten offers real-time replication from MySQL to a variety of DBMS types including Vertica. In this Tungsten University webcast we will show you the details of setting up MySQL-to-Vertica replication, including the following topics:
Introduction to Continuent Tungsten features for data warehouse loading Installation for MySQL to Vertica replication Best practices for
The main benefit of using GTIDs is to have much easier failover than with file-based replication. We will see how to change the replication topology when using GTID-based replication. That will show where GTIDs shine and where improvements are expected.
This is the second post of a series of articles focused on MySQL 5.6 GTIDs. You can find part one here.
Our goal will be to go from setup #1 to setup #2 on the picture below, following various scenarios:
For these tests, all servers are running on 127.0.0.1 with ports ranging from 10000 for s0 to 10004 for s4.
Scenario #1: All slaves have processed all the writes
This is the easiest case, we will …
[Read more]I recently wrote about non-deterministic queries in the replication stream. That’s resolved by using either MIXED or ROW based replication rather than STATEMENT based.
Another thing that’s not fully handled by STATEMENT based replication is temporary tables. Imagine the following:
- Master: CREATE TEMPORARY TABLE rpltmpbreak (i INT);
- Wait for slave to replicate this statement, then stop and start mysqld (not just STOP/START SLAVE)
- Master: INSERT INTO rpltmpbreak VALUES (1);
- Slave: SHOW SLAVE STATUS \G
If for any reason a slave server shuts down and restarts after the temp table creation, replication will break because the temporary table will no longer exist on the restarted slave server. It’s obvious when you think about it, but nevertheless it’s quite …
[Read more]As you probably know, Tungsten Replicator can replicate data from MySQL to MongoDB. The installation is relatively simple and, once done, replication works very well. There was a bug in the installation procedure recently, and as I was testing that the breakage has been fixed, I wanted to share the experience of getting started with this replication.
Step 1: install a MySQL server
For this exercise, we will use a MySQL sandbox running MySQL 5.5.31.
We download the binaries from dev.mysql.com and install a sandbox, making sure that it is configured as master, and that it is used row-based-replication.
$ mkdir -p $HOME/opt/mysql[Read more]
$ cd ~/downloads
$ wget …
You might find a warning like the below in your error log:
130522 17:54:18 [Warning] Unsafe statement written to the
binary log using statement format since BINLOG_FORMAT =
STATEMENT. Statements writing to a table with an auto-increment
column after selecting from another table are unsafe because the
order in which rows are retrieved determines what (if any) rows
will be written. This order cannot be predicted and may differ on
master and the slave.
Statement: INSERT INTO tbl2 SELECT * FROM tbl1 WHERE col IN
(417,523)
What do MariaDB and MySQL mean with this warning? The server can’t guarantee that this exact query, with STATEMENT based replication, will always yield identical results on the slave.
Does that mean that you have to use ROW based (or MIXED) replication? Possibly, but not necessarily.
For this type of query, it primarily refers to the fact that without …
[Read more]DrupalCamp Conference is hold in Göteborg, Sweden on May 25, 2013.
MySQL is part of this show and I would like to invite you to our session on "Scalability and Availability with MySQL Replication" given by Sven Sandberg on Saturday-May 25, 2013 @ 13:45-14:25!
So, if you are close to Göteborg or attending this event, do not
forget to come to listen Sven's talk!
Global Transactions Identifiers are one of the new features regarding replication in MySQL 5.6. They open up a lot of opportunities to make the life of DBAs much easier when having to maintain servers under a specific replication topology. However you should keep in mind some limitations of the current implementation. This post is the first one of a series of articles focused on the implications of enabling GTIDs on a production setup.
The manual describes very nicely how to switch to GTID-based replication, I won’t repeat it.
Basically the steps are:
- Make the master read-only so that the slaves can execute all events and be in sync with the master
- Change configuration for all servers and …