PXC双机交差集群配置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PerconaXtradb Cluster
双机交叉集群配置
版本号日期作者备注
0.1 2016-6-22 Fashchina QQ:41114254
一、产品说明
名称:PerconaXtradb Cluster
简称:PXC
PerconaXtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server 。其包括了Write Set REPlication补丁,使用Galera 2.0库,这是一个针对事务性应用程序的同步多主机复制插件。
PerconaXtraDB Cluster特点:
(1)同步复制,事务在所有集群节点要么同时提交,要么不提交。
(2)多主复制,可以在任意一个节点写入。
(3)从服务器上的并行应用事件,真正的“并行复制”。
(4)自动配置节点。
(5)数据一致性,没有不同步的从服务器。
二、搭建目标
在每台物理机上各运行2个mysql实例,通过PXC进行交叉集群,即物理机(假设机器名为PXC1)上A实例和物理机(假设机器名为PXC2)A1实例组成一个集群,上述物理机B实例和B1实例同上。具体如下图:
三、搭建前提
网上资料大部分针对物理机进行PXC集群配置,比如在物理机A\B\C上配置PXC,把3台物理机组成一个集群实例。从很多程度上比较浪费服务器资源。而PXC官方建议一个集群最少3个实例组成。如果再对数据进行分片,对服务器的资源要求就更多。
安装PXC的环境,本文档不在进行描述,因为相关比较简单,都是rpm 文件的安装。
四、搭建mysql环境
创建mysql数据文件存储目录
方便创建/data0/mysql/data和/data1/mysql/data 2个目录存放2个mysql实例的数据。相关指令如下:
mkdir -p /data0/mysql/data
chmod -R 777 /data0/mysql/data
mkdir -p /data1/mysql/data
chmod -R 777 /data1/mysql/data
初始化mysql数据文件
/usr/bin/mysql_install_db --user=mysql --datadir=/data0/mysql/data
/usr/bin/mysql_install_db --user=mysql --datadir=/data1/mysql/data
如果在/usr/bin下没有mysql_install_db脚本,请通过find命令找下,一般在/usr目录下,具体和您安装pxc的方式有关
配置mysql的f文件
安装完PXC后,在/etc目录下有f(如果没有,网上去找一个也可以),拷贝2个,分别命名f和f
相关配置如下:
f
这个配置文件针对mysql默认的端口,如果想调整,修改cnf目录中的相关端口就可以。
1、重点注意下面标红的
上述集群之间的PXC通讯端口采用默认端口,比如wsrep_cluster_address中的4567,这个默认端口,您可以不写。
另外一台物理机的配置文件类似,仅仅部分不一样,请关注红色标注。
f
这个mysql实例运行在6000端口上,这也是关键,必须确保同一台机器上2个PXC实例的通讯端口出现交叉从而导致集群混乱。
另外一个实例的配置如下:
关键部分用红色标注
启动集群
集群的第一个节点必须加上--wsrep-new-cluster参数。
第二个节点就是普通的启动命令即可
/usr/bin/mysqld_safe --defaults-file=/etc/f --user=mysql --basedir=/usr --datadir=/data0/mysql/data --wsrep-new-cluster &
/usr/bin/mysqld_safe --defaults-file=/etc/f --user=mysql --basedir=/usr --datadir=/data0/mysql/data&
另外一个6000端口的启动命令如下:
/usr/bin/mysqld_safe --defaults-file=/etc/f --user=mysql --basedir=/usr --datadir=/data0/mysql/data --wsrep-new-cluster &
/usr/bin/mysqld_safe --defaults-file=/etc/f --user=mysql --basedir=/usr --datadir=/data0/mysql/data&
登录mysql实例
mysql -h 127.0.0.1 -u root -P6000 –p
然后输入密码即可,-P6000代表登录6000端口的mysql,如果默认3306,则这个参数可以不加
退出mysql实例
mysqladmin -S /data0/mysql/mysql.sock shutdown -u root -p
mysqladmin -S /data1/mysql/mysql.sock shutdown -u root –p
输入密码后,mysql会安全退出
上面红色的路径,和f中的socket变量路径保存一致
测试
登录集群中的某一台机器,通过创建库,表以及插入数据,然后去集群中的另外一个实例查看是否存在即可。
后记
1、在启动集群前,请确保在对应的mysql实例中添加了对应的用户权限,最简单的就是通过一个root用户(仅仅为了测试)即可。先删除mysql库下的user表信息,然后通过下面命令创建用户:
grant all privileges on *.* to 'root'@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
上面的是2条指令,第一条是创建一个用户名是root,密码是123456的用户
第二个指令是刷新权限,让其马上生效。
2、在出现问题的时候,多看看日志,一般日志的默认存在为数据文件目录下。可以参考下图: