




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PXC5.6实验集群的安装与设置Ver.变更日期变更者说明12015/7/7王旭东初版目录1.目的:22.集群构成:62.1.集群构成图:62.2.集群构成明细:63.安装设置操作步骤:73.1.安装Percona Yum Repository:73.2.安装EPEL源:83.3.安装PXC83.4.创建及设置数据目录93.5.开通PXC相关IP端口103.6.关闭SELinux113.7.设置f启动项文件113.8.启动集群134.通过HAProxy实现PXC集群负载均衡:154.1.安装HAProxy154.2.设置HAProxy154.3.启动HAProxy174.4.增加集群状态检查进程用Mysql用户权限174.5.为集群每一个节点服务器安装xinetd184.6.配置xinetd184.7.通过HAProxy查看数据库集群状态:195.用Keepalived解决HAProxy单点故障:215.1.安装配置备份代理服务器215.2.安装Keepalived225.3.在主HAProxy代理服务器中设置Keepalived225.4.在备份HAProxy代理服务器中设置Keepalived245.5.验证虚拟IP的漂移256.问题排查及解决:266.1.ERROR 1047 (08S01): WSREP has not yet prepared node for application use261. 目的:本手册用于介绍如何通过在三台CentOS6.6服务器上安装Percona XtraDB Cluster5.6,来搭建一个拥有三个数据节点的的MySQL数据库集群。以及如何用另外两台CentOS6.6服务器,通过安装HAPrxoy+Keepalived来实现MySQL集群的负载均衡。从而获得一个具备高可用性的数据库集群。本手册各章节详细介绍了每台服务器上需要安装的服务,以及各种服务的配置与启动的详细步骤。2. 集群构成:2.1. 集群构成图:2.2. 集群构成明细:1、 HAProxy+Keepalived主代理服务器主机名 :CentOS-L1IP地址:02、 HAProxy+Keepalived备份代理服务器主机名:CentOS-L3IP地址:13、 PXC数据节点1主机名:CentOS-W1IP地址:94、 PXC数据节点2主机名:CentOS-W2IP地址:05、 PXC数据节点3主机名:CentOS-W3IP地址:1以上服务器的系统版本皆为CentOS6.6。用户名和密码都相同,为(root/root01);3. 安装设置操作步骤:首先以root用户权限登录到Node1,安装与设置PXC5.6。然后再以此登录到Node2和Node3进行几乎相同的安装与设置操作。3.1. 安装Percona Yum Repository:首先通过rpm安装Percona testing repository(红字内容):rootCentOS-W1 # rpm -Uhv /testing/centos/6/os/noarch/percona-testing-0.0-1.noarch.rpmRetrieving /testing/centos/6/os/noarch/percona-testing-0.0-1.noarch.rpmwarning: /var/tmp/rpm-tmp.oSUcj4: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEYPreparing. # 100% 1:percona-testing # 100%rootCentOS-W1# rpm -Uhv /downloads/percona-release/percona-release-0.0-1.x86_64.rpmRetrieving /downloads/percona-release/percona-release-0.0-1.x86_64.rpmPreparing. # 100% 1:percona-release # 100%其次通过rpm安装Percona release repository(红字内容):3.2. 安装EPEL源:如果不安装EPEL源(Extra Packages for Enterprise Linux)来获取额外的软件包,那就会在安装PXC发生Dependancy issue,被告知“ requires socat”。rootCentOS-W1 # wget /pub/epel/6/i386/epel-release-6-8.noarch.rpm -2015-07-07 10:06:01- /pub/epel/6/i386/epel-release-6-8.noarch.rpm正在解析主机 . 62, 7, 8, .正在连接 |62|:80. 已连接。已发出 HTTP 请求,正在等待回应. 302 Found位置:/epel/6/i386/epel-release-6-8.noarch.rpm 跟随至新的 URL-2015-07-07 10:06:04- /epel/6/i386/epel-release-6-8.noarch.rpm正在解析主机 . 5正在连接 |5|:80. 已连接。已发出 HTTP 请求,正在等待回应. 200 OK长度:14540 (14K) application/x-redhat-package-manager正在保存至: “epel-release-6-8.noarch.rpm”100%= 14,540 16.1K/s in 0.9s 2015-07-07 10:06:05 (16.1 KB/s) - 已保存 “epel-release-6-8.noarch.rpm” 14540/14540)rootCentOS-W1 # rpm -ivh epel-release-6-8.noarch.rpmwarning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEYPreparing. # 100% 1:epel-release # 100%安装EPEL的命令如下(红字内容):3.3. 安装PXC通过yum从Percona Yum Repository获取PXC Server、PXC Client、和PXC Galera(红字内容):rootCentOS-W1 # yum -y install Percona-XtraDB-Cluster-server-56 Percona-XtraDB-Cluster-client-56 Percona-XtraDB-Cluster-galera-2已加载插件:fastestmirror, refresh-packagekit, security设置安装进程(中略)已安装: Percona-XtraDB-Cluster-client-56.x86_64 1:5.6.24-25.11.2.el6 Percona-XtraDB-Cluster-galera-2.x86_64 0:2.12-1.2682.rhel6 Percona-XtraDB-Cluster-server-56.x86_64 1:5.6.24-25.11.2.el6 作为依赖被安装: Percona-XtraDB-Cluster-shared-56.x86_64 1:5.6.24-25.11.2.el6 compat-readline5.x86_64 0:5.2-17.1.el6 percona-xtrabackup.x86_64 0:2.2.11-1.el6 perl-DBD-MySQL.x86_64 0:4.013-3.el6 perl-DBI.x86_64 0:1.609-4.el6 perl-Time-HiRes.x86_64 4:1.9721-136.el6_6.1 socat.x86_64 0:-1.el6 作为依赖被升级: perl.x86_64 4:5.10.1-136.el6_6.1 perl-CGI.x86_64 0:3.51-136.el6_6.1 perl-ExtUtils-MakeMaker.x86_64 0:6.55-136.el6_6.1 perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-136.el6_6.1 perl-Module-Pluggable.x86_64 1:3.90-136.el6_6.1 perl-Pod-Escapes.x86_64 1:1.04-136.el6_6.1 perl-Pod-Simple.x86_64 1:3.13-136.el6_6.1 perl-Test-Harness.x86_64 0:3.17-136.el6_6.1 perl-Test-Simple.x86_64 0:0.92-136.el6_6.1 perl-devel.x86_64 4:5.10.1-136.el6_6.1 perl-libs.x86_64 4:5.10.1-136.el6_6.1 perl-version.x86_64 3:0.77-136.el6_6.1 完毕!3.4. 创建及设置数据目录通过以下两个命令(红字内容)来分别创建和设置MySQL的数据目录:rootCentOS-W1 # mkdir -p /data0/search/xtradb/datarootCentOS-W1 # mysql_install_db -datadir=/data0/search/xtradb/data -user=mysql在执行” mysql_install_db”命令时会输出一堆信息。其中有一些重要的内容可供参考。详见一下log文件:3.5. 开通PXC相关IP端口PXC需要用到3306, 4444, 4567, 4568端口,在iptables中开通这些对这些端口的访问权限。可以直接修改/etc/sysconfig/iptables文件,也可以通过iptables命令来设置。rootCentOS-W1 # vi /etc/sysconfig/iptables# Firewall configuration written by system-config-firewall# Manual customization of this file is not recommended.*filter:INPUT ACCEPT 0:0:FORWARD ACCEPT 0:0:OUTPUT ACCEPT 0:0-A INPUT -m state -state ESTABLISHED,RELATED -j ACCEPT-A INPUT -p icmp -j ACCEPT-A INPUT -i lo -j ACCEPT-A INPUT -m state -state NEW -m tcp -p tcp -dport 22 -j ACCEPT-A INPUT -m state -state NEW -m tcp -p tcp -dport 3306 -j ACCEPT-A INPUT -m state -state NEW -m tcp -p tcp -dport 4444 -j ACCEPT-A INPUT -m state -state NEW -m tcp -p tcp -dport 4567 -j ACCEPT-A INPUT -m state -state NEW -m tcp -p tcp -dport 4568 -j ACCEPT-A INPUT -j REJECT -reject-with icmp-host-prohibited-A FORWARD -j REJECT -reject-with icmp-host-prohibitedCOMMIT /etc/sysconfig/iptables 17L, 744C方法一如下所示,通过”vi”打开iptables文件,然后加入端口设置语句(红字部分):编辑完iptables文件并保存后一定要重启iptables服务。如下红字内容所示:rootCentOS-W1 # service iptables restartiptables:将链设置为政策 ACCEPT:filter 确定iptables:清除防火墙规则: 确定iptables:正在卸载模块: 确定iptables:应用防火墙规则: 确定3.6. 关闭SELinuxrootCentOS-W1 # vi /etc/selinux/config# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - No SELinux policy is loaded.SELINUX=disabled# SELINUXTYPE= can take one of these two values:# targeted - Targeted processes are protected,# mls - Multi Level Security protection.SELINUXTYPE=targeted /etc/selinux/config 13L, 457C如果不关闭SELinux(Security-Enhanced Linux)安全控制系统的话会造成PXC启动失败。因此需要通过修改/etc/selinux/config文件中的设置,把” SELINUX=enforcing”变更为” SELINUX=disabled”。如下红字内容所示:(注意:编辑并保存后必须重启CentOS系统才能使修改内容生效)3.7. 设置f启动项文件在Node1中,/etc/f的内容如下红字所示:rootCentOS-W1 # vi /etc/fmysqlddatadir=/data0/search/xtradb/datauser=mysqlbinlog_format=ROWwsrep_provider=/usr/lib64/libgalera_smm.sowsrep_cluster_address=gcomm:/9,0,1wsrep_slave_threads=2wsrep_cluster_name=my_centos_clusterwsrep_sst_method= xtrabackup-v2wsrep_node_name=node1wsrep_node_address=9wsrep_sst_auth=sstuser:s3cretinnodb_locks_unsafe_for_binlog=1innodb_autoinc_lock_mode=2sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESserver_id=1 /etc/f 17L, 489C在Node2中,/etc/f的内容如下红字所示:rootCentOS-W2# vi /etc/fmysqlddatadir=/data0/search/xtradb/datauser=mysqlbinlog_format=ROWwsrep_provider=/usr/lib64/libgalera_smm.sowsrep_cluster_address=gcomm:/9,0,1wsrep_slave_threads=2wsrep_cluster_name=my_centos_clusterwsrep_sst_method= xtrabackup-v2wsrep_node_name=node2wsrep_node_address=0wsrep_sst_auth=sstuser:s3cretinnodb_locks_unsafe_for_binlog=1innodb_autoinc_lock_mode=2sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESserver_id=2 /etc/f 17, 489C在Node3中,/etc/f的内容如下红字所示:rootCentOS-W3# vi /etc/fmysqlddatadir=/data0/search/xtradb/datauser=mysqlbinlog_format=ROWwsrep_provider=/usr/lib64/libgalera_smm.sowsrep_cluster_address=gcomm:/9,0,1wsrep_slave_threads=2wsrep_cluster_name=my_centos_clusterwsrep_sst_method= xtrabackup-v2wsrep_node_name=node3wsrep_node_address=1wsrep_sst_auth=sstuser:s3cretinnodb_locks_unsafe_for_binlog=1innodb_autoinc_lock_mode=2sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESserver_id=3 /etc/f 17, 489C3.8. 启动集群首先启动Node1,如下红字内容所示:rootCentOS-W1# /etc/init.d/mysql bootstrap-pxcStarting MySQL (Percona XtraDB Cluster). 确定rootCentOS-W1#rootCentOS-W1# /usr/bin/mysqladmin -u root password root01接下来为Node1的MySQL root用户设置密码:rootCentOS-W1# mysql -u root -p root01Enter password:mysql CREATE USER sstuserlocalhost IDENTIFIED BY s3cret;Query OK, 0 rows affected (18.76 sec)mysql GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO sstuserlocalhost;Query OK, 0 rows affected (0.01 sec)mysql FLUSH PRIVILEGES;Query OK, 0 rows affected (0.02 sec)然后在Node1中创建同步复制专用用户如下红字内容所示启动Node2:rootCentOS-W2# /etc/init.d/mysql startStarting MySQL (Percona XtraDB Cluster)State transfer in progress, setting sleep higher. 确定rootCentOS-W3# /etc/init.d/mysql startStarting MySQL (Percona XtraDB Cluster)State transfer in progress, setting sleep higher. 确定最后启动Node3:集群启动后可以通过在mysql控制台中运行”SHOW STATUS LIKE wsrep%”命令来获取集群的状态。4. 通过HAProxy实现PXC集群负载均衡:我们通过HAProxy来实现PXC数据库集群的读写负载均衡问题。在PXC集群之外再设置一台HAProxy代理服务器,所有应用程序对于数据集群的读写操作都发送给这台代理服务器,再由HAProxy决定某个读或者写的操作具体发送给集群中的哪台数据库服务器。4.1. 安装HAProxy在PXC集群之外,单独准备一套系统用来安装HAProxy。在本文档中该套系统的主机名为:CentOS-L1;IP地址为:0;首先确认在这套系统中已经安装了Percona以及EPEL的Yum Repository(参见3.1和3.2所示内容)。然后通过以下命令安装HAProxy:# yum -y install haproxy4.2. 设置HAProxyHAProxy的配置文件为“/etc/haproxy/haproxy.cfg”。修改其默认内容为如下文件所示:其中共定义了以下三个外部访问端口:l 集群运行状态HTTP协议访问端口:8080。用于通过WEB页面监控数据库集群中各节点的运行状态;l 集群单节点写入TCP协议访问端口:3306。单节点写入,其他节点通过PXC的SST功能进行同步。可能会有数据延迟。但不会发生乐观锁(optimistic locking)回滚(rollback)引起的问题;l 集群全节点读写TCP协议访问端口:3307。同时对集群所有节点进行读写操作。大多数情况都可以使用该方式实现数据库集群的负载均衡。但会有乐观锁(optimistic locking)回滚(rollback)造成数据错误的风险。一个完整的” haproxy.cfg”配置文件内容如下图所示:4.3. 启动HAProxy在启动HAProxy之前要修改防火墙配置,允许对8080、3306和3307三个端口访问。如果防火墙确实无关紧要,也可以通过下面的命令来禁用它。rootCentOS-L1 # chkconfig iptables offrootCentOS-L1 # /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg使用以下命令手动启动HAProxy:也可以通过以下命令把HAProxy加入开启启动服务列表中:rootCentOS-L1 # chmod +x /etc/rc.d/init.d/haproxyrootCentOS-L1 #chkconfig -add haproxyrootCentOS-L1 #chkconfig -level 35 haproxy onrootCentOS-L1 #chkconfig -list|grep haproxyhaproxy 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭4.4. 增加集群状态检查进程用Mysql用户权限以root登录到数据库集群任一节点的MySQL库中,通过以下SQL文增加一个新的拥有”PROCESS”权限的用户:mysql grant process on *.* to chkusrlocalhost identified by chkpswd;Query OK, 0 rows affected (0.60 sec)mysql flush privileges;Query OK, 0 rows affected (0.19 sec)由于变更了clustercheck进程默认使用的用户名和密码(默认为用户 clustercheckuser;密码为 clustercheckpassword!)。因此需要分别修改所有集群节点的checkcluster脚本内容。该脚本放置在/usr/bin目录下。修改前为:修改后为:rootCentOS-W1 #clustercheckHTTP/1.1 200 OKContent-Type: text/plainConnection: closeContent-Length: 40Percona XtraDB Cluster Node is synced.全部修改完成后运行clustercheck脚本检查集群状态:4.5. 为集群每一个节点服务器安装xinetdrootCentOS-W1 #yum -y install xinetd已加载插件:fastestmirror, refresh-packagekit, security设置安装进程(中略)已安装: xinetd.x86_64 2:2.3.14-39.el6_4 完毕!在数据库集群的每一个节点中安装xinetd服务。4.6. 配置xinetd确认/etc/xinetd.d/mysqlchk文件是否存在,其内容是否为如下所示:如果该文件存在,且内容无误。接下来在/etc/services文件中通过追加以下一行内容来添加新的服务:rootCentOS-W1 # cat /etc/services|grep mysqlchkmysqlchk 9200/tcp #mysqlchk把对端口9200的访问允许加入各集群节点的防火墙设置中。rootCentOS-W1 # service xinetd restart停止 xinetd: 确定正在启动 xinetd: 确定最后重新启动xinetd服务4.7. 通过HAProxy查看数据库集群状态:在浏览器中通过访问HAProxy的URL” 0:8080/haproxy/stats”可以监控集群状态信息。该URL的用户认证信息是在“/etc/haproxy/haproxy.cfg”中定义的。“stats auth pxcstats:secret”,也就是用户名密码分别为“pxcstats”、“secret”。认证成功后看到的监控画面如下:5. 用Keepalived解决HAProxy单点故障:HAProxy虽然解决了PXC数据库集群的负载均衡问题。但在只有一台HAProxy代理服务器的情况下,一旦发生单点故障,即使PXC集群中数据库服务器的数量再多,也会造成所有应用程序无法读写数据库的严重问题。因此,我们通过Keepalived来避免HAProxy代理服务器的单点故障问题。方法是另外再安装一台HAProxy代理服务器。然后在两台HAProxy服务器中都安装Keepalived。通过对Keepalived进行配置,使得两台HAProxy代理服务器一台为主服务器,另一台为副服务器。而它们对外表现为一个虚拟IP(VIP)。所有的应用程序都将自己的数据库读/写请求发送到这个虚拟IP的数据访问端口上(就是HAProxy中设置的数据访问端口)。正常情况下主代理服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即可认定主服务器已经宕机。这时备份服务器就会接管虚拟IP,继续提供数据访问服务,从而保证了PXC数据库集群的高可用性。在本文档中,我们最终配置的HAProxy+Keepalived环境如下:l 主代理服务器 :0(主机名:CentOS-L1)l 备份代理服务器:1(主机名:CentOS-L2)l 虚拟IP(VIP) :005.1. 安装配置备份代理服务器参照4.1-4.3的内容所示,安装配置备份HAProxy代理服务器。5.2. 安装Keepalived假设相关的源已经设置好。然后在主HAProxy服务器(0)以及备份HAProxy服务器(1)中,通过以下命令分别安装Keepalived。# yum -y install keepalived.x86_645.3. 在主HAProxy代理服务器中设置KeepalivedKeepalived的配置文件为:/etc/keepalived/keepalived.conf。在主服务器中,我们将配置文件的内容改为如下所示(红框标注部分为与代理服务器的不同点):根据keepalived配置文件中所示,我们需要一个用来检测HAProxy服务是否启动中的Shell命令。这个命令为:/etc/keepalived/check_haproxy.sh。其内容如下所示:rootCentOS-L1 # vi /etc/keepalived/check_haproxy.sh#!/bin/bashA=ps -C haproxy -no-header |wc -lif $A -eq 0 ;then /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg sleep 3 if ps -C haproxy -no-header|wc l -eq 0;then /etc/init.d/keepalived stop fifi check_haproxy.sh New 9L, 228C writtenrootCentOS-L1 # chmod 755 /etc/keepalived/check_haproxy.sh这个Shell命令在执行过程中如果发现HAProxy服务已经不存在了,则会尝试手动启动HAProxy,然后等待3秒后再次检查HAProxy服务。如果还不存在,说明有什么故障需要手动排除。于是便停止主HAProxy代理服务器中的Keepalived服务,让备份HAProxy代理服务器有机会来接管虚拟IP,从而继续响应应用程序的数据库读写要求。rootCentOS-L1 # chkconfig -level 35 keepalived onrootCentOS-L1 # chkconfig -list|grep keepalivedkeepalived 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭rootCentOS-L1 # /etc/init.d/keepalived start正在启动 keepalived: 确定以上设置完成之后,通过以下命令把keepalived服务设置成开机自动启动。并第一次启动服务:接下来就用通过访问下述虚拟IP的HAProxy状态监控URL来确认keepalived服务是否有效:00:8080/haproxy/stats5.4. 在备份HAProxy代理服务器中设置Keepalived备份服务器的keepalived配置文件与主服务器只有两处不同。一是”state”的值由”MASTER”变更为”BACKUP”,二是” priority”的值由”150”改为”120”(小于主服务器的值即可)。修改完成后的备份服务器配置文件如下:接下来与主服务器一样配置/etc/keepalived/check_haproxy.sh脚本文件,以及启动keepalived服务。具体参见5.3中相关内容。5.5. 验证虚拟IP的漂移
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 责任课件内容大纲
- 2025版上海房地产买卖合同范本涵盖交易税费及支付方式说明
- 2025年房地产营销代理及品牌策划服务合同
- 2025第一部分:生物制药研发合同协议书
- 2025年智能家居产品广告创意合同示范文本
- 2025版跨境贸易借款合同带保证人及汇率风险对冲下载
- 2025年度建筑材料代购与绿色建筑认证服务合同
- 2025版外籍技术人员引进与管理合同书
- 2025年度专业摄影棚租赁服务合同
- 2025版文化娱乐融资咨询与专业居间服务协议
- 2025年有害生物防治员初级理论知识考核试题及答案
- 新版2026统编版小学道德与法治三年级上册 第4课《 科技力量大》第1课时 科技改变生活和科技改变观念 教案设计(教案)
- 学会交流与沟通课件
- 铁路监理培训考试试题及答案
- 2025全国企业员工全面质量管理知识竞赛题库附答案
- 供应链与贸易安全培训课件
- 严禁燃放烟花炮竹课件
- 宫颈息肉课件
- 人工智能多智能体课件
- 2024年云南地质工程勘察设计研究院有限公司招聘笔试真题及答案
- 探讨恶性肿瘤患者化疗后口腔溃疡治疗及护理的有效措施
评论
0/150
提交评论