1. 简介

1.1. 官方文档:

数据库架构:https://docs.openstack.org/ha-guide/shared-database.html

1.2. 本次使用的的是Percona XtraDB Cluster,5.7版本

https://www.percona.com/doc/percona-xtradb-cluster/5.7/index.html

1.3. 安装文件下载:

https://www.percona.com/downloads/Percona-XtraDB-Cluster-57/LATEST/

或者使用yum安装,本文中使用yum安装

https://www.percona.com/doc/percona-repo-config/yum-repo.html

这还有Docker的安装说明,等以后Docker文档中再详细说明

https://www.percona.com/doc/percona-xtradb-cluster/5.7/install/docker.html

2. 安装

功能与组件 机器名 服务IP 管理IP Processor Cores RAM Storage 备注
Mysql PXC HCTJOSMYSQL01 10.30.2.25 172.16.0.25        
Mysql PXC HCTJOSMYSQL02 10.30.2.26 172.16.0.26        
Mysql PXC HCTJOSMYSQL03 10.30.2.27 172.16.0.27        
HAPROXY HCTJOSDR01 10.30.2.48 172.16.0.48        
HAPROXY HCTJOSDR02 10.30.2.49 172.16.0.49        
Ansible HCTJOSADM01 10.30.2.99 172.16.0.99        
DNS/NTP HCTJOSINFRA01 10.30.2.81 172.16.0.81        
DNS/NTP HCTJOSINFRA02 10.30.2.82 172.16.0.82        

2.1. 在HCTJOSMYSQL01/02/03上安装MySQL

安装yum源

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

在RHEL7.4上虽然已经配置了EPEL源,但是仍然会出现找不到libev.so.4()的错误,请使用下面地址直接安装

https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libev-4.15-3.el7.x86_64.rpm

安装软件吧

yum install Percona-XtraDB-Cluster-57

先别着急启动,配置一个独立的分区用来存储数据库文件

vgcreate vg_mysql /dev/sdb
lvcreate -n lv_mysql -l +100%FREE vg_mysql
mkfs.xfs /dev/mapper/vg_mysql-lv_mysql

写进/etc/fstab

#Disk for mysql data
/dev/mapper/vg_mysql-lv_mysql /data_mysql xfs defaults 0 0

重新挂载,在分区内建立两个文件夹,mysql和backup

mkdir -pv /data_mysql
mount -a
mkdir -pv /data_mysql/{mysql,backup}

修改/etc/percona-xtradb-cluster.conf.d/mysqld.cnf

datadir=/data_mysql/mysql

起来试试吧

systemctl start mysql

看看密码是个啥

grep 'temporary password' /var/log/mysqld.log

连接数据库并输出刚才看见的密码

mysql -u root -p

为了将来管理方便,添加了远程的访问权限

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql';
Query OK, 0 rows affected (0.01 sec) mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "mysql";
Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

SST用户也要添加,否则其他结点无法正常连入主节点

mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'mysql';
Query OK, 0 rows affected (0.00 sec) mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

服务停掉,准备配置集群吧

systemctl stop mysql

集群的配置文档在这:https://www.percona.com/doc/percona-xtradb-cluster/5.7/configure.html#configure

首先修改/etc/percona-xtradb-cluster.conf.d/wsrep.cnf

[mysqld]
# Path to Galera library
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so # Cluster connection URL contains IPs of nodes
#If no IP is found, this implies that a new cluster needs to be created,
#in order to do that you need to bootstrap this node
#这里可以写域名或者IP地址
wsrep_cluster_address=gcomm://hctjosmysql01.hccos.cn,hctjosmysql02.hccos.cn,hctjosmysql03.hccos.cn # In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW # MyISAM storage engine has only experimental support
default_storage_engine=InnoDB # Slave thread to use
wsrep_slave_threads= 8 wsrep_log_conflicts # This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2 # Node IP address
# 这个可以写可以不写
wsrep_node_address=hctjoscontroller01.homecredit.cn
# Cluster name
wsrep_cluster_name=pxc-cluster-hcc #If wsrep_node_name is not specified, then system hostname will be used
wsrep_node_name=hctjosmysql01.hccos.cn #pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING # SST method
wsrep_sst_method=xtrabackup-v2

#这项一定要写
#Authentication for SST method
wsrep_sst_auth="sstuser:mysql"

启动主节点

systemctl start mysql@bootstrap.service

在其他节点上修改/etc/percona-xtradb-cluster.conf.d/wsrep.cnf

wsrep_cluster_address=gcomm://hctjosmysql01.hccos.cn,hctjosmysql02.hccos.cn,hctjosmysql03.hccos.cn
wsrep_node_name=hctjosmysql02.hccos.cn
wsrep_node_address=hctjosmysql02.hccos.cn
wsrep_cluster_address=gcomm://hctjosmysql01.hccos.cn,hctjosmysql02.hccos.cn,hctjosmysql03.hccos.cn
wsrep_node_name=hctjosmysql03.hccos.cn
wsrep_node_address=hctjosmysql03.hccos.cn

在其他结点上修改/etc/percona-xtradb-cluster.conf.d/mysqld.cnf

