Percona XtraDB Cluster (PXC)

Percona XtraDB Cluster 提供了一个高性能集群环境,可帮助轻松配置和管理多台服务器上的数据库。它使数据库能够使用二进制日志相互通信。集群环境有助于在不同的数据库服务器之间分配负载,并在服务器出现故障时提供安全保障。

要建立集群,我们需要以下服务器:

  • 一台 IP 为 10.211.55.1 的服务器,我们将其称为 Node1

  • IP 为 10.211.55.2 的第二个服务器,我们将其称为 Node2

  • 第三台服务器的 IP 为 10.211.55.3,我们将其称为 Node3

由于我们的源代码中已经有了 Percona 存储库,因此让我们先安装和配置 Percona XtraDB Cluster(也称为 PXC)。执行以下步骤:

  1. 首先,通过在终端中发出以下命令在 Node1 上安装 Percona XtraDB Cluster:

    apt-get install percona-xtradb-cluster-56

    安装的启动方式与普通 Percona Server 安装类似。在安装过程中,还会询问 root 用户的密码。

  2. 安装完成后,我们需要创建一个具有复制权限的新用户。登录 MySQL 终端后,输入以下命令:

    CREATE USER 'sstpackt'@'localhost' IDENTIFIED BY
    'sstuserpassword';
    
    GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO
    'sstpackt'@'localhost';
    
    FLUSH PRIVILEGES;

    第一个查询会创建一个用户,用户名为 sstpackt,密码为 sstuserpassword。用户名和密码可以是任何东西,但建议使用良好且强大的密码。第二个查询为新用户设置适当的权限,包括锁定表和复制。第三个查询将刷新权限。

  3. 现在,打开位于 /etc/mysql/my.cnf 的 MySQL 配置文件。然后,在 mysqld 块中放入以下配置:

    #Add the galera library
    wsrep_provider=/usr/lib/libgalera_smm.so
    
    #Add cluster nodes addresses
    wsrep_cluster_address=gcomm://10.211.55.1,10.211.55.2,
    10.211.55.3
    
    #The binlog format should be ROW. It is required for galera to
    work properly
    binlog_format=ROW
    
    #default storage engine for mysql will be InnoDB
    default_storage_engine=InnoDB
    
    #The InnoDB auto increment lock mode should be 2, and it is
    required for galera
    innodb_autoinc_lock_mode=2
    
    #Node 1 address
    wsrep_node_address=10.211.55.1
    
    #SST method
    wsrep_sst_method=xtrabackup
    
    #Authentication for SST method. Use the same user name and
    password created in above step 2
    wsrep_sst_auth="sstpackt:sstuserpassword"
    
    #Give the cluster a name
    wsrep_cluster_name=packt_cluster

    添加完上述配置后保存文件。

  4. 现在,通过发出以下命令启动第一个节点:

    /etc/init.d/mysql bootstrap-pxc

    这将启动第一个节点。引导意味着让初始集群启动并运行,并定义哪个节点拥有正确的信息,以及所有其他节点应同步到哪个节点。由于 Node1 是我们的初始集群节点,而且我们在这里创建了一个新用户,因此我们只需对 Node1 进行引导。

    SST 代表状态快照传输。它负责将完整数据从一个节点复制到另一个节点。只有在集群中添加了新节点,且该节点必须从现有节点获取完整的初始数据时,才会使用它。Percona XtraDB Cluster 中有三种 SST 方法:mysqldump、rsync 和 xtrabackup。

  5. 登录到第一个节点上的 MySQL 终端并发出以下命令:

    SHOW STATUS LIKE '%wsrep%';

    将显示一个很长的列表。下面的屏幕截图显示了其中一些:

    image 2023 11 05 20 39 13 049
  6. 现在,对所有节点重复步骤 1 和步骤 3。每个节点唯一需要更改的配置是 wsrep_node_address,它应该是节点的 IP 地址。编辑所有节点的 my.cnf 配置文件,将节点地址放入 wsrep_node_address

  7. 通过在终端中发出以下命令来启动两个新节点:

    /etc/init.d/mysql start

    现在可以通过重复步骤 7 来验证每个节点。

要验证群集是否运行正常,请在一个节点上创建一个数据库,并在表中添加一些表和数据。然后,检查其他节点是否有新创建的数据库、表以及输入到每个表中的数据。我们将把所有这些数据同步到每个节点。