PXC搭建详细步骤,适合小白
PXC搭建步骤
第一步,下载PXC组件
共包含三个安装包,Percona XtraDB Cluster,Percona XtraBackup, Percona Release。
1:登录官网:https://www.percona.com/downloads/ 国外域名, 访问速度较慢,需要耐心等待,有条件的可自行想办法提高访问及下载速度(手动捂脸)
2:下载Percona XtraDB Cluster
如图,选择要安装的MYSQL 版本(以5.7为例),点击进入
如图,这里可以继续选择mysql的详细版本,选择完mysql版本后,选择操作系统的版本,如果不知道操作系统的版本,可选择通用版本:Linux-Generic ,选择完操作系统版本后,下边会展示出对应可选的下载链接,根据自己操作系统的位数,点击下载链接进行下载即可。一般这里会展示多个版本,随便选择一个就行。需要注意的是,这里需要下载整个包(Download Packages Separately),这里我下载到的文件名称为:Percona-XtraDB-Cluster-5.7.25-rel28-31.35.1.Linux.x86_64.ssl101.tar.gz
3,下载Percona XtraBackup 2.4
这里的操作和第二步基本类似,需要注意的是,这里的组件版本与mysql的版本号不同步,在选择版本时需要注意,对于5.7以前的版本,这里选择2.3版本,对于5.7版本,选择2.4,对于5.8(8.0)版本,选择8.0版本即可,目前mysql的主流版本就这三种,如果使用的是其他版本的mysql,则需要自行查询对应的版本号。这里,既可以选择只下载安装包(Download Packages Separately,下载完后是.rpm文件),也可以下载整个软件包(Download All Packages Together,下载后是.tar.gz压缩包),两种方式都可选择。如果只下载安装包,安装时,使用rpm 直接安装即可,下载整个安装包,安装时,解压压缩包即可。这里以只下载安装包为例。这里我下载到的文件名称为:percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm
4,下载Percona Release
如图,在Other Software Downloads下点击Percona Release后跳转到下载页面,然后点击redhat进入下载页面,选择要下载的版本进行下载,这里选择的是LATEST版本,下载文件名称为:
percona-release-latest.noarch.rpm
第二步,将下载好的组件上传至服务器,具体操作方法及命令可自行查询,不再赘述
第三步,配置运行环境(以下以两个节点为例)
1:修改主机名(每个节点都要操作)
编辑hosts文件
vim /etc/hosts
将节点信息加入hosts文件(每个节点添加的内容一致)
xxx.xxx.xxx.xxx1 node1
xxx.xxx.xxx.xxx2 node2
这里的xxx.xxx.xxx.xxx1,xxx.xxx.xxx.xxx2分别两个节点对应的IP地址,
2:修改selinux配置(每个节点都要修改)
编辑selinux配置文件
vim /etc/selinux/config
修改selinux配置
SELINUX=disabled
3:设置防火墙,开通四个端口(每个节点都要操作)
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --add-port=4567/tcp --permanent
firewall-cmd --add-port=4568/tcp --permanent
firewall-cmd --add-port=4444/tcp --permanent
firewall-cmd –reload
需要注意的是,对于版本较低的操作系统(好像是7.0以前的版本,具体忘记了,有兴趣自行百度),使用的是iptables防火墙,使用iptables防火墙时,开通端口的命令自行百度,这里不再赘述。总之开通3306,4567,4568,4444四个端口就行,关于这四个端口的作用,说明如下:
3306:数据库对外服务的端口号
4444:请求SST SST: 指数据一个镜象传输 xtrabackup , rsync ,mysqldump
4567: 组成员之间进行沟通的一个端口号
4568: 传输IST用的。相对于SST来说的一个增量
第四步,安装PXC
1,安装依赖包,使用yum源安装的方式,安装命令如下(每个节点都要操作)
yum install -y git scons
gcc* gcc-c++ openssl* check cmake bison \ boost-devel asio-devel libaio-devel
ncurses-devel readline-devel pam-devel \
socat perl-time-hires
perl-io-socket-ssl.noarch perl-dbd-mysql.x86_64
需要注意的是,需要在每个节点上都进行安装,另外,以上命令未一行命令,命令较长而已
2,安装PXC组件包(每个节点都要操作)
(1)安装Percona Release:
rpm -ivh percona-release-latest.noarch.rpm
(如果下载整个软件包,解压即可压缩即可)
(2)安装Percona XtraBackup:
rpm -ivh percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm
或者:
yum localinstall percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm
(如果下载整个软件包,解压即可压缩即可)
(3)安装Percona XtraDB Cluster :
解压压缩包
tar zxvf Percona-XtraDB-Cluster-5.7.23-rel23-31.31.1.Linux.x86_64.ssl101.tar.gz
-C /usr/local/
切换到安装目录
cd /usr/local/
创建文件夹
mkdir -p mysql
创建软连接
ln -s Percona-XtraDB-Cluster-5.7.23-rel23-31.31.1.Linux.x86_64.ssl101
mysql
3,创建用户,创建存放Mysql服务所文件的文件夹,并且授权,命令示例如下(每个节点都要操作):
查看mysql用户
id mysql
删除Mysql用户
userdel mysql
添加用户,用户名为mysql,并指定用户组为mysql
useradd -g mysql mysql
修改mysql用户的密码
passwd mysql
创建存放mysql文件的目录,其中data目录下存放数据文件,logs下用于存放mysql日志信息,temp用于存放mysql临时文件
mkdir -p /usr/local/mysql/{data,logs,tmp}
在log文件夹下创建binlog文件夹,存放mysql二进制日志文件
mkdir -p /usr/local/mysql/logs/binlog
将/usr/local/mysql/文件夹下的拥有者指定为用户组mysql下的用户mysql
chown -R mysql:mysql /usr/local/mysql/
为/usr/local/mysql/目录下的所有文件及其子目录添加可执行权限
chmod -R +x /usr/local/mysql/
4,配置mysql(每个节点都要操作)
切换为mysql用户
su - mysql
切换到mysql目录下
cd /usr/local/mysql/
创建并编辑my.cnf文件(此文件为mysql的配置文件)
vi my.cnf
向my.cnf添加mysql配置项(具体的配置可根据实际情况自行调整,以下配置仅供示例,但亲测可用)
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
server-id=143
port = 3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
log-error=/usr/local/mysql/data/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid
log-bin=/usr/local/mysql/logs
slow_query_log_file =
/usr/local/mysql/data/slow.log
log_slave_updates
expire_logs_days=7
binlog_format=ROW
innodb_buffer_pool_size = 1524M
lower_case_table_names =1
explicit_defaults_for_timestamp=true
向my.cnf添加pxc配置项(具体的配置可根据实际情况自行调整,以下配置仅供示例,但亲测可用)
#pxc 此行配置为注释,用于区分mysql配置与pxc配置,便于运维
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so
wsrep_cluster_name=pxc-nie
wsrep_cluster_address=gcomm://xxx
.xxx.xxx.xxx1, xxx.xxx.xxx.xxx2
wsrep_node_name=node1
wsrep_node_address=xxx.xxx.xxx.xxx
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=user:password
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
这里需要注意的是,不同节点的配置文件中,以下配置项需要修改
server-id=142 各节点不能一样
wsrep_node_name=node1 修改为所在节点的主机名称(在第三步,1中为个节点指定的主机名)
wsrep_node_address=xxx.xxx.xxx.xxx 修改为当前节点的IP
wsrep_cluster_address=gcomm://xxx.xxx.xxx.xxx1, xxx.xxx.xxx.xxx2
xxx.xxx.xxx.xxx1,xxx.xxx.xxx.xxx2 分别为各节点的IP,
当前节点的ip要放在后面,不然会导致节点不能加入集群。
wsrep_sst_auth=user:password
指定pxc各节点之间用于通信的数据库用户的名称和密码
需要注意的是,当前mysq服务还未搭建成功,这个用户还未创建,当mysql服务启动后创建该用户即可,可参看后边的操作步骤
5,初始化数据(只在第一个节点执行)
usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf
–datadir=/usr/local/mysql/data
–basedir=/usr/local/mysql --initialize
这里需要注意的是,初始化操作只在第一个节点执行即可,当其他节点在启动时,会通过PXC自动同步初始化的内容,因此其他节点不需要初始化操作。另外,此步骤与一般得到mnysql安装一致,会在日志文件中生成mysql服务的root用户的密码,查看日志即可,如下:
切换到data文件夹
cd /usr/local/mysql/data/
打开日志文件,查看密码
less mysqld.log
6,启动第一个节点并创建集群(只在第一个节点执行)
/usr/local/mysql/bin/mysqld_safe
–defaults-file=/usr/local/mysql/my.cnf --wsrep-new-cluster --user=mysql
需要注意,此命令分为两部分,第一部分为:指定配置文件并mysql服务
/usr/local/mysql/bin/mysqld_safe
–defaults-file=/usr/local/mysql/my.cnf
第二部分为:使用mysql用户创建集群
–wsrep-new-cluster --user=mysql
另外还需要注意:
在第一个节点启动后,需要在第一个节点创建pxc通信用户,该用户创建后才能继续启动其他节点的服务
如下:
登录mysql
mysql -uroot -p
(使用5中在日志中找到的密码进行登录,登录后需要修改密码,此处与常规mysql操作一致,不再赘述)
创建pxc通信用户:
grant all privileges on . to ‘user’@‘localhost’ identified by ‘password’;
需要注意,此处创建的mysql用户的用户名和密码需要和my.cnf中配置的pxc通信用户的信息一致,且该用户只在第一个节点创建即可,其余节点不需要创建。
7,启动其余节点
/usr/local/mysql/bin/mysqld_safe
–defaults-file=/usr/local/mysql/my.cnf --user=mysql
其余节点在启动时,会依据my.cnf中pxc的相关配置,自动将加入到第一个节点启动时创建的集群中,并且会将第一个节点在初始化时,产生的内容自动同步过来,包括在第一个节点上从创建的用户信息,这些操作都依赖于在第一个节点中创建的pxc通信用户,由此可见改用户的配置及其重要。
8,查看集群状态:
登录数据库并执行
show status like ‘wsrep_cluster_%’;
返回结果中,wsrep_cluster_size表示,目前,加入集群中节点的个数。
至此PXC搭建完成,可在数据库中创建表,添加数据,测试查看表,数据等能否自动同步
整理不易,转发请注明出处,文中如有总结不当之处,请多理解