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. win10 python3.8 wxpython.whl 安装步骤

     wxpython是python开发常用图形用户界面(GUI)工具之一,GUI因其直观便捷,对我们提高开发效率一定帮助.这里介绍一下新版本wxPython 4.0.1的安装过程及注意事项. 第1步:下 ...

  2. uni-app app端设置全屏背景色

    设置page:{样式},博主调试的时候在app端不起作用,设置配置文件的backgroundColor也没有用,所以博主就使用了一个稍微比较偏的办法解决了,没有用获取设备信息的api来实现 具体操作就 ...

  3. Netty数据如何在 pipeline 中流动

    前言 在之前文章中,我们已经了解了pipeline在netty中所处的角色,像是一条流水线,控制着字节流的读写,本文,我们在这个基础上继续深挖pipeline在事件传播 Unsafe对象 顾名思义,u ...

  4. 本地以sysdba 身份登录数据库实例时,报错ORA-01031 权限不足

    在linux 操作系统的数据库服务器上,使用"sqlplus / as sysdba" 登录Oracle 10.2 数据库实例时,登录失败,显示ORA-01031:  权限不足. ...

  5. Python基础(使用模块)

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- ' a test module ' __author__ = 'Michael Liao' import ...

  6. 【linux系统】java环境搭建

    搭建步骤 1.安装java : 上传java安装包到linux系统----- rz jdk-8u202-linux-x64.tar.gz jdk下载地址:https://www.oracle.com/ ...

  7. 对于VS2013使控制台暂停的方法

    #include<stdio.h>int main(){    int year, leap;    printf("enter year:");    scanf_s ...

  8. Linux学习 - 树莓派4b的U-Boot的初识

    Linux学习 - 树莓派4b的U-Boot的初识 初识U-Boot 学习书籍:<[正点原子]I.MX6U嵌入式Linux驱动开发指南V1.5.1> 章节:第三十章 学习内容: 书中介绍u ...

  9. 新玩法-使用AllArgsConstructor+filal代替autowired

    和下面的代码一样: Springboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入原因:final修饰的成员变量是不能够被修改的,反射那就没办法了 还有一种写法: @Requir ...

  10. html5的canvas鼠标点击画圆

    <!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...