Xtradb+Haproxy高可用数据库集群(一)xtradb部署篇

部署xtradb cluster时,建议使用3台及以上服务器。原因有二:

1、默认情况下,如果一个同伴死去或者两个节点之间的通信不稳定,两个节点都将不接受查询。当然这个可以通过添加忽略仲裁来解决:

set globalwsrep_provider_options=”pc.ignore_quorum=true”;

2、当宕掉的那台启动时,会进行同步,负责提供数据的节点角色变为Donor, Donor会有一定的时间无法写入。断开情况如下:

Mysqldump 适合小库

Rsync      复制时间内断开,速度快

XtraBackup 短时间内断开,速度略慢

节点信息

node #1

hostname:percona1

IP:192.168.70.71

node #2

hostname:percona2

IP:192.168.70.72

node #3

hostname:percona3

IP:192.168.70.73

前提条件:

三个节点都安装了centos系统

防火墙放通了端口:3306,4444,4567和4568

关闭selinux

安装percona xtradb集群

先安装percona官方源

yum installhttp://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

安装epel源,以便安装依赖包socat

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

安装xtradb

yum installPercona-XtraDB-Cluster-56

官网安装参考地址:

https://www.percona.com/doc/percona-xtradb-cluster/5.6/installation/yum_repo.html

配置节点

官网参考地址:

https://www.percona.com/doc/percona-xtradb-cluster/5.6/howtos/virt_sandbox.html

配置第一个节点

第一个节点的/etc/my.cnf配置内容如下:

[mysqld]

datadir=/var/lib/mysql

user=mysql

# Path to Galeralibrary

wsrep_provider=/usr/lib64/libgalera_smm.so

# Clusterconnection URL contains the IPs of node#1, node#2 and node#3

wsrep_cluster_address=gcomm://192.168.70.71,192.168.70.72,192.168.70.73

# In order forGalera to work correctly binlog format should be ROW

binlog_format=ROW

# MyISAM storageengine has only experimental support

default_storage_engine=InnoDB

# This changeshow InnoDB autoincrement locks are managed and is a requirement for Galera

innodb_autoinc_lock_mode=2

# Node #1address

wsrep_node_address=192.168.70.71

# SST method

wsrep_sst_method=xtrabackup-v2

# Cluster name

wsrep_cluster_name=my_centos_cluster

# Authenticationfor SST method

wsrep_sst_auth="sstuser:s3cret"

在此之后,第一个节点可以启动以下命令:

[[email protected] ~]#/etc/init.d/mysql bootstrap-pxc

如果在centos7上运行本教程,系统服务如下:

[[email protected] ~]#  systemctl start [email protected]

此命令将启动集群初步wsrep_cluster_address设置为gcomm://。这样的集群将自举以防后面的节点或MySQL重新开始,这不需要改变该配置文件。

第一个节点启动后,集群状态检测:

mysql> show status like ‘wsrep%‘;

+----------------------------+--------------------------------------+

| Variable_name              |Value                                |

+----------------------------+--------------------------------------+

| wsrep_local_state_uuid     | c2883338-834d-11e2-0800-03c9c68e41ec |

...

| wsrep_local_state          | 4                                    |

| wsrep_local_state_comment  | Synced                               |

...

| wsrep_cluster_size         | 1                                    |

| wsrep_cluster_status       | Primary                              |

| wsrep_connected            |ON                                   |

...

| wsrep_ready                |ON                                   |

+----------------------------+--------------------------------------+

40 rows in set (0.01 sec)

该输出显示集群已成功自举

修改root密码,以及删除空用户

UPDATE mysql.user SET password=PASSWORD("Passw0rd")where user=‘root‘;

delete from mysql.user whereuser=‘‘;

FLUSH PRIVILEGES;

为了使xtrabackup成功建立快照,需要给新用户建立适当的权限。

[email protected]> CREATE USER‘sstuser‘@‘localhost‘ IDENTIFIED BY ‘s3cret‘;

[email protected]> GRANT RELOAD,LOCK TABLES, REPLICATION CLIENT ON *.* TO ‘sstuser‘@‘localhost‘;

