patternsqlMinor
Does MySQL support replicating all databases?
Viewed 0 times
databasesallreplicatingmysqldoessupport
Problem
I’ve been doing some investigation into properly configuring MySQL replication.
From what I understand after reading the documentation, you can only replicate specific databases, and each database name must be specified: In the master configuration, in order for the relevant database writes to be written to the binary logs, and in the slave configuration, in order to replay those logs onto the slave.
Is this correct, or is it possible to configure MySQL to replicate any and all databases?
From what I understand after reading the documentation, you can only replicate specific databases, and each database name must be specified: In the master configuration, in order for the relevant database writes to be written to the binary logs, and in the slave configuration, in order to replay those logs onto the slave.
Is this correct, or is it possible to configure MySQL to replicate any and all databases?
Solution
To answer your question about how MySQL replicates all databases, here is how it works...
Once
To see this, pick any Binary Log (except the Current One) on the Master, and run this:
To see all the binary logs and the current binary log on the Master, run these:
Long story short: By default, all DBs are replicated due to the
Abdul's answer shows how to filter in or filter out databases from being processed by the slave.
- Master has Binary Logging enabled
- Master records completed SQL Statements
- Master will inject 'USE dbname;' among the SQL Statements it records
- Slave connects to Master (IO Thread)
- Slave IO Thread requests next SQL statement from the Binary Logs
- Slave IO Thread copies it to its Relay Logs
- Slave SQL Thread Processes its Relay Log Entries FIFO (Queue)
Once
USE dbname; is issued out of the relay logs, multiple SQL statements will be processes chronologically until another USE dbname; (a different database) is issued from the Relay Logs.To see this, pick any Binary Log (except the Current One) on the Master, and run this:
mysqlbinlog binarylogname > SQLStatements.sqlTo see all the binary logs and the current binary log on the Master, run these:
SHOW BINARY LOGS;
SHOW MASTER STATUS;Long story short: By default, all DBs are replicated due to the
USE dbname; command within the binary logs on the master and the relay logs on the slave.Abdul's answer shows how to filter in or filter out databases from being processed by the slave.
Code Snippets
mysqlbinlog binarylogname > SQLStatements.sqlSHOW BINARY LOGS;
SHOW MASTER STATUS;Context
StackExchange Database Administrators Q#8934, answer score: 4
Revisions (0)
No revisions yet.