PXC双机交差集群配置
- 格式:docx
- 大小:344.84 KB
- 文档页数:7
PXC5.6实验集群的安装与设置PXC5.6实验集群的安装与设置⽬录1.⽬的: (4)2.集群构成: (5)2.1.集群构成图: (5)2.2.集群构成明细: (5)3.安装设置操作步骤: (6)3.1.安装Percona Yum Repository: (6)3.2.安装EPEL源: (7)3.3.安装PXC (7)3.4.创建及设置数据⽬录 (8)3.5.开通PXC相关IP端⼝ (9)3.6.关闭SELinux (10)3.7.设置f启动项⽂件 (10)3.8.启动集群 (12)4.通过HAProxy实现PXC集群负载均衡: (14)4.1.安装HAProxy (14)4.2.设置HAProxy (14)4.3.启动HAProxy (16)4.4.增加集群状态检查进程⽤Mysql⽤户权限 (16)4.5.为集群每⼀个节点服务器安装xinetd (17)4.6.配置xinetd (17)4.7.通过HAProxy查看数据库集群状态: (18)5.⽤Keepalived解决HAProxy单点故障: (20)5.1.安装配置备份代理服务器 (20)5.2.安装Keepalived (21)5.3.在主HAProxy代理服务器中设置Keepalived (21)5.4.在备份HAProxy代理服务器中设置Keepalived (23)5.5.验证虚拟IP的漂移 (24)6.问题排查及解决: (25)6.1.ERROR 1047 (08S01): WSREP has not yet prepared node for application use (25)1.⽬的:本⼿册⽤于介绍如何通过在三台CentOS6.6服务器上安装PerconaXtraDB Cluster5.6,来搭建⼀个拥有三个数据节点的的MySQL数据库集群。
以及如何⽤另外两台CentOS6.6服务器,通过安装HAPrxoy+Keepalived来实现MySQL集群的负载均衡。
使用红帽群集软件实现应用服务双机安装配置操作系统版本:redhat linux AS 4U5群集软件版本:redhat cluster suite 4.5一、群集实施前期系统配置1.编辑/etc/hosts文件,加入IP地址和主机对应表,修改后的hosts示范如下: [root@app1 /]# cat /etc/hosts# Do not remove the following line, or various programs# that require network functionality will fail.127.0.0.1 localhost.localdomain localhost125.88.105.82 app1125.88.105.83 app2192.168.10.7 app1-priv192.168.10.8 app2-priv2.HP ILO卡配置(每个节点都执行)注:此次只是为ilo卡配指定的ip及新增一个管理用户开机自检时,按F8键进入iLO的设置界面:1.进入iLO的设置:这项是将所有的设置恢复为出厂值。
2.配置网络:分别设置IP 地址和DNS。
IP应在同一个网段中,注意子网掩码的一致。
(只有在DHCP被设为Disable时,才能设置IP address/Subnet Mask/Gateway IP address)DNS的名字在服务器前面带的卡片上,还包括管理员的账号和密码。
IP必须是静态的,所以DHCP需设置为OFF。
3.在这里可以添加、删除、更改远程访问User的密码,权限等。
Add userRemoveEdit4.Settings 的选项设置Keyboard的属性等,一般都为默认值。
5.About中为iLO的firmware version等一些信息。
3.建文件系统挂载点/data(每节点运行)[root@app1 root]# mkdir /data二、安装群集软件(每个节点运行)在AS4上配置红帽群集管理器需要安装cluster suite 4。
集群的配置步骤一、搭建集群环境的准备工作在开始配置集群之前,我们需要先进行一些准备工作。
首先,确保所有服务器都已经正确连接到网络,并且能够相互通信。
其次,确保每台服务器上已经安装了操作系统,并且操作系统版本一致。
最后,确保每台服务器上已经安装了必要的软件和工具,例如SSH、Java等。
二、创建集群的主节点1.选择一台服务器作为集群的主节点,将其IP地址记录下来。
2.登录到主节点服务器上,安装并配置集群管理软件,例如Hadoop、Kubernetes等。
3.根据集群管理软件的要求,配置主节点的相关参数,例如集群名称、端口号等。
4.启动集群管理软件,确保主节点能够正常运行。
三、添加集群的工作节点1.选择一台或多台服务器作为集群的工作节点,将其IP地址记录下来。
2.登录到工作节点服务器上,安装并配置集群管理软件,确保与主节点的版本一致。
3.根据集群管理软件的要求,配置工作节点的相关参数,例如主节点的IP地址、端口号等。
4.启动集群管理软件,确保工作节点能够正常连接到主节点。
四、测试集群的连接和通信1.在主节点服务器上,使用集群管理软件提供的命令行工具,测试与工作节点的连接和通信。
例如,可以使用Hadoop的hdfs命令测试与工作节点的文件系统的连接。
2.确保主节点能够正确访问工作节点的资源,并且能够将任务分配给工作节点进行处理。
五、配置集群的资源管理1.根据集群管理软件的要求,配置集群的资源管理策略。
例如,可以设置工作节点的CPU和内存的分配比例,以及任务的调度算法等。
2.确保集群能够合理分配资源,并且能够根据需要动态调整资源的分配。
六、监控和管理集群1.安装并配置集群的监控和管理工具,例如Ganglia、Zabbix等。
2.确保监控和管理工具能够正常运行,并能够及时发现和处理集群中的故障和问题。
3.定期对集群进行巡检和维护,确保集群的稳定和可靠性。
七、优化集群的性能1.根据实际情况,对集群的各项参数进行调优,以提高集群的性能和效率。
docker安装PXC的MySQL集群一、MySQL集群安装环境(一)操作系统(二)相关插件1、socat插件用来监视Docker API(必须安装)socat是一个十分强大的命令行工具,它允许你在几乎任何类型的两个数据通道之间中继数据,从而可以嗅探到两个数据通道的通信,进行分析。
可以把它看成是一个增强版本的netcat。
安装指令:(1)debian/ubuntu系统安装指令aitalk@luo:~$ sudo apt-get install socat(2)centos/redhat系统安装指令aitalk@luo:~$ sudo yum install -y socat二、安装Percona XtraDB Cluster(一)docker下载镜像1、通过docker拉取MySQLaitalk@luo:~$ sudo docker pull percona/percona-xtradb-cluster:5.7.22未指定版本号,下载默认是lastes版本,这里指定版本号:docker pull percona/percona-xtradb-cluster:5.7.222、查看MySQL镜像aitalk@luo:~$ sudo docker images(二)配置percona-xtradb-cluster相关环境1、创建自定义网络:(设置固定IP)root@luo:~# docker network create --subnet=172.19.0.0/16 pxc-mysql-network2、创建 Docker卷通常我们通过 docker的目录映射机制将业务数据存储到我们的宿主机上。
但是PXC集群技术比较特殊,如果为PXC 集群使用了docker的目录映射技术,PXC会闪退,因此要采用另外一种目录映射技术,即使用 docker卷。
(1)MySQL配置文件目录aitalk@luo:~$ sudo docker volume create v1-etc (2)MySQL数据文件目录aitalk@luo:~$ sudo docker volume create v1-data (3)MySQL日志文件目录aitalk@luo:~$ sudo docker volume create v1-logs2、查看 Docker卷aitalk@luo:~$ sudo docker volume ls3、查看 Docker卷映射目录aitalk@luo:~$ sudo docker volume inspect v1-etc(三)创建percona-xtradb-cluster容器1、执行创建 Docke容器命令aitalk@luo:~$ sudo docker run -itd \-p 3326:3306 \--name=my-node1 \-e MYSQL_ROOT_PASSWORD=123456 \-e XTRABACKUP_PASSWORD=123456 \-e CLUSTER_NAME=aitalk-pcx \--net=pxc-mysql-network \--ip 172.19.0.2 \-v v1-etc:/etc/mysql \-v v1-data:/var/lib/mysql \-v v1-logs:/var/log/mysql \--privileged \-ddocker.io/percona/percona-xtradb-cluster:5.7.222、执行命令截图3、命令参数说明-p: 映射本地端口3326。
MySQL⾼可⽤⽅案-PXC环境部署记录之前梳理了,对于mysql⾼可⽤⽅案,经常⽤到的的主要有下⾯三种:⼀、基于主从复制的⾼可⽤⽅案:双节点主从 + keepalived⼀般来说,中⼩型规模的时候,采⽤这种架构是最省事的。
两个节点可以采⽤简单的⼀主⼀从模式,或者双主模式,并且放置于同⼀个VLAN中,在master节点发⽣故障后,利⽤keepalived/heartbeat的⾼可⽤机制实现快速切换到slave节点。
在这个⽅案⾥,有⼏个需要注意的地⽅:采⽤keepalived作为⾼可⽤⽅案时,两个节点最好都设置成BACKUP模式,避免因为意外情况下(⽐如脑裂)相互抢占导致往两个节点写⼊相同数据⽽引发冲突;1)把两个节点的auto_increment_increment(⾃增步长)和auto_increment_offset(⾃增起始值)设成不同值。
其⽬的是为了避免master节点意外宕机时,可能会有部分binlog未能及时复制到slave上被应⽤,从⽽会导致slave新写⼊数据的⾃增值和原先master上冲突了,因此⼀开始就使其错开;当然了,如果有合适的容错机制能解决主从⾃增ID冲突的话,也可以不这么做;2)slave节点服务器配置不要太差,否则更容易导致复制延迟。
作为热备节点的slave服务器,硬件配置不能低于master节点;3)如果对延迟问题很敏感的话,可考虑使⽤MariaDB分⽀版本,或者直接上线MySQL 5.7最新版本,利⽤多线程复制的⽅式可以很⼤程度降低复制延迟;4)对复制延迟特别敏感的另⼀个备选⽅案,是采⽤semi sync replication(就是所谓的半同步复制)或者后⾯会提到的PXC⽅案,基本上⽆延迟,不过事务并发性能会有不⼩程度的损失,需要综合评估再决定;5)keepalived的检测机制需要适当完善,不能仅仅只是检查mysqld进程是否存活,或者MySQL服务端⼝是否可通,还应该进⼀步做数据写⼊或者运算的探测,判断响应时间,如果超过设定的阈值,就可以启动切换机制;6)keepalived最终确定进⾏切换时,还需要判断slave的延迟程度。
服务器双机热备方案 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】双机热备方案双机热备针对的是服务器的临时故障所做的一种备份技术,通过双机热备,来避免长时间的服务中断,保证系统长期、可靠的服务。
1.集群技术在了解双机热备之前,我们先了解什么是集群技术。
集群(Cluster)技术是指一组相互独立的计算机,利用高速通信网络组成一个计算机系统,每个群集节点(即集群中的每台计算机)都是运行其自己进程的一个独立服务器。
这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据,并以单一系统的模式加以管理。
一个客户端(Client)与集群相互作用时,集群像是一个独立的服务器。
计算机集群技术的出发点是为了提供更高的可用性、可管理性、可伸缩性的计算机系统。
一个集群包含多台拥有共享数据存储空间的服务器,各服务器通过内部局域网相互通信。
当一个节点发生故障时,它所运行的应用程序将由其他节点自动接管。
其中,只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。
当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续对外提供服务。
可见,双机热备是集群技术中最简单的一种。
2. 双机热备适用对象一般邮件服务器是要长年累月工作的,且为了工作上需要,其邮件备份工作就绝对少不了。
有些企业为了避免服务器故障产生数据丢失等现象,都会采用RAID技术和数据备份技术。
但是数据备份只能解决系统出现问题后的恢复;而RAID技术,又只能解决硬盘的问题。
我们知道,无论是硬件还是软件问题,都会造成邮件服务的中断,而RAID及数据备份技术恰恰就不能解决避免服务中断的问题。
要恢复服务器,再轻微的问题或者强悍的技术支持,服务器都要中断一段时间,对于一些需要随时实时在线的用户而言,丢失邮件就等于丢失金钱,损失可大可小,这类用户是很难忍受服务中断的。
mysql pxc 集群原理-回复MySQL PXC(Percona XtraDB Cluster)集群原理PXC是一个基于MySQL InnoDB引擎的高可用性和可扩展性的集群解决方案。
它通过使用多主复制和基于Galera集群的同步复制来确保数据的一致性和高可用性。
本文将详细介绍PXC集群的原理,并逐步回答相关问题。
1. 什么是PXC集群?PXC集群是一个由多个MySQL节点组成的集群,并通过相互之间的同步复制来实现数据的分布和高可用性。
每个节点都是一个独立的数据库服务器,具有自己的内存、CPU和磁盘资源。
2. PXC集群使用了什么技术来实现数据的同步复制?PXC集群使用了Galera集群技术来实现同步复制。
Galera集群是一个开源的同步复制解决方案,它通过在每个节点上应用相同的写操作来保证数据的一致性。
3. PXC集群是如何处理写入操作的?当一个节点接收到一个写入操作时,它会将该操作应用到其本地的数据库副本上,并将该写入操作发送给其他节点。
其他节点也会将该写入操作应用到它们的本地数据库副本上。
只有当大多数节点确认已经应用了该写入操作时,该操作才会被认为是提交成功的。
4. PXC集群是如何处理读取操作的?PXC集群允许所有节点都可用于处理读取操作。
当一个读取请求到达集群时,该请求会被转发到任意一个节点上进行处理。
由于所有节点都有相同的数据副本,所以无论请求转发到哪个节点,返回的结果应保持一致。
5. PXC集群中的节点如何通信?PXC集群中的节点使用多播和单播两种方式进行通信。
在多播方式下,节点通过组播地址将状态变更、写入操作和心跳消息发送给其他节点。
而在单播方式下,节点通过互相通信的IP地址来进行节点之间的通信。
6. PXC集群中的节点如何检测其他节点的可用性?每个节点都会定期发送心跳消息给其他节点。
通过检测其他节点是否有响应来确定其是否可用。
如果一个节点无法检测到其他节点的心跳消息,那么它会认为其他节点已经失效,并从集群中移除。
mysqlpxc的工作流程MySQL PXC (Percona XtraDB Cluster) 是一个基于Galera Cluster 的多主复制集群解决方案。
它允许用户通过在多个节点部署MySQL来提供高可用性和性能扩展。
MySQLPXC的工作流程包括以下几个步骤:1.节点启动和加入集群:每个PXC节点首先启动MySQL服务,并指定一个特定的集群配置文件,以便与其他节点进行通信。
节点启动后,它会尝试加入现有的集群。
初始启动的节点将成为主节点,其他节点将成为备用节点。
2. 数据同步和复制:一旦一个节点成功加入集群,其余的节点将自动连接到该节点,并开始同步数据。
这些节点通过使用增量数据复制和流行的Galera replication协议来同步数据。
任何一个节点上的数据修改都将自动被复制到其他节点,确保数据在整个集群中保持一致。
3. 写入操作:当客户端发送一个写入操作(如插入、更新或删除)到主节点时,主节点会将操作传播到其他节点,这些节点会根据Galera 协议在本地执行相同的操作。
一旦操作在大多数节点上成功提交,它被认为是在整个集群中提交的。
这个过程确保了数据的一致性。
4. 读取操作:当客户端发送一个读取操作(如查询)到任意一个节点时,该节点会根据Galera协议返回最新的数据。
由于所有节点上的数据是一致的,客户端可以从任何一个节点读取数据,这样可以实现负载均衡和水平扩展。
5. 一致性和冲突解决:由于MySQL PXC是一个基于多主复制的解决方案,可能会发生数据冲突的情况。
当多个节点同时修改同一行数据时,Galera协议会检测到冲突,并将其标记为待解决的冲突。
默认情况下,冲突解决策略是最后写入(Last Write Wins),即最后修改同一行的操作将覆盖其他操作。
但用户也可以通过自定义冲突解决规则来处理冲突。
6.故障处理和故障转移:如果一个节点发生故障或关闭,剩余的节点将继续提供服务,确保高可用性。
MySQLPXC⾼可⽤集群搭建⼀些名词介绍:WS:write set 写数据集IST: Incremental State Transfer 增量同步SST:State Snapshot Transfer 全量同步pxc环境所涉及的端⼝:#mysql实例端⼝1. Regular MySQL port, default 3306.#pxc cluster相互通讯的端⼝2. Port for group communication, default 4567. It can be changed by the option:wsrep_provider_options ="gmcast.listen_addr=tcp://0.0.0.0:4010; "#⽤于SST传送的端⼝3. Port for State Transfer, default 4444. It can be changed by the option:wsrep_sst_receive_address=10.11.12.205:5555#⽤于IST传送的端⼝4. Port for Incremental State Transfer, default port for group communication + 1 (4568). It can be changed by the option:wsrep_provider_options = "ist.recv_addr=10.11.12.206:7777; "搭建步骤:⼀、环境情况:node1:192.168.1.81:6000node2:192.168.1.240:6000node3:192.168.1.241:6000⼆、防⽕墙设置:-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #本实验需要改为6000-A INPUT -m state --state NEW -m tcp -p tcp --dport 4444 -j ACCEPT #本实验需要改为6020-A INPUT -m state --state NEW -m tcp -p tcp --dport 4567 -j ACCEPT #本实验需要改为6030-A INPUT -m state --state NEW -m tcp -p tcp --dport 4568 -j ACCEPT #本实验需要改为6031setenforce 0⼆、下载安装,在node1,node2,node3分别进⾏如下安装yum install -y /downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpmyum install -y perl-DBD-MySQL.x86_64 perl-IO-Socket-SSL.noarch socat.x86_64 ncyum install -y openssl openssl-devel#step 1 prepare :5.6.26 needs libssl.so.6 libcrypto.so.6 ()cd /usr/lib64ln -s libssl.so.1.0.1e libssl.so.6ln -s libcrypto.so.1.0.1e libcrypto.so.6#step2:download pxccd /usr/local/srcwget https:///downloads/Percona-XtraDB-Cluster-56/Percona-XtraDB-Cluster-5.6.26-25.12/binary/tarball/Percona-XtraDB-Cluster-5.6.26-rel74.0-25.12.1.Linux.x86_64.tar.gz cd /usr/localmv Percona-XtraDB-Cluster-5.6.26-rel74.0-25.12.1.Linux.x86_64.tar.gz pxc_56#step3:install pxccd /usr/local/pxc_56./scripts/mysql_install_db --defaults-file=/home/mysql/f --basedir=/usr/local/pxc_56chown -R mysql. /home/mysqlchown -R mysql. /usr/local/pxc_56配置⽂件:f[client]port = 6000socket = /home/mysql/I6000/mysql.sockdefault-character-set=utf8[mysqld]basedir = /usr/local/pxc_56datadir = /home/mysql/I6000pid-file = /home/mysql/I6000/mysql.pidcharacter-set-server=utf8init_connect = 'SET NAMES utf8'log-bin=/home/mysql/I6000/log_binserver-id = 9816000innodb_buffer_pool_size = 100Minnodb_data_file_path = ibdata1:10M:autoextendinnodb_data_home_dir = /home/mysql/I6000innodb_file_per_table=1skip-name-resolveport = 6000socket = /home/mysql/I6000/mysql.sockuser=mysqllog_error=/home/mysql/I6000/mysql_error.log#pxcuser=mysqllog_error=error.logbinlog_format=ROW#6000 for mysqld port, 6020 for sst port, 6031 for ist port, 6030 for cluster communication port 端⼝作⽤及说明见上⾯wsrep_cluster_address='gcomm://192.168.1.81:6030,192.168.1.238:6030,192.168.1.240:6030' #三个节点都保持⼀样wsrep_provider=/usr/local/pxc_56/lib/libgalera_smm.sowsrep_sst_receive_address=192.168.1.238:6020 #根据不同的node ip进⾏修改wsrep_node_incoming_address=192.168.1.238:6000 #根据不同的node ip进⾏修改wsrep_node_address=192.168.1.238:6000 #根据不同的node ip进⾏修改wsrep_provider_options = "gmcast.listen_addr=tcp://192.168.1.238:6030;ist.recv_addr=192.168.1.238:6031;" #根据不同的node ip进⾏修改wsrep_slave_threads=2wsrep_cluster_name=pxc_zejin #同⼀个cluster此值需要⼀致wsrep_sst_method=xtrabackup-v2wsrep_node_name=node6000_238 #不同节点修改为不同的名字innodb_autoinc_lock_mode=2wsrep_sst_auth="sstuser:123"log-slave-updates[mysql]no-auto-rehashdefault-character-set=utf8三、实例启动:#安装实例/usr/local/pxc_56/scripts/mysql_install_db --defaults-file=/home/mysql/f --basedir=/usr/local/pxc_56#启动第⼀个实例/usr/local/pxc_56/bin/mysqld_safe --defaults-file=/home/mysql/f --ledir=/usr/local/pxc_56/bin/ --wsrep-new-cluster &#修改密码/usr/local/pxc_56/bin/mysqladmin -u root -P6000 password '000000' -S /home/mysql/I6000/mysql.sock#登陆并增加⽤户/usr/local/pxc_56/bin/mysql -uroot -p -P6000 -S /home/mysql/I6000/mysql.sockgrant all on *.* to 'sstuser'@'localhost' identified by '123';flush privielges;mysql> show global status like 'wsrep_cluster_size';+--------------------+-------+| Variable_name | Value |+--------------------+-------+| wsrep_cluster_size | 1 |+--------------------+-------+1 row in set (0.00 sec)四、启动第⼆、三个node#不需要加--wsrep-new-cluster/usr/local/pxc_56/bin/mysqld_safe --defaults-file=/home/mysql/I6000/f --ledir=/usr/local/pxc_56/bin/ &整个过程⼤约如下:1.决断是否可以IST2.不可以的话Requesting state transfer3.Cleaning the existing datadir and innodb-data/log directories 会将之前实例的内容全部删除。
pxc 集群方案# PXC (Percona XtraDB Cluster) 集群方案详解Percona XtraDB Cluster(简称PXC)是基于MySQL的开源数据库集群解决方案,它在MySQL的基础上提供了高可用性和可扩展性,通过InnoDB存储引擎和Galera同步库技术实现实时数据复制和多主节点写入能力,适用于需要高度并发读写、故障自动切换以及保证数据一致性的业务场景。
## 一、PXC集群架构PXC集群通常由多个节点组成,每个节点都可以作为主节点进行读写操作。
集群内部通过Galera库实现数据同步,确保所有节点的数据实时一致性。
集群中的节点间通过gossip协议来传播状态信息,实现故障检测和自动切换。
### 1.1 节点角色- **SQL节点**:每个节点都是SQL节点,可以接收客户端的读写请求。
- **协调者节点(/wsrep_sst_donor节点)**:在集群扩容或者故障恢复时,负责向新加入节点传输全量或增量数据。
### 1.2 数据同步机制- **同步复制**:任何对集群中一个节点的事务提交都会立即同步到其他所有节点,保证数据强一致性。
- **冲突解决**:在并发写入可能导致数据冲突的情况下,采用Certification-based并行复制模式,按照事务到达的时间戳顺序决定事务执行顺序。
## 二、PXC集群部署与配置部署PXC集群需要至少三个节点以确保高可用性,并且各个节点间的网络通信必须稳定可靠。
以下是部署步骤概要:1. 安装Percona XtraDB Cluster软件包及依赖。
2. 配置MySQL服务器,包括修改f文件以启用Galera库、设置集群地址等。
3. 初始化集群,其中一个节点首先启动并初始化集群,其余节点依次加入。
4. 测试集群功能,包括数据写入、同步以及故障转移测试。
## 三、PXC集群优势与应用场景- **高可用性**:任意一个节点发生故障,客户端可以无缝切换至其他活动节点继续服务。
PerconaXtradb Cluster
双机交叉集群配置
版本号日期作者备注
0.1 2016-6-22 Fashchina QQ:41114254
一、产品说明
名称:PerconaXtradb Cluster
简称:PXC
PerconaXtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server 。
其包括了Write Set REPlication补丁,使用Galera 2.0库,这是一个针对事务性应用程序的同步多主机复制插件。
PerconaXtraDB Cluster特点:
(1)同步复制,事务在所有集群节点要么同时提交,要么不提交。
(2)多主复制,可以在任意一个节点写入。
(3)从服务器上的并行应用事件,真正的“并行复制”。
(4)自动配置节点。
(5)数据一致性,没有不同步的从服务器。
二、搭建目标
在每台物理机上各运行2个mysql实例,通过PXC进行交叉集群,即物理机(假设机器名为PXC1)上A实例和物理机(假设机器名为PXC2)A1实例组成一个集群,上述物理机B实例和B1实例同上。
具体如下图:
三、搭建前提
网上资料大部分针对物理机进行PXC集群配置,比如在物理机A\B\C上配置PXC,把3台物理机组成一个集群实例。
从很多程度上比较浪费服务器资源。
而PXC官方建议一个集群最少3个实例组成。
如果再对数据进行分片,对服务器的资源要求就更多。
安装PXC的环境,本文档不在进行描述,因为相关比较简单,都是rpm 文件的安装。
四、搭建mysql环境
创建mysql数据文件存储目录
方便创建/data0/mysql/data和/data1/mysql/data 2个目录存放2个mysql实例的数据。
相关指令如下:
mkdir -p /data0/mysql/data
chmod -R 777 /data0/mysql/data
mkdir -p /data1/mysql/data
chmod -R 777 /data1/mysql/data
初始化mysql数据文件
/usr/bin/mysql_install_db --user=mysql --datadir=/data0/mysql/data
/usr/bin/mysql_install_db --user=mysql --datadir=/data1/mysql/data
如果在/usr/bin下没有mysql_install_db脚本,请通过find命令找下,一般在/usr目录下,具体和您安装pxc的方式有关
配置mysql的f文件
安装完PXC后,在/etc目录下有f(如果没有,网上去找一个也可以),拷贝2个,分别命名f和f
相关配置如下:
f
这个配置文件针对mysql默认的端口,如果想调整,修改cnf目录中的相关端口就可以。
1、重点注意下面标红的
上述集群之间的PXC通讯端口采用默认端口,比如wsrep_cluster_address中的4567,这个默认端口,您可以不写。
另外一台物理机的配置文件类似,仅仅部分不一样,请关注红色标注。
f
这个mysql实例运行在6000端口上,这也是关键,必须确保同一台机器上2个PXC实例的通讯端口出现交叉从而导致集群混乱。
另外一个实例的配置如下:
关键部分用红色标注
启动集群
集群的第一个节点必须加上--wsrep-new-cluster参数。
第二个节点就是普通的启动命令即可
/usr/bin/mysqld_safe --defaults-file=/etc/f --user=mysql --basedir=/usr --datadir=/data0/mysql/data --wsrep-new-cluster &
/usr/bin/mysqld_safe --defaults-file=/etc/f --user=mysql --basedir=/usr --datadir=/data0/mysql/data&
另外一个6000端口的启动命令如下:
/usr/bin/mysqld_safe --defaults-file=/etc/f --user=mysql --basedir=/usr --datadir=/data0/mysql/data --wsrep-new-cluster &
/usr/bin/mysqld_safe --defaults-file=/etc/f --user=mysql --basedir=/usr --datadir=/data0/mysql/data&
登录mysql实例
mysql -h 127.0.0.1 -u root -P6000 –p
然后输入密码即可,-P6000代表登录6000端口的mysql,如果默认3306,则这个参数可以不加
退出mysql实例
mysqladmin -S /data0/mysql/mysql.sock shutdown -u root -p
mysqladmin -S /data1/mysql/mysql.sock shutdown -u root –p
输入密码后,mysql会安全退出
上面红色的路径,和f中的socket变量路径保存一致
测试
登录集群中的某一台机器,通过创建库,表以及插入数据,然后去集群中的另外一个实例查看是否存在即可。
后记
1、在启动集群前,请确保在对应的mysql实例中添加了对应的用户权限,最简单的就是通过一个root用户(仅仅为了测试)即可。
先删除mysql库下的user表信息,然后通过下面命令创建用户:
grant all privileges on *.* to 'root'@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
上面的是2条指令,第一条是创建一个用户名是root,密码是123456的用户
第二个指令是刷新权限,让其马上生效。
2、在出现问题的时候,多看看日志,一般日志的默认存在为数据文件目录下。
可以参考下图:
3、上述文件f中的相关参数说明,可以参考PXC官方网站/documentation-webpages/mysqlwsrepoptions.html进行了解。