复制概述
复制是一项功能,允许将一个或多个服务器(称为主服务器)的内容镜像到一个或多个服务器(称为副本)上。
您可以控制要复制的数据。每个数据库、一个或多个数据库,或者数据库中的表都可以被选择性地复制。
复制中使用的主要机制是二进制日志。如果启用了二进制日志记录,则所有对数据库(数据操作和数据定义)的更新都将被写入二进制日志作为 binlog 事件。副本从每个主服务器读取二进制日志以访问要复制的数据。在副本上创建一个中继日志,使用与二进制日志相同的格式,用于执行复制。不再需要旧的中继日志文件时,将其删除。
副本服务器跟踪在副本上应用的最后一个事件在主服务器的 binlog 中的位置。这使得副本服务器能够重新连接并从停止复制的位置恢复。它还允许副本断开连接,被克隆,然后新副本从同一主服务器恢复复制。
主服务器和副本不需要与彼此保持持续通信。完全可以将服务器脱机或断开网络连接,当它们重新上线时,复制将在上次停止的地方继续。
复制用途
复制在许多常见场景中使用。用途包括:
- 可扩展性。通过拥有一个或多个副本,可以将读取分散在多个服务器上,减少主服务器的负载。高读取、低写入环境的最常见方案是拥有一个主服务器,在其中进行所有写入,并将其复制到多个副本中,这些副本处理大部分读取。
- 数据分析。分析数据可能对主服务器产生太大的影响,类似地,可以在副本上处理它,而主服务器则不受额外负载的影响。
- 备份辅助。如果服务器不活跃地更改数据,则可以更轻松地运行备份。常见的情况是将数据复制到副本中,然后将其与主服务器断开连接,并使数据处于稳定状态。然后从该服务器执行备份。请参见“作为备份解决方案的复制”。
- 数据分发。与连接到远程主服务器不同,可以在本地复制数据并从这些数据中工作。
常见的复制设置
标准复制
- 提供无限的读取扩展。
- 通过将副本升级为主服务器提供高可用性。
环形复制
- 提供读取和写入扩展。
- 不能处理冲突。
- 如果一个主服务器故障,复制就会停止。
星型复制
- 提供读取和写入扩展。
- 不能处理冲突。
- 必须使用复制过滤器来避免数据重复。
多源复制
- 允许您合并来自不同来源的数据。
- 不同的域在所有副本上独立并行执行。
跨版本复制兼容性
下表描述了不同 MariaDB Server 版本之间的复制兼容性。通常情况下,副本应该至少与主服务器版本相等:
Primary→ | MariaDB 10.3 | MariaDB 10.4 | MariaDB 10.5 | MariaDB 10.6 | MariaDB 10.11 | |
---|---|---|---|---|---|---|
Replica ↓ | ||||||
MariaDB 10.3 | ✅ | ⛔ | ⛔ | ⛔ | ⛔ | |
MariaDB 10.4 | ✅ | ✅ | ⛔ | ⛔ | ⛔ | |
MariaDB 10.5 | ✅ | ✅ | ✅ | ⛔ | ⛔ | |
MariaDB 10.6 | ✅ | ✅ | ✅ | ✅ | ⛔ | |
MariaDB 10.11 | ✅ | ✅ | ✅ | ✅ | ✅ |
- ✅: 此组合受支持。
- ⛔: 此组合不受支持。
有关 MariaDB 和 MySQL 之间复制兼容性的详细信息,请参见MariaDB vs MySQL - 兼容性:复制兼容性。
参见
Content reproduced on this site is the property of its respective owners,
and this content is not reviewed in advance by MariaDB. The views, information and opinions
expressed by this content do not necessarily represent those of MariaDB or any other party.