MySQL Galera集群搭建流程(Percona XtraDB Cluster 5.7)

发布时间:2020-08-11 05:38:33

来源:ITPUB博客

阅读:123

作者:feelpurple

避免创建偶数节点数量的集群,因为这样会导致脑裂。

Linux版本:CentOS 6.5

IP信息:

Node     IP

Node 1     10.20.30.10

Node 2     10.20.30.20

Node 3     10.20.30.30

关掉selinux和防火墙,否则后面初始化集群会失败

[root@localhost mysql_log_57]# vim /etc/selinux/config

SELINUX=disabled

1. 在所有节点上安装Percona XtraDB集群软件

安装YUM源

[root@localhost ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

检查包是否可用

[root@localhost install]# yum list | grep Percona-XtraDB-Cluster-57

Percona-XtraDB-Cluster-57.x86_64            5.7.18-29.20.1.el6          percona-release-x86_64

Percona-XtraDB-Cluster-57-debuginfo.x86_64  5.7.18-29.20.1.el6          percona-release-x86_64

安装Percona XtraDB集群包

[root@localhost install]# yum install Percona-XtraDB-Cluster-57

安装时提示缺少下面的包

Error: Package: Percona-XtraDB-Cluster-server-57-5.7.18-29.20.1.el6.x86_64 (percona-release-x86_64)

Requires: socat

Error: Package: percona-xtrabackup-24-2.4.7-2.el6.x86_64 (percona-release-x86_64)

Requires: libev.so.4()(64bit)

安装缺少的socat和libev包

到fedora官网下载repository

在下面网页中下载epel-release开头的rpm包

http://dl.fedoraproject.org/pub/epel/6/x86_64/

上传rpm包到服务器上

安装repository包

[root@localhost install]# yum localinstall epel-release-6-8.noarch.rpm

安装socat、libev

[root@localhost install]# yum install socat libev

再次安装Percona XtraDB集群包

[root@localhost install]# yum install Percona-XtraDB-Cluster-57

注意,如果服务器上安装过数据库,/etc/my.cnf配置文件已经存在,需要将其改名,否则会对集群启动产生影响

[root@localhost ~]# mv /etc/my.cnf /etc/my_5.7_mha.cnf

查看数据目录下的内容

[root@localhost usr]# cd /var/lib/mysql

[root@localhost mysql]# ls -trl

total 126800

-rw-r-----. 1 mysql mysql 50331648 Jul  1 19:21 ib_logfile1

-rw-r-----. 1 mysql mysql       56 Jul  1 19:21 auto.cnf

-rw-------. 1 mysql mysql     1676 Jul  1 19:21 ca-key.pem

-rw-r--r--. 1 mysql mysql     1083 Jul  1 19:21 ca.pem

-rw-------. 1 mysql mysql     1676 Jul  1 19:21 server-key.pem

-rw-r--r--. 1 mysql mysql     1087 Jul  1 19:21 server-cert.pem

-rw-------. 1 mysql mysql     1680 Jul  1 19:21 client-key.pem

-rw-r--r--. 1 mysql mysql     1087 Jul  1 19:21 client-cert.pem

-rw-r--r--. 1 mysql mysql      452 Jul  1 19:21 public_key.pem

-rw-------. 1 mysql mysql     1680 Jul  1 19:21 private_key.pem

drwxr-x---. 2 mysql mysql     4096 Jul  1 19:21 performance_schema

drwxr-x---. 2 mysql mysql     4096 Jul  1 19:21 mysql

drwxr-x---. 2 mysql mysql    12288 Jul  1 19:21 sys

-rw-r-----. 1 mysql mysql      417 Jul  1 19:21 ib_buffer_pool

-rw-rw----. 1 root  root         5 Jul  1 19:21 mysqld_safe.pid

-rw-------. 1 mysql mysql        5 Jul  1 19:21 mysql.sock.lock

srwxrwxrwx. 1 mysql mysql        0 Jul  1 19:21 mysql.sock

-rw-r-----. 1 mysql mysql        5 Jul  1 19:21 localhost.localdomain.pid

-rw-r-----. 1 mysql mysql  3932160 Jul  1 19:21 xb_doublewrite

-rw-r-----. 1 mysql mysql 12582912 Jul  1 19:21 ibtmp1

-rw-r-----. 1 mysql mysql 12582912 Jul  1 19:21 ibdata1

-rw-r-----. 1 mysql mysql 50331648 Jul  1 19:21 ib_logfile0

-rw-r-----. 1 mysql mysql     4653 Jul  1 19:22 localhost.localdomain.er

默认安装的软件目录

查看软件目录下的内容

[root@localhost ~]# cd /usr/

[root@localhost usr]# ls -trl

total 144

drwxr-xr-x.   2 root root  4096 Sep 23  2011 games

drwxr-xr-x.   2 root root  4096 Sep 23  2011 etc

drwxr-xr-x.   4 root root  4096 Mar 23 16:03 src

lrwxrwxrwx.   1 root root    10 Mar 23 16:03 tmp -> ../var/tmp

dr-xr-xr-x.  15 root root  4096 Mar 23 16:17 lib

drwxr-xr-x.  42 root root  4096 Apr  3 03:15 include

drwxr-xr-x.  22 root root 12288 Apr  3 03:41 libexec

drwxr-xr-x.  14 root root  4096 Apr  9 08:25 local

dr-xr-xr-x.   2 root root 36864 Jul  1 16:11 bin

dr-xr-xr-x.  92 root root 49152 Jul  1 16:11 lib64

dr-xr-xr-x.   2 root root 12288 Jul  1 16:11 sbin

drwxr-xr-x. 175 root root  4096 Jul  1 16:11 share

启动Percona XtraDB集群服务

service mysql start

查看集群状态

[root@localhost mysql]# service mysql status

SUCCESS! MySQL (Percona XtraDB Cluster) running (2263)

实际上集群的进程就是mysqld的进程

[root@localhost mysql]# service mysql status

SUCCESS! MySQL (Percona XtraDB Cluster) running (2928)

[root@localhost mysql]# ps -ef|grep mysql

root      2824     1  0 19:56 pts/1    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/localhost.localdomain.pid

mysql  2928 2824  2 19:56 pts/1    00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/localhost.localdomain.err --pid-file=/var/lib/mysql/localhost.localdomain.pid --wsrep_start_position=00000000-0000-0000-0000-000000000000:-1

root      2982  2711  0 19:57 pts/1    00:00:00 grep mysql

重新设置root密码

[root@localhost log]# mysqld_safe --skip-grant-tables --skip-networking&

[root@localhost log]# mysql -uroot

mysql> update mysql.user set authentication_string=password('root') where user='root';

mysql> commit;

[root@localhost log]# mysqladmin shutdown

[root@localhost log]# service mysql start

Starting MySQL (Percona XtraDB Cluster).. SUCCESS!

[root@localhost ~]# mysql -uroot -p

mysql> alter user root@localhost identified by 'root';

2. 在所有节点上配置写集合复制相关的参数

这包括Glera库的路径和其他节点的位置

停掉集群服务

[root@localhost ~]# service mysql stop

Shutting down MySQL (Percona XtraDB Cluster)... SUCCESS!

参数说明:

wsrep_provider        指定Galera库的路径

wsrep_cluster_name    指定集群各个节点的IP地址

wsrep_node_name        指定每个节点的逻辑名。如果没有指定这个参数,默认会使用主机名

wsrep_node_address    指定节点的IP地址

wsrep_sst_method    默认,Percona XtraDB集群使用Percona XtraBackup来做状态快照传输(SST)。强烈建议将这个参数设为wsrep_sst_method=xtrabackup-v2。使用这个方法需要配置一个数据库用户。在wsrep_sst_auth参数中指定SST认证用户。

wsrep_sst_auth        指定SST认证用户名和密码,格式是:。

性和不支持的特性

binlog_format        Gelera只支持行级的复制,所以设置 binlog_format=ROW

default_storage_engine    Galera只支持InnoDB存储引擎。不支持MyISAM或其他非事务性的存储引擎。所以设置 default_storage_engine=InnoDB

innodb_autoinc_lock_mode    Gelara只支持适合InnoDB的interleaved (2)锁模式。将这个参数设为traditional (0)或consecutive (1)锁模式会引起死锁,

进而将会导致复制失败。所以设置 innodb_autoinc_lock_mode=2

节点1配置文件

[mysqld]

wsrep_provider=/usr/lib64/galera3/libgalera_smm.so

wsrep_cluster_name=pxc-cluster

wsrep_cluster_address="gcomm://10.20.30.10,10.20.30.20,10.20.30.30"

wsrep_node_name=pxc1

wsrep_node_address=10.20.30.10

wsrep_sst_method=xtrabackup-v2

wsrep_sst_auth=sstuser:passw0rd

pxc_strict_mode=ENFORCING

binlog_format=ROW

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

basedir = /usr

datadir = /var/lib/mysql

pid-file=/var/run/mysqld/mysqld_galera.pid

log-error=/var/log/mysqld_galera.log

port = 3306

user = mysql

socket = /var/lib/mysql/mysql.sock

skip-external-locking

max_allowed_packet = 1M

table_open_cache = 4

sort_buffer_size = 64K

read_buffer_size = 256K

net_buffer_length = 2K

read_buffer_size = 256K

net_buffer_length = 2K

thread_stack = 256K

max_connections = 1000

#log-bin = /mysql_log_57/galera-bin

#servier-id = 1000

节点2配置文件

[mysqld]

wsrep_provider=/usr/lib64/galera3/libgalera_smm.so

wsrep_cluster_name=pxc-cluster

wsrep_cluster_address=gcomm://10.20.30.10,10.20.30.20,10.20.30.30

wsrep_node_name=pxc2

wsrep_node_address=10.20.30.20

wsrep_sst_method=xtrabackup-v2

wsrep_sst_auth=sstuser:passw0rd

pxc_strict_mode=ENFORCING

binlog_format=ROW

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

basedir = /usr

datadir = /var/lib/mysql

pid-file=/var/run/mysqld/mysqld_galera.pid

log-error=/var/log/mysqld_galera.log

port = 3306

user = mysql

socket = /var/lib/mysql/mysql.sock

skip-external-locking

max_allowed_packet = 1M

table_open_cache = 4

sort_buffer_size = 64K

read_buffer_size = 256K

net_buffer_length = 2K

read_buffer_size = 256K

net_buffer_length = 2K

thread_stack = 256K

max_connections = 1000

#log-bin = /mysql_log_57/galera-bin

#servier-id = 1000

节点3配置文件

[mysqld]

wsrep_provider=/usr/lib64/galera3/libgalera_smm.so

wsrep_cluster_name=pxc-cluster

wsrep_cluster_address=gcomm://10.20.30.10,10.20.30.20,10.20.30.30

wsrep_node_name=pxc3

wsrep_node_address=10.20.30.30

wsrep_sst_method=xtrabackup-v2

wsrep_sst_auth=sstuser:passw0rd

pxc_strict_mode=ENFORCING

binlog_format=ROW

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

basedir = /usr

datadir = /var/lib/mysql

pid-file=/var/run/mysqld/mysqld_galera.pid

log-error=/var/log/mysqld_galera.log

port = 3306

user = mysql

socket = /var/lib/mysql/mysql.sock

skip-external-locking

max_allowed_packet = 1M

table_open_cache = 4

sort_buffer_size = 64K

read_buffer_size = 256K

net_buffer_length = 2K

read_buffer_size = 256K

net_buffer_length = 2K

thread_stack = 256K

max_connections = 1000

#log-bin = /mysql_log_57/galera-bin

#servier-id = 1000

查看模块

[root@localhost ~]# ll /usr/lib64/galera3/libgalera_smm.so

-rwxr-xr-x. 1 root root 2404960 May 31 23:07 /usr/lib64/galera3/libgalera_smm.so

3. 在第一个节点上初始化集群

这个节点必须包含全部的数据,作为集群的数据源。

在第一个节点上执行下面操作

[root@localhost mysql_log_57]# /etc/init.d/mysql bootstrap-pxc

Starting MySQL (Percona XtraDB Cluster)..... SUCCESS!

查看集群状态

[root@localhost mysql_log_57]# mysql -uroot -p

mysql> show status like 'wsrep%';

| wsrep_local_state_comment        | Synced                               |    // 节点是同步状态

| wsrep_cluster_size               | 1                                    |    // 集群只有一个节点

| wsrep_cluster_status             | Primary                              |    // 主节点

| wsrep_connected                  | ON                                   |    // 已经连接到集群

| wsrep_ready                      | ON                                   |        // 已经做好写集合的复制准备

在增加其他节点到集群中前,创建SST的数据库用户。这个账户必须和配置文件中的信息相符。

mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd';

Query OK, 0 rows affected (0.02 sec)

mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO

->   'sstuser'@'localhost';

Query OK, 0 rows affected (0.00 sec)

4. 增加其他节点到集群中

当配置好wsrep_cluster_address等配置文件后,启动该节点,它会自动加入集群并开始同步数据。

注意:不要在相同时间加入多个节点到集群中,以避免巨大的网络流量压力。

默认,Percona XtraDB集群使用Percona XtraBackup来传输状态快照 State Snapshot Transfer (SST)。

需要满足下面条件:

设置wsrep_sst_method参数为xtrabackup-v2,并使用wsrep_sst_auth变量提供SST用户认证。

在初始化节点上面创建SST用户。

启动第2个节点

[root@localhost ~]# /etc/init.d/mysql start

在第2个节点上,查看用户和集群状态

可以看到SST用户已经复制到第2节点,集群已经有了两个节点,size变为2

mysql> select user, host from mysql.user;

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

| user      | host      |

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

| mysql.sys | localhost |

| root      | localhost |

| sstuser   | localhost |

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

3 rows in set (0.01 sec)

mysql> show status like 'wsrep%';

| wsrep_local_state_comment        | Synced                               |

| wsrep_cluster_size               | 2                                    |

增加第3个节点到集群中

[root@localhost ~]# /etc/init.d/mysql start

在第3个节点检查集群的状态

mysql> show status like 'wsrep%';

| wsrep_cluster_size               | 3                                                  |

可以看到集群的wsrep_cluster_size参数变为3,集群增加到第3个节点

5. 验证复制效果

在第2个节点上创建一个数据库

mysql> CREATE DATABASE percona;

Query OK, 1 row affected (0.07 sec)

在第3个节点上,在刚刚创建的库里面创建一张表

mysql> USE percona;

Database changed

mysql> CREATE TABLE example (node_id INT PRIMARY KEY, node_name VARCHAR(30));

Query OK, 0 rows affected (0.05 sec)

在第1个节点上,往这张表中插入一条数据

mysql> INSERT INTO percona.example VALUES (1, 'percona1');

Query OK, 1 row affected (0.23 sec)

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

在第2个节点查看这张表中的数据

mysql> SELECT * FROM percona.example;

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

| node_id | node_name |

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

|       1 | percona1  |

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

1 row in set (0.00 sec)

galera mysql5.7.17_MySQL Galera集群搭建流程(Percona XtraDB Cluster 5.7)相关推荐

  1. 搭建mysql集群,使用Percona XtraDB Cluster搭建

    Percona XtraDB Cluster提供的特性有: 1.同步复制,事务要么在所有节点提交或不提交. 2.多主复制,可以在任意节点进行写操作. 3.在从服务器上并行应用事件,真正意义上的并行复制 ...

  2. 全分布式集群搭建流程(超详细)

    全分布式的集群搭建流程如下: 1.克隆虚拟机 2.克隆后的配置 修改网卡信息 vi /etc/udev/rules.d/70-persistent-net.rules 修改主机名 vi /etc/sy ...

  3. MySQL5.7.30主从复制集群搭建及互为主从集群搭建(附问题处理方案)

    使用两台centos7的虚拟机 192.168.8.133 192.168.8.134 首先在两台上面分别搭建MySQL5.7.30的单节点数据库,详细步骤请看:centos7 MySQL5.7.30 ...

  4. MySQL分布式集群搭建

    1 准备集群搭建环境 使用6台虚拟机来搭建MYSQL集群,相应的实验环境与对应的MYSQL节点之间的对应关系如下图所示: 节点名称 节点IP 节点内存 节点硬盘大小 节点CPU MYSQL节点角色 U ...

  5. mongodb生成自签名证书以及配置SSL以及mongo集群搭建(亲测有效)版本-5.0.6

    @[TOC](mongodb生成自签名证书以及配置SSL(亲测有效) 版本-5.0.6 一直以来都是向大神学习,今天也做回大神分享,哈哈!!几个小时的努力不算白费. 一.自签名证书生成 1.生成根证书 ...

  6. 二进制安装mysql集群_实战mysql集群搭建(一)--centos7下二进制安装mysql-5.6

    在超哥的帮助下,完成了基于InnoDb数据引擎的mysql数据库集群搭建,实现了主从复制的功能,本篇博文介绍如何使用二进制安装mysql的方法,具体实现步骤如下: 软件使用说明: Liunx系统:ce ...

  7. MySQL集群搭建--多主模式

    MySQL集群搭建--多主模式 本文使用的是Galera搭建的MYSQL集群,实现的是每个MYSQL都是主服务器,不存在主从之分. 环境: 三台mysql5.7服务器. 安装mysql集群: 安装前准 ...

  8. Mysql搭建PXC集群 - Percona XtraDB Cluster

    转载来源:https://blog.csdn.net/lvshaorong/article/details/80501905  pxc集群是Percona XtraDB Cluster的缩写,是基于p ...

  9. mysql 数据库集群搭建:(四)pacemaker管理三台maxscale集群,搭建mariadb读写分离中间层集群...

    为什么80%的码农都做不了架构师?>>>    <mysql 数据库集群搭建:(一)VirtualBox中多台CentOS虚拟机间和windows主机间互通以及访问互联网设置& ...

最新文章

  1. (0058)iOS开发之iOS8新特性IBDesignable的使用
  2. AcWing 164. 可达性统计
  3. ++i 和 i++的实现
  4. Java中弹出对话框的方法
  5. java组件代码_[java]常用组件
  6. leetcode1082. 销售分析 I (SQL)
  7. python列表字典_Python常用对字典、列表的操作
  8. python消息队列模块_day43-python消息队列二-queue模块
  9. 函数hdu 1557 权利指数
  10. 【Hadoop Summit Tokyo 2016】一小时之内使用Apache Nifi从零到数据流
  11. Taproot激活时间将改由MTP计算
  12. HDU2072 单词数(解法二)【废除!!!】
  13. 接管客厅第一步:联想智能音箱体验评测
  14. 拓端tecdat|使用markdown,knitr和pandoc在R语言中编写可重现的报告
  15. 关于python文件打开模式表示错误的是_python文件读取失败了该怎么处理 !
  16. ALCO单螺母SN系列面板安装球阀
  17. WIN10 任务栏转圈 白屏问题
  18. 写给Android开发的Android简史
  19. Unsupervised Domain Adaptive Re-Identification: Theory and Practice阅读总结
  20. Moore FSM和Mealy FSM的区别

热门文章

  1. 【设计谈】字体与排版
  2. Java实现在线考试系统(学生功能)
  3. Flutter 之ListView实现下拉刷新和上拉加载更多
  4. 克拉美-劳界(Cramér-Rao Bound,CRB)及其修正型
  5. plupload断点续传 php,Plupload 文件断点续传,文件分块上传
  6. 如何以客户为核心,洞察客户需求有效推送产品?
  7. 精品基于NET实现的家电维修保养信息系统
  8. CleanMyMac X 4.6.5中文版 — Mac清理优化工具
  9. 常用的display的属性
  10. 数据结构-循环队列(C语言代码)