[email protected]> FLUSH PRIVILEGES;

注:MySQL的root账户也可用于建立PerconaXtrabackup的SST,但建议使用不同用户做这一点。

配置第二个节点

第二个节点的/etc/my.cnf配置内容如下:

[mysqld]

datadir=/var/lib/mysql

user=mysql

# Path to Galera library

wsrep_provider=/usr/lib64/libgalera_smm.so

# Cluster connection URLcontains IPs of node#1, node#2 and node#3

wsrep_cluster_address=gcomm://192.168.70.71,192.168.70.72,192.168.70.73

# In order for Galera to workcorrectly binlog format should be ROW

binlog_format=ROW

# MyISAM storage engine hasonly experimental support

default_storage_engine=InnoDB

# This changes how InnoDBautoincrement locks are managed and is a requirement for Galera

innodb_autoinc_lock_mode=2

# Node #2 address

wsrep_node_address=192.168.70.72

# Cluster name

wsrep_cluster_name=my_centos_cluster

# SST method

wsrep_sst_method=xtrabackup-v2

#Authentication for SSTmethod

wsrep_sst_auth="sstuser:s3cret"

第二个节点的启动命令

/etc/init.d/mysql start

服务器已经启动后,它会自动接收状态快照传送。因此,第二个节点不会有空root密码了。

这是第二个节点的状态

mysql> show status like ‘wsrep%‘;

+----------------------------+--------------------------------------+

| Variable_name             | Value                               |

+----------------------------+--------------------------------------+

| wsrep_local_state_uuid    | c2883338-834d-11e2-0800-03c9c68e41ec |

...

| wsrep_local_state         | 4                                   |

| wsrep_local_state_comment | Synced                              |

...

| wsrep_cluster_size        | 2                                   |

| wsrep_cluster_status      | Primary                             |

| wsrep_connected           | ON                                  |

...

| wsrep_ready               | ON                                  |

+----------------------------+--------------------------------------+

40 rows in set (0.01 sec)

配置第三个节点

第三个节点的/etc/my.cnf配置文件

[mysqld]

datadir=/var/lib/mysql

user=mysql

# Path to Galera library

wsrep_provider=/usr/lib64/libgalera_smm.so

# Cluster connection URLcontains IPs of node#1, node#2 and node#3

wsrep_cluster_address=gcomm://192.168.70.71,192.168.70.72,192.168.70.73

# In order for Galera to workcorrectly binlog format should be ROW

binlog_format=ROW

# MyISAM storage engine hasonly experimental support

default_storage_engine=InnoDB

# This changes how InnoDBautoincrement locks are managed and is a requirement for Galera

innodb_autoinc_lock_mode=2

# Node #3 address

wsrep_node_address=192.168.70.73

# Cluster name

wsrep_cluster_name=my_centos_cluster

# SST method

wsrep_sst_method=xtrabackup-v2

#Authentication for SSTmethod

wsrep_sst_auth="sstuser:s3cret"

然后启动节点

/etc/init.d/mysql start

服务器已经启动后,它会自动接收状态快照传送。

集群状态查看:

mysql> show status like ‘wsrep%‘;

+----------------------------+--------------------------------------+

| Variable_name             | Value                               |

+----------------------------+--------------------------------------+

| wsrep_local_state_uuid    | c2883338-834d-11e2-0800-03c9c68e41ec |

...

| wsrep_local_state         | 4                                   |

| wsrep_local_state_comment | Synced                              |

...

| wsrep_cluster_size        | 3                                   |

| wsrep_cluster_status      | Primary                             |

| wsrep_connected           | ON                                  |

...

| wsrep_ready               | ON                                  |

+----------------------------+--------------------------------------+

40 rows in set (0.01 sec)

该输出证实了第三个节点加入集群。

测试复制

在节点2上创建数据库

[email protected]> CREATE DATABASE percona;

Query OK, 1row affected(0.01 sec)

在节点3上创建表

[email protected]> USE percona;

Database changed

[email protected]> CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));

Query OK, 0rows affected(0.05 sec)

在节点1上插入数据

[email protected]> INSERT INTO percona.example VALUES (1, ‘percona1‘);

