部署组复制的最常见方法是使用多个服务器实例,以提供高可用性。也可以在本地部署组复制,例如出于测试目的。
组复制通常部署在多个主机上,因为这样可以确保提供高可用性。本地部署不适用于生产环境,因为所有MySQL服务器实例都在同一台主机上运行。如果该主机发生故障,则整个组都将失败。因此,此应用于测试目的,不应在生产环境中使用。
本节说明如何在一台物理计算机上使用三个MySQL Server实例创建复制组。这意味着需要三个数据目录,每个服务器实例一个,并且您需要独立配置每个实例。此过程假定已下载MySQL Server并将其解压缩到名为的目录中
mysql-5.7
。每个MySQL服务器实例都需要一个特定的数据目录。创建一个名为的目录
data
,然后在该目录中为每个服务器实例(例如s1,s2和s3)创建一个子目录,并初始化每个目录。
mysql-5.7/bin/mysqld --initialize-insecure --basedir=$PWD/mysql-5.7 --datadir=$PWD/data/s1 mysql-5.7/bin/mysqld --initialize-insecure --basedir=$PWD/mysql-5.7 --datadir=$PWD/data/s2 mysql-5.7/bin/mysqld --initialize-insecure --basedir=$PWD/mysql-5.7 --datadir=$PWD/data/s3
里面
data/s1
,
data/s2
,
data/s3
是一个初始化的数据目录,包含了MySQL系统数据库和相关表等等。
不要
-initialize-insecure
在生产环境中使用,仅在此处用于简化教程。
例如:
[mysqld] # server configuration datadir=<full_path_to_data>/data/s1 basedir=<full_path_to_bin>/mysql-8.0/ port=24801 socket=<full_path_to_sock_dir>/s1.sock
这些设置将MySQL服务器配置为使用先前创建的数据目录,以及服务器应打开哪个端口并开始监听传入的连接。
使用非默认端口24801,因为在本教程中,三个服务器实例使用相同的主机名。在具有三台不同机器的设置中,将不需要这样做。
组复制需要成员之间的网络连接,这意味着每个成员都必须能够解析所有其他成员的网络地址。例如,在本教程中,所有三个实例都在一台计算机上运行,因此,为确保成员可以相互联系,您可以在选项文件中添加一行,例如 report_host=127.0.0.1。
然后,每个成员都需要能够连接到其上的其他成员 group_replication_local_address。例如,在成员s1的选项文件中添加:
group_replication_local_address= "127.0.0.1:24901" group_replication_group_seeds= "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
这会将s1配置为使用端口24901与种子成员进行内部组通信。对于要添加到组中的每个服务器实例,请在成员的选项文件中进行这些更改。对于每个成员,您必须确保指定了唯一的地址,因此请为的每个实例使用唯一的端口 group_replication_local_address。通常,您希望所有成员都能充当加入该组且尚未得到该组处理的交易的成员的种子。在这种情况下,将所有端口添加到 group_replication_group_seeds 上图所示。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69993564/viewspace-2758585/,如需转载,请注明出处,否则将追究法律责任。