PXC-mysql集群

一、与MHA集群相比PXC有很明显的优点:
1、数据实时同步
2、不需要配置主从,每一套主机都是master,不需要使用vip
3、支持InnoDB存储引擎
4、在数据同步的时候采用多线程复制
5、支持节点自动加入集群,无需手动同步数据

PXC服务端口:
3306:mysql服务端口
4567:集群通信端口,用于集群间的数据同步
4444:sst完全同步端口,进行数据同步时才开启
4568:ist增量同步端口,数据进行同步时才开启

二、准备工作:

准备服务器:
192.168.4.71,192.168.4.72,192.168.4.73
为这三台数据库配置hosts
vim /etc/hosts
192.168.4.71		pxcnode1
192.168.4.72		pxcnode2
192.168.4.73		pxcnode3

三、部署集群:

1、安装相关依赖以及软件包:(按照顺序,71,72,73都做这个操作)
rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm	#相关依赖
yum  -y  install  percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm	#在线热备份工具
rpm -ivh qpress-1.1-14.11.x86_64.rpm	#递归压缩程序

tar -xvf  Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar	#集群程序包,自带mysql
yum -y  install  Percona-XtraDB-Cluster-*.rpm	#安装集群相关程序


2、配置文件:(71,72,73都需要做)
配置文件在:/etc/percona-xtradb-cluster.conf.d/这个目录下

mysqld.cnf	#s数据库配置文件,相当于my.cnf
mysq_safe,cnf	#mysql进程配置文件,指定了pid文件的位置,socket文件的位置等
wsrep.cnf	#集群主配置文件
# 这三个配置文件中mysqld.cnf、wsrep.cnf需要修改
	
	①:修改mysqld.cnf
	vim mysqld.cnf
	server-id=71                      		#仅修改server-id就可以了,其余默认
	datadir=/var/lib/mysql					#数据库目录
	socket=/var/lib/mysql/mysql.sock    	#socket文件
	log-error=/var/log/mysqld.log       	#日志文件
	pid-file=/var/run/mysqld/mysqld.pid     #pid文件
	log-bin                    				#启用binlog日志
	log_slave_updates            			#启用链式复制
	expire_logs_days=7  

	②:修改wsrep.cnf
	vim mysqld_safe.cnf
	#仅需对以下行进行修改
	wsrep_cluster_address=gcomm://192.168.4.73,192.168.4.72,192.168.4.71	#成员列表,本机的ip地址写在最后,便于首先到其他主机进行数据同步
	wsrep_node_address=192.168.4.71 #本机ip
	wsrep_cluster_name=pxc-cluster #集群名,同一个集群中所有主机必须相同
	wsrep_node_name=pxcnode71 #本机主机名,/etc/hosts配置的主机名
	wsrep_sst_auth="sstuser:123456" #SST数据完全同步授权用户及密码

3、启动集群服务:
# 仅需在集群中的一台主机上启动pxc集群,其余主机只需要启动mysql服务就可以了,数据会自动同步

# 任选一台主机,这里我选192.168.4.71
systemctl  start [email protected]	#自动集群服务,首次会进行初始化,/var/lib/mysql下会产生相关数据文件

grep pass /var/log/mysqld.log	#到日志文件中查看初始密码,root@localhost: waHiOb8.ok.3

mysql -uroot -p’ waHiOb8.ok.3’	#连接数据库

alter user  root@”localhost” identified by “123456”	#修改初始密码

Mysql> garnt reload, lock tables,replication client,process on *.*  to \
sstuser@"localhost” identified by  “123456”;	#创建授权用户,要和wsrep.cnf中相匹配

启动其余两台主机mysql:(4.72,4.73)
systemctl start mysql	#是mysql,不是mysqld

四、测试:

在集群中选任意一台登录mysql:(这里选4.71)
mysql -uroot -p123456
mysql> show status like "%wsrep%"	#查看集群状态
mysql> grant all on  gamedb.*  to admin@"%" identified by "123456";	#添加用户方便client连接
# 用户会添加在mysql的user表中,因此会同步到其他服务器上
# 72,73服务器都可以使用这个用户进行登录,在mysql下的user表中也可以找到admin用户

模拟故障以及恢复:
关闭71的mysql服务,在72或者73中添加数据
再启动71的mysql服务,会自动同步宕机期间的数据

client连接:
mysql -h192.168.4.71 -uadmin -p123456
# 当71宕机之后,就不能通过192.168.4.71连接了,但是4.72,4.73都可以连接
# 如果想要通过一个ip连接,可是使用调度器,nginx,haproxy都可以

主键自增问题:
如果为数据库某表的id字段设置了自动递增
那么id每次增加的大小不是每次加1
id每次增加的大小是集群中节点的个数,集群中有三个节点,就是 id+=3

写总结的第四十四天!!!

你可能感兴趣的:(PXC-mysql集群)