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)。执行以下步骤:
-
首先,通过在终端中发出以下命令在 Node1 上安装 Percona XtraDB Cluster:
apt-get install percona-xtradb-cluster-56
安装的启动方式与普通 Percona Server 安装类似。在安装过程中,还会询问 root 用户的密码。
-
安装完成后,我们需要创建一个具有复制权限的新用户。登录 MySQL 终端后,输入以下命令:
CREATE USER 'sstpackt'@'localhost' IDENTIFIED BY 'sstuserpassword'; GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstpackt'@'localhost'; FLUSH PRIVILEGES;
第一个查询会创建一个用户,用户名为
sstpackt
,密码为sstuserpassword
。用户名和密码可以是任何东西,但建议使用良好且强大的密码。第二个查询为新用户设置适当的权限,包括锁定表和复制。第三个查询将刷新权限。 -
现在,打开位于
/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
添加完上述配置后保存文件。
-
现在,通过发出以下命令启动第一个节点:
/etc/init.d/mysql bootstrap-pxc
这将启动第一个节点。引导意味着让初始集群启动并运行,并定义哪个节点拥有正确的信息,以及所有其他节点应同步到哪个节点。由于 Node1 是我们的初始集群节点,而且我们在这里创建了一个新用户,因此我们只需对 Node1 进行引导。
SST 代表状态快照传输。它负责将完整数据从一个节点复制到另一个节点。只有在集群中添加了新节点,且该节点必须从现有节点获取完整的初始数据时,才会使用它。Percona XtraDB Cluster 中有三种 SST 方法:mysqldump、rsync 和 xtrabackup。
-
登录到第一个节点上的 MySQL 终端并发出以下命令:
SHOW STATUS LIKE '%wsrep%';
将显示一个很长的列表。下面的屏幕截图显示了其中一些:
-
现在,对所有节点重复步骤 1 和步骤 3。每个节点唯一需要更改的配置是
wsrep_node_address
,它应该是节点的 IP 地址。编辑所有节点的my.cnf
配置文件,将节点地址放入wsrep_node_address
。 -
通过在终端中发出以下命令来启动两个新节点:
/etc/init.d/mysql start
现在可以通过重复步骤 7 来验证每个节点。
要验证群集是否运行正常,请在一个节点上创建一个数据库,并在表中添加一些表和数据。然后,检查其他节点是否有新创建的数据库、表以及输入到每个表中的数据。我们将把所有这些数据同步到每个节点。