阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Percona XtraDB Cluster 如何在一台服务器上安装两个集群节点

155次阅读
没有评论

共计 2384 个字符,预计需要花费 6 分钟才能阅读完成。

我认为在单个物理服务器上运行 2 个或多个 Percona XtraDB Cluster(PXC) 节点这样没有什么意义,除了教育和测试目的, 但在这种情况下这样做仍然是有用的。最受欢迎的实现方式似乎是服务器的虚拟化, 比如利用流浪盒子。但是同样的方式你可以运行多个 MySQL 实例在并行操作系统级别上,还有并发的 mysqld 的形成过程, 因此你也可以有多个 Percona XtraDB Cluster 节点。而且实现这一目标的方法是恰恰相同的: 使用专用的 datadirs 和为每个节点设置不同的端口。

哪个端口?

Pecona XtraDB Cluster 使用 4 个 TCP 端口:

  • 常规的 MySQL 端口 (默认 3306)

  • (Galera)(默认 4567)

  • 状态传输端口(默认 4444)

  • 增量状态传输端口 (默认是: 组通信端口 (4567)+ 1 = 4568)

当然, 当你在同一台服务器上有多个实例的默认值,并不适用于所有人, 所以我们需要为其他实例定义新的端口, 确保本地防火墙对他们是开放的, 如果有一个活动 (iptables,selinux,…)。

安装 Percona XtraDB 集群,配置并启动第一个节点

我的测试服务器用的是一个全新的 CentOS(社区企业操作系统)6.5 版,系统安装了 Percona yum 工具,通过工具我安装了最新的 Percona XtraDB 集群(5.6.20-25.7.888.el6 版本);注意:你可能需要安装 EPEL(企业版 Linux 额外包)和 socat(Socket CAT)工具,这两个工具是独立的(见 bug)。为了避免冲突,我已经停止了 mysql 服务的自启动:

chkconfig –level 3 mysql off
chkconfig –del mysql

我原本计划从压缩包中安装 PXC(Percona XtraDB Cluster),但是后来我决定通过 yum 工具进行安装,这样可以自动下载所有依赖包。这是我最初的 /etc/my.cnf 文件(注意默认值的使用):

[mysqld]
datadir = /var/lib/mysql
port=3306
socket=/var/lib/mysql/mysql-node1.sock
pid-file=/var/lib/mysql/mysql-node1.pid
log-error=/var/lib/mysql/mysql-node1.err
binlog_format=ROW
innodb_autoinc_lock_mode=2
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_name = singlebox
wsrep_node_name = node1
wsrep_cluster_address=gcomm://

我使用下面的命令手动启动了一个节点上的集群引导程序:

$ mysqld_safe –defaults-file=/etc/my.cnf –wsrep-new-cluster

启动后,你应当可以通过本地接口访问该节点:

$ mysql -S /var/lib/mysql/mysql-node1.sock

配置和启动第二个节点

然后,我创建了一个类似的第二个实例配置文件的配置, 我叫 /etc/my2.cnf, 有以下修改:

[mysqld]
datadir = /var/lib/mysql2
port=3307
socket=/var/lib/mysql2/mysql-node2.sock
pid-file=/var/lib/mysql2/mysql-node2.pid
log-error=/var/lib/mysql2/mysql-node2.err
binlog_format=ROW
innodb_autoinc_lock_mode=2
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_cluster_name = singlebox
wsrep_node_name = node2
wsrep_cluster_address=gcomm://127.0.0.1:4567,127.0.0.1:5020
wsrep_provider_options = “base_port=5020;”

注意使用 base_port: 通过它定义的,5020 端口是用于组通信和 5020(上面) 为 IST 保留着 (一样简单的使用 gmcast.listen_addr =tcp:/ / 127.0.0.1:5021)。

您需要在这第二个实例中为 datadir 创建和设置正确的权限,否则 MySQL 无法创建一些文件 (像.pid 和.err), 虽然你不需要运行 mysql_install_db 脚本:

$ chown -R mysql:mysql /var/lib/mysql2

然后, 您可以用以下命令启动第二个实例:

$ mysqld_safe –defaults-file=/etc/my2.cnf

当开始时, 通过看日志来观察这第二个节点开始, 与主节点间的通信和加入集群。从一开始的实例在不同的终端上执行:

$ tail -f /var/log/mysql2/mysql-node2.err

记住, 任何时候都可以使用 mysqladmin 停止节点, 您只需要提供正确的套接字作为参数, 如:

$ mysqladmin -S /var/lib/mysql/mysql-node1.sock shutdown

最后, 一旦你有整个集群,你应该编辑 my.cnf 中的第一节点与一个完整的 wsrep_cluster_addres,在 /etc/my2.cnf 上面显示。

英文原文:Percona XtraDB Cluster: How to run a 2-node cluster on a single server

Percona XtraDB Cluster 的详细介绍 :请点这里
Percona XtraDB Cluster 的下载地址 :请点这里

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计2384字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中