目录
一、PXC概述
1.简介
2.架构图
3. 特性
二、主节点配置
1.机器需求
2.环境准备
2.1 解压
2.2 添加软链接,创建数据目录并授权
3.配置文件
4.初始化数据库
5.启动第一节点
6.创建环境变量
三、维护数据库环境
删除匿名用户和非root用户
四、其他节点配置
五、查看集群
PXC是percona公司的percona xtraDB cluster.简称PXC。它是基于GaLera协议的高可用集群方案。可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据强一致性。
三个节点都已经启动成功,这样在任意一个节点上面,执行一条DML语句的操作,都会同步到另外两个节点。
优点:
1. 可以达到时时同步,无延迟现象发生
2. 完全兼容MySQL
3. 对于集群中新节点的加入,维护起来很简单
4. 数据的强一致性
不足之处:
1. 只支持Innodb存储引擎
2. 存在多节点update更新问题,也就是写放大问题
3. 在线DDL语句,锁表问题
4. sst针对新节点加入的传输代价过高的问题
主机名 | IP | 描述 |
test1 | 192.168.0.31 | pxc |
test2 | 192.168.0.32 | pxc |
test3 | 192.168.0.33 | pxc |
cat /etc/hosts
192.168.0.31 test1.cn
192.168.0.32 test2.cn
192.168.0.33 test3.cn
xtrabackup包: percona-xtrabackup-2.4.6-Linux-x86_64.tar.gz
Percona-XtraDB-Cluster包:Percona-XtraDB-Cluster-5.6.26-rel74.0-25.12.1.Linux.x86_64.tar.gz
yum remove mariadb* -y //移除mysql
yum install perl-IO-Socket-SSL.noarch perl-DBD-MySQL.x86_64 perl-Time-HiRes openssl openssl-devel socat -y //安装依赖
[root@test1 ~]# tar -xf percona-xtrabackup-2.4.6-Linux-x86_64.tar.gz -C /usr/local/
[root@test1 ~]# tar -xf Percona-XtraDB-Cluster-5.6.26-rel74.0-25.12.1.Linux.x86_64.tar.gz -C /usr/local/
[root@test1 local]# ln -sv Percona-XtraDB-Cluster-5.6.26-rel74.0-25.12.1.Linux.x86_64/ mysql
[root@test1 local]# useradd -s /sbin/nologin mysql
[root@test1 local]# mkdir -p /data/mysql
[root@test1 local]# chown mysql.mysql -R /data/mysql/
[root@test1 local]# chown mysql.mysql -R mysql
[root@test1 percona-xtrabackup-2.4.6-Linux-x86_64]# cp /bin/* /usr/local/mysql/bin/
[root@test1 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql #数据存放目录
socket = /tmp/mysql.sock #套接字
pid-file=/data/mysql/mysql.pid
character_set_server = utf8
max_connections = 3000
back_log= 3000
skip-name-resolve
sync_binlog=0 #实时同步
innodb_flush_log_at_trx_commit=1 #刷新日志
server-id = 1 #唯一ID
#pxc
default_storage_engine=Innodb #默认存储引擎
innodb_autoinc_lock_mode=2 #本身模式
binlog_format=row #日志格式
wsrep_cluster_name=pxc_zs
wsrep_slave_threads=4 #开启的复制线程数,cpu核数的2倍
wsrep_cluster_address=gcomm://192.168.0.31,192.168.0.32,192.168.0.33 #指定集群节点
wsrep_node_address=192.168.0.31 #当前IP
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so #调用的固定模块
wsrep_sst_method=xtrabackup-v2 #同步方式
wsrep_sst_auth=sst:zs #同步认证,账号密码
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/ --defaults-file=/etc/my.cnf --user=mysql
[root@test1 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
[root@test1 ~]# /etc/init.d/mysql bootstrap-pxc
让系统变量读到MySQL的路径:
[root@test1 ~]# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
[root@test1 ~]# source !$
mysql> delete from mysql.user where user!='root' or host!='localhost';
mysql> grant all privileges on *.* to 'sst'@'%' identified by 'zs';
mysql> grant all privileges on *.* to 'sst'@'localhost' identified by 'zs';
mysql> flush privileges;
步骤同上,有两处不同之处
1.配置文件
配置文件的server-id 和wsrep_node_address 不同
2.启动mysql
/etc/init.d/mysql start
在test1运行
mysql> show status like 'wsrep%';