Percona XtraDB Cluster 5.7 搭配 HAProxy

一、PerconaDB的特性(来源于:http://blog.csdn.net/chszs/article/details/20205047)

1)查询速度更快,数据的一致性更好

2)服务器运行及其稳定

3)可以延迟分片,或者避免分片

4)需要支付的费用比MySQL低

5)在优化和管理方面花费的时间更少

6)更高的正常运行时间

7)不排除猜测

还有一些特性:

1)数量更多的INFORMATION_SCHEMA表

2)数量更多的全局性能参数(Global Performance)和状态计数器(Status Counters)

3)每个索引性能计数器

4)每个用户性能计数器

5)每个客户端性能计数器

6)高精度进程列表时序

7)快速校验算法

8)缓冲池预加载

9)支持闪存缓冲

10)可从不同的服务器导入表

开始配置host

node1  192.168.20.145

node2  192.168.20.146

node3  192.168.20.147

安装相关apt源

wget   https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb

sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb

sudo  apt-get  update

安装pxc

sudo apt-get install percona-xtradb-cluster-full-57

修改/etc/my.cnf配置文件,其他两台节点需要修改server_id和wsrep_node_address

[mysqld]

server_id=127 #其他节点需要修改datadir=/data/mysql

socket=/data//mysql/mysql.sock

pid_file=/var/lib/mysql/mysql.pid

user=mysql

port=3306

default_storage_engine=InnoDB

character_set_server=utf8

log-error=/var/lib/mysql/mysql-error.log

slow_query_log=1

slow_query_log_file=/var/lib/mysql/mysql-slow.log

#INNODB/XtraDB

innodb_buffer_pool_size=1610612736

innodb_log_file_size=104857600

#PXC

wsrep_provider=/usr/lib64/libgalera_smm.so

wsrep_cluster_address=gcomm://192.168.20.145,192.168.20.146,192.168.20.147

binlog_format=ROW

innodb_autoinc_lock_mode=2

wsrep_node_address=192.168.20.145 #其他节点需要修改

wsrep_sst_method=xtrabackup-v2  #同步工具

wsrep_cluster_name=my_mysql_cluster

wsrep_sst_auth="sstuser:s3cret"  #SST连接的用户名和密码

创建数据存储目录

mkdir-p /data/mysql/

chown  mysql.mysql /data/mysql/

在node1启动PXC服务

/etc/init.d/mysql bootstrap-pxc   #成功后密码在日志文件里查到

SET PASSWORD = PASSWORD('123qwe');  #登陆MySQL修改密码。

在node1MySQL中创建SST同步用户

GRANT PROCESS,RELOAD,LOCK TABLES,REPLICATION CLIENT ON *.* TO'sstuser'@'%'IDENTIFIED BY's3cret';

flush privileges;

State Snapshot Transfer 是可以让one node (donor) 通过数据拷贝升级至joining node (joiner)。

一个新节点加入至集群中,需要同步数据,那么SST可以传输数据,让新节点成为集群的一部分。

SST的三个有效方法:mysqldump, rsync andxtrabackup。不过多解释,目前最好用的是xtrabackup

在node2,node3启动MySQL服务

/etc/init.d/mysql start

查看集群状态

show status like  'wsrep%';

然后测试数据写入和查询。

配置HAProxy 负载平衡

上述完成了 3 台 Cluster 设定,接着所有的 Application 服务都需要直接跟此 Cluster 沟通,为了完成此需求,我们必须将 HAProxy 安装在其中一台伺服器来做负载平衡,今天会介绍两种设定方式,第一种是採用 round robin 方式,意思就是说所有的 Application 都可以连上并且写入资料到三台机器,这状况其实没有错误,但是如果同时写入三台机器,难免会出现 optimistic locking 而产生 rollback,如果可以确定不会产生 conflict,其实这方桉是不错的。第2种设定方式就是只写入单一 Node,但是可以读取三台机器,也就是 insert, update 都是在同一台 Node 完成,所以 Application 不用担心会产生 rollback 情形。第1种设定在大部份的状况底下都是可以运作很好的,所以其实也不用担心。

底下是 /etc/haproxy/haproxy.cfg 设置:

global

log /dev/log    local0

log /dev/log    local1 notice

chroot /var/lib/haproxy

stats socket /run/haproxy/admin.sock mode 660 level admin

stats timeout 30s

user haproxy

group haproxy

daemon

# Default SSL material locations

ca-base /etc/ssl/certs

crt-base /etc/ssl/private

# Default ciphers to use on SSL-enabled listening sockets.

# For more information, see ciphers(1SSL). This list is from:

#  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/

ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

ssl-default-bind-options no-sslv3

defaults

log    global

mode    http

option  httplog

option  dontlognull

timeout connect 5000

timeout client  50000

timeout server  50000

errorfile 400 /etc/haproxy/errors/400.http

errorfile 403 /etc/haproxy/errors/403.http

errorfile 408 /etc/haproxy/errors/408.http

errorfile 500 /etc/haproxy/errors/500.http

errorfile 502 /etc/haproxy/errors/502.http

errorfile 503 /etc/haproxy/errors/503.http

errorfile 504 /etc/haproxy/errors/504.http

listen mysql_3306

bind  0.0.0.0:3306

mode  tcp

option tcpka

balance    roundrobin

#将此server命名为mysql_01,每隔3000ms检测一个健康状态,如果检测3次都失败,将此server剔除,在离线的状态下,只要检测1次成功,就让其上线;

server mysql_01 192.168.20.145:3306 check inter 3000 rise 1 maxconn 4000 fall 3

server mysql_02 192.168.20.146:3306 check inter 3000 rise 1 maxconn 4000 fall 3

server mysql_02 192.168.20.147:3306 check inter 3000 rise 1 maxconn 4000 fall 3

listen state                                  #使用单独输出,不需要frontedn调用:定义haproxy的状态统计页面;

bind *:8888                              #监听的地址;

mode http                                #http 7层工作模式:对应用层数据做深入分析,因此支持7层的过滤、处理、转换等机制;

stats enable                              #开启统计页面输出;

stats hide-version                        #隐藏状态页面版本号;

stats uri /haproxyadmin?stats            #指定状态页的访问路径;

stats auth admin:admin                    #基于用户名,密码验证;

stats admin if TRUE                      #验证通过时运行登录;


上面步骤全部成功,请打开浏览器在 URL 输入http://192.168.20.148:8888/haproxyadmin?stats 在输入配置文件配置的用户名和密码就可以HAProxy Status 页面,看到状态,就是代表设定成功。

你可能感兴趣的:(Percona XtraDB Cluster 5.7 搭配 HAProxy)