[mysqld]
server-id=2
[mysqld]
server-id=3

在其他上启动mysql

systemctl start mysql

随便找一个节点验证

mysql> show status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.00 sec)

注意:如果cluster已经启动,主节点down机想重新加入这个集群,直接启动mysql即可

systemctl start mysql

如果这个集群中最后的节点也down机了,在任何一个节点都可以启动集群,重新启动集群需要执行

systemctl start mysql@bootstrap.service

3. 利用Haproxy实现高可用,在HCTJOSDR01/02上

安装文档在这,http://www.cnblogs.com/demonzk/p/8404085.html 已经装好了,只需要在/etc/haproxy/haproxy.cfg下面添加就好

#---------------------------------------------------------------------
# mysql
#---------------------------------------------------------------------
listen percona_cluster
bind *:3306
balance roundrobin
option mysql-check
mode tcp
server hctjosmysql01 172.16.0.25:3306 weight 1 maxconn 100000 check inter 10s
server hctjosmysql02 172.16.0.26:3306 weight 1 maxconn 100000 check inter 10s
server hctjosmysql03 172.16.0.27:3306 weight 1 maxconn 100000 check inter 10s

4. 在HCTJOSINFRA01上添加A记录,/var/named/hccos.cn.zone

;vip
mysql IN A 172.16.0.148
mysql IN A 172.16.0.149

【Linux】【Database】【MySQL】使用percona搭建高可用的MySQL数据库的更多相关文章

  1. 【线上测试之后的应用】基于MySQL+MHA+Haproxy构建高可用负载均衡数据库集群(详解)

    这里我们先介绍一下MHA是什么,其次就是它的应用与测试,同时为了大家呈现了数据备份案例,最后总结了使用情况以及注意事项和解决办法 一.MHA 概述 MHA(Master High Availabili ...

  2. MySQL 高可用:mysql+mycat实现数据库分片(分库分表)

    本文引用于http://blog.csdn.net/kk185800961/article/details/51147029 MySQL 高可用:mysql+mycat实现数据库分片(分库分表) 什么 ...

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

    转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还 ...

  4. [转]搭建高可用mongodb集群(四)—— 分片

    按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...

  5. 搭建高可用mongodb集群(四)—— 分片

    按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...

  6. 搭建高可用mongodb集群(三)—— 深入副本集内部机制

    在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...

  7. 搭建高可用mongodb集群(一)——配置mongodb

    在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过 ...

  8. 搭建高可用mongodb集群(四)—— 分片

    按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...

  9. 搭建高可用mongodb集群—— 分片

    从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出 ...

随机推荐

  1. 攻防世界 Misc 新手练习区 give_you_flag Writeup

    攻防世界 Misc 新手练习区 give_you_flag Writeup 题目介绍 题目考点 gif图片分离 细心的P图 二维码解码 Writeup 下载附件打开,发现是一张gif图片,打开看了一下 ...

  2. React 三大属性state,props,refs以及组件嵌套的应用

    React 三大属性state,props,refs以及组件嵌套的应用 该项目实现了一个简单的表单输入添加列表的内容 代码如下 <!DOCTYPE html> <html> & ...

  3. 图文详解 Java 字节码,让你秒懂全过程

    原文地址:https://blog.csdn.net/AliceSmith1/article/details/80051153 即便对那些有经验的Java开发人员来说,阅读已编译的Java字节码也很乏 ...

  4. C# WINFORM进销存系统开发(内涵免费源码+部分实操视频讲解)

    互联网的时代,电商火爆,大家都开始进行线上销售货品,那你是如何管理你的商品库存和进销问题?软积木--小敏用的是C# WINFORM进销存系统来管理我的数据,给我带来了很多便利. 它是高频需求项目,很多 ...

  5. Swift-技巧(五)设置圆角的代码

    摘要 实现控件圆角的代码时,会不假思索的写 cornerRadius 和 masksToBounds,因为搜索得到的设置圆角的代码就是这样.今天突发奇想,为什么要写 masksToBounds? 打个 ...

  6. Salesforce Consumer Goods Cloud 浅谈篇三之 行动计划(Action Plan)相关配置

    本篇参考: https://v.qq.com/x/page/f0772toebhd.html https://v.qq.com/x/page/e0772tsmtek.html https://v.qq ...

  7. 04373 C++程序设计 2019版 第一章习题五、程序设计题

    题目: 1.编写一个程序,将从键盘输入的n个字符串保存在一个一维数组A中.在输入字符串之前,先输入n的值.要求,数组A需要动态申请空间,程序运行结束前再释放掉. #include <iostre ...

  8. 日志审计功能-appent多个日志

    public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1"); jedis.setnx ...

  9. 反调试代码调试死机代码禁止F12代码

    反调试代码调试死机代码禁止F12代码  // 反调试函数,参数:开关,执行代码 function siji(){    var total="";    for (var i=0; ...

  10. Devs--开源规则引擎介绍

    Devs Devs是一款轻量级的规则引擎. 开源地址:https://github.com/CrankZ/devs 基础概念 此规则引擎的基础概念有字段.条件.规则等. 其中字段组成条件,条件组成规则 ...