It’s been 20 years since MySQL Replication was introduced in MySQL 3.23.15 (Released in May 2000). Since then, virtually every MySQL Database deployment in production has been using Replication in order to achieve high availability, disaster recovery, read scale out and various other purposes.
Anyone using MySQL Replication is familiar with the terms: “master” and “slave”. The origins of these words are negative. That is clear. At MySQL, we made the decision to change this terminology. Already, many of us have changed how we refer to these roles in blogposts and presentations — usually using terms like “primary”, “secondary”, “source”, and “replica”. We have now started the process of changing the MySQL syntax in our source code and documentation to match this.
Our latest products already rely on the use of Primary/Secondary to define different roles servers can have in the database architecture:
- MySQL Group Replication
- MySQL InnoDB Cluster
- MySQL InnoDB ReplicaSet
The following terminology changes will be implemented in all MySQL products in upcoming releases:
Why was “source” chosen? MySQL Asynchronous Replication is a change stream. Each replication configuration has a source and does not imply what role a server should have in the overall database architecture. Therefore, the use of e.g. “primary” does not fit, especially when replication is used to build database architectures topologies including bidirectional replication, multi-tiered replication, or even circular replication.
It will take some time to make these changes. One quick way to remove some of the syntax would be to add aliases for the existing commands, e.g.
SHOW SLAVE STATUS becoming
SHOW REPLICA STATUS. That is not enough, many of these commands return results with column names that include the text “master” and “slave”.
Completely removing the use of these legacy terminologies is a huge undertaking.
To retain backwards compatibility, some of these terminologies need to be deprecated first and then later removed. It is important that we make the new syntax eg.
SHOW REPLICA STATUS the recommended syntax and not merely an ‘alternative’ syntax.
It is impossible to remove all references in one release. There are millions of deployments of MySQL we have to keep on supporting. It will take several iterations to deprecate and/or remove these terminologies from our syntax, protocol, error messages, source code…
Earlier this week, the documentation team published the first phase of terminology changes in the MySQL 8.0 documentation.
Training & Certification and forthcoming MySQL product releases will incorporate gradual changes to the terminology as well.
— The Oracle MySQL Team