Ripple, a server that can serve as a middleman in MySQL replication
Branch: master
Clone or download
nerdatmath and pivanof Export of Google internal changes to Ripple.
1. Add a missing shared lock of position_mutex_
2. Name all locks of position_mutex_ consistently as position_lock
3. Demote some position_mutex_ locks from exclusive to shared
4. Add thread safety annotations for Binlog::position_
5. Annotate the acquisition order of mutexes in class Binlog
6. Applied ClangTidy fixes to Ripple.

PiperOrigin-RevId: 223357382
Latest commit 3b76275 Nov 21, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
AUTHORS Initial export of Ripple code. Jan 28, 2019
BUILD.bazel Initial export of Ripple code. Jan 28, 2019
CONTRIBUTING.md Initial export of Ripple code. Jan 28, 2019
LICENSE Initial export of Ripple code. Jan 28, 2019
README.md
WORKSPACE Initial export of Ripple code. Jan 28, 2019
binlog.cc Export of Google internal changes to Ripple. Feb 12, 2019
binlog.h
binlog_index.cc Initial export of Ripple code. Jan 28, 2019
binlog_index.h Export of Google internal changes to Ripple. Feb 12, 2019
binlog_index_unittest.cc
binlog_position.cc Initial export of Ripple code. Jan 28, 2019
binlog_position.h Initial export of Ripple code. Jan 28, 2019
binlog_position_unittest.cc Initial export of Ripple code. Jan 28, 2019
binlog_reader.cc
binlog_reader.h
buffer.h Export of Google internal changes to Ripple. Feb 12, 2019
byte_order.h Initial export of Ripple code. Jan 28, 2019
connection.cc
connection.h Initial export of Ripple code. Jan 28, 2019
encryption.cc Export of Google internal changes to Ripple. Feb 12, 2019
encryption.h Export of Google internal changes to Ripple. Feb 12, 2019
encryption_unittest.cc Initial export of Ripple code. Jan 28, 2019
executor.cc Export of Google internal changes to Ripple. Feb 12, 2019
executor.h Initial export of Ripple code. Jan 28, 2019
external_libs.BUILD.bazel Initial export of Ripple code. Jan 28, 2019
file.h Initial export of Ripple code. Jan 28, 2019
file_FILE.cc Initial export of Ripple code. Jan 28, 2019
file_FILE.h
file_base.h Export of Google internal changes to Ripple. Feb 12, 2019
file_position.cc Initial export of Ripple code. Jan 28, 2019
file_position.h Initial export of Ripple code. Jan 28, 2019
file_position_unittest.cc Initial export of Ripple code. Jan 28, 2019
file_unittest.cc Initial export of Ripple code. Jan 28, 2019
file_util.cc Initial export of Ripple code. Jan 28, 2019
file_util.h Initial export of Ripple code. Jan 28, 2019
flags.cc Support for password authentication for connecting to a master. Feb 9, 2019
flags.h
gtid.cc Export of Google internal changes to Ripple. Feb 12, 2019
gtid.h Initial export of Ripple code. Jan 28, 2019
gtid_unittest.cc Initial export of Ripple code. Jan 28, 2019
init.cc Fix parsing of flags Feb 6, 2019
init.h Initial export of Ripple code. Jan 28, 2019
listener.cc Initial export of Ripple code. Jan 28, 2019
listener.h
log_event.cc Initial export of Ripple code. Jan 28, 2019
log_event.h Initial export of Ripple code. Jan 28, 2019
log_event_unittest.cc Initial export of Ripple code. Jan 28, 2019
logging.h Initial export of Ripple code. Jan 28, 2019
management.proto Support for password authentication for connecting to a master. Feb 9, 2019
management_session.cc Initial export of Ripple code. Jan 28, 2019
management_session.h Initial export of Ripple code. Jan 28, 2019
manager.cc Support for password authentication for connecting to a master. Feb 9, 2019
manager.h Initial export of Ripple code. Jan 28, 2019
monitoring.cc Initial export of Ripple code. Jan 28, 2019
monitoring.h
my_crypt.cc Initial export of Ripple code. Jan 28, 2019
my_crypt.h Initial export of Ripple code. Jan 28, 2019
my_crypt_constants.h
my_crypt_key_management.cc
my_crypt_key_management.h Initial export of Ripple code. Jan 28, 2019
my_crypt_key_management_impl.cc Initial export of Ripple code. Jan 28, 2019
mysql_client_connection.cc
mysql_client_connection.h Support for password authentication for connecting to a master. Feb 9, 2019
mysql_compat.cc
mysql_compat.h
mysql_constants.cc
mysql_constants.h Initial export of Ripple code. Jan 28, 2019
mysql_init.cc Export of Google internal changes to Ripple. Feb 12, 2019
mysql_init.h
mysql_master_session.cc Support for password authentication for connecting to a master. Feb 9, 2019
mysql_master_session.h Support for password authentication for connecting to a master. Feb 9, 2019
mysql_protocol.cc Export of Google internal changes to Ripple. Feb 12, 2019
mysql_protocol.h Initial export of Ripple code. Jan 28, 2019
mysql_server_connection.cc
mysql_server_connection.h Initial export of Ripple code. Jan 28, 2019
mysql_server_port.cc Initial export of Ripple code. Jan 28, 2019
mysql_server_port.h Initial export of Ripple code. Jan 28, 2019
mysql_server_port_tcpip.cc Initial export of Ripple code. Jan 28, 2019
mysql_server_port_tcpip.h Initial export of Ripple code. Jan 28, 2019
mysql_server_port_unittest.cc
mysql_slave_session.cc Add support for 'SELECT @@GLOBAL.SERVER_ID' (and same for SERVER_UUID) Feb 4, 2019
mysql_slave_session.h Initial export of Ripple code. Jan 28, 2019
mysql_util.h Initial export of Ripple code. Jan 28, 2019
plugin.cc.in Export of Google internal changes to Ripple. Feb 12, 2019
plugin.h Initial export of Ripple code. Jan 28, 2019
purge_thread.cc Initial export of Ripple code. Jan 28, 2019
purge_thread.h Initial export of Ripple code. Jan 28, 2019
resultset.h Initial export of Ripple code. Jan 28, 2019
rippled.cc Export of Google internal changes to Ripple. Feb 12, 2019
rippled.h Initial export of Ripple code. Jan 28, 2019
session.cc
session.h Initial export of Ripple code. Jan 28, 2019
session_factory.cc Initial export of Ripple code. Jan 28, 2019
session_factory.h

README.md

Ripple

Ripple is a server that can serve as a middleman in MySQL replication.

The Ripple server connects to a MySQL master the same way a replica would, but rather than creating a copy of the data in MySQL, Ripple just downloads the binlogs and saves them locally. MySQL servers can then be directed to replicate from Ripple instead of the master. Ripple will serve downloaded binlogs to them the same way the master would. This can significantly reduce load on the MySQL master and improve durability of the binlogs.

Ripple supports replication to/from MariaDB and MySQL using GTIDs (of MariaDB and MySQL flavor respectively). Replication using filename and position is not supported. Ripple has been tested with MariaDB 10.0 and MySQL 5.6 and 5.7, but it likely will work with later versions as well.