mysql_PXC架构

风杀MySQL 教程约 991 字大约 3 分钟

前言

​ 数据库是用来存储数据的,那么数据的重要性不言而喻,那么只用一台数据库存储数据是非常危险的,比如,如果这台数据库或者部署这台数据库的服务器崩溃了,那么这段时间的系统崩溃可能会造成不良的用户体验,进而导致经济效益的下滑。

​ 于是,这样设想,如果有多台数据库提供服务支持,即使有一台崩溃了,还有其他的数据库顶上去干活那不就完事了,确实,这些若干个数据库共同组成了一个集群,称为数据库集群。它包括两种常见结构:一主多从,多主多从;

*PXC特性和优点*

A. 完全兼容 MySQL。

B. 同步复制,事务要么在所有节点提交或不提交。

C. 多主复制,可以在任意节点进行写操作。

D. 在从服务器上并行应用事件,真正意义上的并行复制。

E. 节点自动配置,数据一致性,不再是异步复制。

F. 故障切换:因为支持多点写入,所以在出现数据库故障时可以很容易的进行故障切换。

G. 自动节点克隆:在新增节点或停机维护时,增量数据或基础数据不需要人工手动备份提供,galera cluster会自动拉取在线节点数据,集群最终会变为一致;

PXC最大的优势:强一致性、无同步延迟

开放端口

systemctl start firewalld firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --zone=public --add-port=4444/tcp --permanent firewall-cmd --zone=public --add-port=4567/tcp --permanent firewall-cmd --zone=public --add-port=4568/tcp --permanent firewall-cmd --reload

安装Percona-XtraDB-Cluster

wget https://downloads.percona.com/downloads/Percona-XtraDB-Cluster-LATEST/Percona-XtraDB-Cluster-8.0.23/binary/redhat/7/x86_64/Percona-XtraDB-Cluster-8.0.23-rd3b9a1d-el7-x86_64-bundle.taropen in new window tar -xvf Percona-XtraDB-Cluster-8.0.23-rd3b9a1d-el7-x86_64-bundle.tar yum localinstall *.rpm

启动mysql

修改配置

# Template my.cnf for PXC
# Edit to your requirements.
[client]
socket=/var/lib/mysql/mysql.sock
a
[mysqld]
server-id=1
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# Binary log expiration period is 604800 seconds, which equals 7 days
binlog_expire_logs_seconds=604800

######## wsrep ###############
# Path to Galera library
wsrep_provider=/usr/lib64/galera4/libgalera_smm.so

#pxc集群所有节点之间通讯的加密与否,OFF表示不加密,ON表示加密
pxc-encrypt-cluster-traffic=OFF

# 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
#注意第一个节点一定是第一个启动的主节点
wsrep_cluster_address=gcomm://192.168.56.78,192.168.56.79

# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW

# 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=192.168.70.63
wsrep_node_address=192.168.56.78

# Cluster name
wsrep_cluster_name=pxc-cluster

#If wsrep_node_name is not specified,  then system hostname will be used
wsrep_node_name=pxc-cluster-node-1

#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING

# SST method
wsrep_sst_method=xtrabackup-v2

第一个启动或者主节点启动需要执行下面命令

systemctl start mysql@bootstrap.service 其它节点使用,其余节点会同步主节点数据 systemctl start mysqld

修改mysql的配置

查找初始密码

cat /var/log/mysqld.log mysql -u root -p

ALTER USER 'root'@'localhost' IDENTIFIED BY 'fengshapxc1';
#设置远程登录
use mysql;
update user set host = '%' where user ='root';
exit;

报错缺少需:qpress

yum -y install https://repo.percona.com/yum/release/7/RPMS/x86_64/qpress-11-1.el7.x86_64.rpmopen in new window

################################不需要######################################################

卸载mysql

rpm -qa | grep mysql rpm -e --nodeps mysql yum clean all

安装mysql

wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpmopen in new window rpm -ivh mysql80-community-release-el7-3.noarch.rpm yum update yum install mysql-server

创建mysql用户,给与mysql权限

groupadd mysql useradd mysql -g mysql -p mysql chmod +w /etc/sudoers vim /etc/sudoers chmod -w /etc/sudoers

root    ALL=(ALL)       ALL
mysql   ALL=(ALL)  ALL

chmod -R 777 /var/lib/mysql chown mysql:mysql -R /var/lib/mysql

启动mysql

mysqld --initialize systemctl start mysqld systemctl status mysqld

修改mysql的配置

查找初始密码

cat /var/log/mysqld.log mysql -u root -p

ALTER USER 'root'@'localhost' IDENTIFIED BY 'fengshapxc1';
#设置远程登录
use mysql;
update user set host = '%' where user ='root';
exit;
上次编辑于:
贡献者: 风杀