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/
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 formysql 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.01sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO root@”%” IDENTIFIED BY “mysql”;
Query OK, 0 rows affected, 1 warning (0.01sec)
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.00sec)
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO ‘sstuser’@’localhost’;
Query OK, 0 rows affected (0.00sec)
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 dothat you need to bootstrap this node
#这里可以写域名或者IP地址
wsrep_cluster_address=gcomm://hctjosmysql01.hccos.cn,hctjosmysql02.hccos.cn,hctjosmysql03.hccos.cn
# In order forGalera 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= 8wsrep_log_conflicts
# This changes how InnoDB autoincrement locks are managed and is a requirement forGalera
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 hostnamewill 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 forSST 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*:3306balance roundrobin
option mysql-check
mode tcp
server hctjosmysql01172.16.0.25:3306 weight 1 maxconn 100000check inter 10s
server hctjosmysql02172.16.0.26:3306 weight 1 maxconn 100000check inter 10s
server hctjosmysql03172.16.0.27:3306 weight 1 maxconn 100000 check inter 10s
4. 在HCTJOSINFRA01上添加A记录,/var/named/hccos.cn.zone
;vip
mysql IN A172.16.0.148mysql IN A172.16.0.149
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!