QueryOK, 1 rowaffected (0.02 sec)

在第二个节点上查看数据

[email protected]> SELECT * FROM percona.example;

+---------+-----------+

| node_id | node_name |

+---------+-----------+

|       1 | percona1  |

+---------+-----------+

1 row in set (0.00 sec)

集群搭建完成

时间: 2024-10-24 00:05:44

Xtradb+Haproxy高可用数据库集群(一)xtradb部署篇的相关文章

Xtradb+Haproxy高可用数据库集群(四)集群zabbix监控篇

xtradb cluster集群zabbix监控 监控指标 官网参考地址: https://www.percona.com/doc/percona-xtradb-cluster/5.6/manual/monitoring.html 1.报警参数 每个集群节点状态: wsrep_cluster_status != Primary wsrep_connected != ON wsrep_ready != ON 复制冲突过高 wsrep_local_cert_failures wsrep_local_

Xtradb+Haproxy高可用数据库集群(二)haproxy负载均衡篇

Xtradb集群部署完成后,3台机器都能同时读写,此时需要在前端搭建haproxy来进行负载均衡. 官网haproxy配置参考地址: https://www.percona.com/doc/percona-xtradb-cluster/5.6/howtos/virt_sandbox.html Haproxy服务器配置 拿一台机器用作haproxy,此处是192.168.6.219. 安装haproxy yum install haproxy -y 配置文件: [[email protected]

Xtradb+Haproxy高可用数据库集群(三)sysbench性能测试篇

xtradb sysbench性能测试 安装sysbench,最新版本是0.5 yum install sysbench -y 初始化测试表 sysbench --test=/usr/share/doc/sysbench/tests/db/oltp.lua --oltp-table-size=1000000 --mysql-table-engine=innodb --mysql-user=sysbench  --mysql-password=sysbench --mysql-port=3306 

CentOS7+MySQL/MariaDB+Galera+HAProxy+Keepalived构建高可用数据库集群

方案优势: Galera能够实现MySQL/MariaDB数据库的主主复制和多主复制等模式,这些复制模式都是同步进行的,同步时间非常短 每一个节点都可以同时写入和读取,当某一节点发生故障时,可自动从集群中自动剔除 HAProxy能提供负载均衡和故障判断等功能解决服务器系统存在的单点故障 Keepalived能提供客户端连接数据库时使用的虚拟IP地址(VIP) 关于HAProxy的负载均衡算法 轮询方式(roundrobin):不适合用于backend为web服务器的情况,因为session.co

MySQL互为主从+Keepalived高可用数据库集群

1.剧情回顾 在之前的博客上,我做了一个MySQL主从配置的实验,链接在这:http://blog.51cto.com/superpcm/2094958 .在这里我决定把这两个数据库做成互为主从,然后在这两个互为主从的数据库上配置keepalived,实现高可用,怎么配置可以参考我前文高可用的实验博客,http://blog.51cto.com/superpcm/2095395 . 最后实现的的拓扑图如下: 2.配置MySQL 互为主从复制 之前可能没有说明,实验默认都是开放所有端口给同一网段的

搭建高可用mongodb集群(四)—— 分片(经典)

转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而mongodb主打的就是海量数据架构,他不能解决海量数据怎么

高可用RabbitMQ集群安装配置

RabbitMQ集群安装配置+HAproxy+Keepalived高可用 rabbitmq 集群 消息队列 RabbitMQ简介 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然.AMQP的主

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置 LB集群是locd balance集群的简称.翻译成中文是:负载均衡集群的意思:集群是一组相互独立的.通过高速网络互联的计算机相互之间构成一个组合,并以单一的系统的模式加以管理.LVS是Linux Virtual Server的简写,翻译中文是Linux虚拟服务器,是一个虚拟的服务器集群系统. 负载均衡集群:是为了企业提供更为实用,性价比更高的系统机构解决方案.负载均衡集群把用户的请求尽可能的平均分发到集群的各

搭建高可用mongodb集群(二)—— 副本集

http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html 在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 这篇文章看完这些问题就可以搞定了.NoSQL的产生就是为了解决大数据量.高扩展性.高