• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在本地部署组复制

    部署组复制的最常见方法是使用多个服务器实例,以提供高可用性。也可以在本地部署组复制,例如出于测试目的。本节说明如何在本地部署组复制。

    重要

    组复制通常部署在多个主机上,因为这样可以确保提供高可用性。本节中的说明不适用于生产部署,因为所有MySQL服务器实例都在同一台主机上运行。如果该主机发生故障,则整个组都会失败。因此,此信息应用于测试目的,不应在生产环境中使用。

    本节说明如何在一台物理计算机上使用三个MySQL Server实例创建复制组。这意味着需要三个数据目录,每个服务器实例一个,并且您需要独立配置每个实例。此过程假定已下载MySQL Server并将其解压缩到名为的目录中mysql-8.0。每个MySQL服务器实例都需要一个特定的数据目录。创建一个名为的目录data,然后在该目录中为每个服务器实例(例如s1,s2和s3)创建一个子目录,并初始化每个目录。

    mysql-8.0/bin/mysqld --initialize-insecure --basedir=$PWD/mysql-8.0 --datadir=$PWD/data/s1
    mysql-8.0/bin/mysqld --initialize-insecure --basedir=$PWD/mysql-8.0 --datadir=$PWD/data/s2
    mysql-8.0/bin/mysqld --initialize-insecure --basedir=$PWD/mysql-8.0 --datadir=$PWD/data/s3
    

    里面data/s1data/s2data/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上图所示。

    “以单主模式部署组复制”的其余步骤同样适用于以这种方式在本地部署的组。