Percona-XtraDB-Cluster的多实例编译安装

一、环境
CentOS release 6.9

Percona-XtraDB-Cluster-5.7.19-29.22.tar.gz

boost_1_59_0.tar.gz

percona-xtrabackup-24-2.4.7-1.el6.x86_64.rpm
节点 mysql服务端口 gmcast.listen端口
node01:192.168.1.210:6600 6600 6630
node02:192.168.1.210:6602 6602 6632
node03:gardb 5567

二、下载依赖包

yum install -y git scons gcc gcc-c++ openssl check cmake bison 
boost-devel asio-devel libaio-devel ncurses-devel readline-devel pam-devel 

yum -y install  libtool ncurses-devel libgcrypt-devel  libev-devel 
git scons  gcc  gcc-c++  openssl  check  cmake  bison boost-devel  
asio-devel libaio-devel  ncurses-devel  readline-devel  pam-devel socat 
libaio  automake autoconf vim redhat-lsb check-devel

yum -y install libnl-devel openssl-devel libnfnetlink-devel ipvsadm 
popt-devel libnfnetlink kernel-devel popt-static iptraf

yum install numactl libev socat perl-DBD-mysql perl-Time-HiRes

 配置epel库
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

三、编译安装:

3.1 编译安装percona-xtrabackup

cd /usr/local/percona-xtrabackup-2.4.5/
cmake ./ -DBUILD_CONFIG=xtrabackup_release -DWITH_MAN_PAGES=OFF -DDOWNLOAD_BOOST=1 -DWITH_BOOST="/usr/local/boost" 
make -j 4 && make install

3.2 编译安装Percona-XtraDB-Cluster-5.7.19-29.22

编译安装前最好要卸载掉本地的mysql数据库

rpm-qa | grep mysql (注意大小写,如果mysql不行就换MySQL)
 yum -y remove mysql的包名

卸载后/var/lib/mysql中的数据及/etc/my.cnf不会删除,如果确定没用后就手工删除

rm -f /etc/my.cnf
 rm -rf /var/lib/mysql

创建mysql用户名及文件夹

mkdir /data/6600 -p
mkdir /data/6602 -p
mkdir /data/{6600,6602}/{binlog,slow} -p
useradd mysql
chown -R mysql:mysql /data/

编译garbd,libgalera_smm.so

cd /usr/local/mysql
 cd "percona-xtradb-cluster-galera"

获取revno值

cat GALERA-REVISION
#revno="GALERA-REVISION"
scons -j4 psi=1 --config=force  revno="8678538"  boost_pool=0 libgalera_smm.so
scons -j4 --config=force revno="8678538" garb/garbd

创建pxc安装目录

mkdir -p /usr/local/mysql/{bin,lib}
chown -R mysql:mysql /usr/local/mysql

拷贝编译结果文件到pxc安装目录

cp garb/garbd /usr/local/mysql/bin
 cp libgalera_smm.so /usr/local/mysql/lib

检查复制的文件是否正常

ls -l /usr/local/mysql/bin/garbd
 ls -l /usr/local/mysql/lib/libgalera_smm.so

-DMYSQL_SERVER_SUFFIX 值获取

cd /usr/local/Percona-XtraDB-Cluster-5.7.19-29.22
WSREP_VERSION="$(grep WSREP_INTERFACE_VERSION wsrep/wsrep_api.h | cut -d ‘"‘ -f2).$(grep ‘SET(WSREP_PATCH_VERSION‘  "cmake/wsrep.cmake" | cut -d ‘"‘ -f2)"
echo $WSREP_VERSION

-DCOMPILATION_COMMENT 值获取

cd /usr/local/Percona-XtraDB-Cluster-5.7.19-29.22

source VERSION

MYSQL_VERSION="$MYSQL_VERSION_MAJOR.$MYSQL_VERSION_MINOR.$MYSQL_VERSION_PATCH"
echo $MYSQL_VERSION

REVISION="$(cd "$SOURCEDIR"; grep ‘^short: ‘ Docs/INFO_SRC |sed -e ‘s/short: //‘)"

echo "Percona XtraDB Cluster binary (GPL) $MYSQL_VERSION-$WSREP_VERSION Revision $REVISION"

编译Percona-XtraDB-Cluster-5.7.16-27.19

cd /usr/local/mysql
cmake ./
-DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_EMBEDDED_SERVER=OFF -DFEATURE_SET=community -DENABLE_DTRACE=OFF -DWITH_SSL=system -DWITH_ZLIB=system -DCMAKE_INSTALL_PREFIX="/usr/local/mysql" -DMYSQL_DATADIR="/usr/local/mysql/data" -DMYSQL_SERVER_SUFFIX="29.22" -DWITH_INNODB_DISALLOW_WRITES=ON -DWITH_WSREP=ON -DWITH_UNIT_TESTS=0 -DWITH_READLINE=system -DWITHOUT_TOKUDB=ON -DWITHOUT_ROCKSDB=ON -DCOMPILATION_COMMENT="Percona XtraDB Cluster binary (GPL) 5.7.19-29.22 Revision c10027a" -DWITH_PAM=ON -DWITH_INNODB_MEMCACHED=ON -DDOWNLOAD_BOOST=1 -DWITH_BOOST="/usr/local/boost" -DWITH_SCALABILITY_METRICS=ON

make && make install

3.3一键安装脚本

#!/bin/sh
Home_Dir=/home/admin/tools
Intall_Dir=/usr/local/mysql
DATA_DIR=/usr/local/mysql/data

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

yum -y install  libtool ncurses-devel libgcrypt-devel  libev-devel git scons  gcc  gcc-c++  openssl  check  cmake  bison boost-devel  asio-devel libaio-devel  ncurses-devel  readline-devel  pam-devel socat libaio  automake autoconf  redhat-lsb check-devel curl  curl-devel xinetd

yum -y install libnl-devel openssl-devel libnfnetlink-devel ipvsadm popt-devel libnfnetlink kernel-devel popt-static iptraf

yum -y install numactl libev  perl-DBD-mysql perl-Time-HiRes

mkdir -p /usr/local/boost
tar xf ${Home_Dir}/boost_1_59_0.tar.gz -C /usr/local/boost
####安装xtrabackup我用的RPM包
rpm -ivh ${Home_Dir}/percona-xtrabackup-24-2.4.7-1.el6.x86_64.rpm

tar xf ${Home_Dir}/Percona-XtraDB-Cluster-5.7.19-29.22.tar.gz

mkdir -p ${Intall_Dir}/{binlog,slow}
mkdir -p ${Intall_Dir}/{bin,lib}

useradd mysql
chown -R mysql:mysql ${Intall_Dir}

cd ${Home_Dir}/Percona-XtraDB-Cluster-5.7.19-29.22
cd "percona-xtradb-cluster-galera"

Revno=`cat GALERA-REVISION`
scons -j4 psi=1 --config=force  revno="$Revno"  boost_pool=0 libgalera_smm.so
scons -j4 --config=force revno="$Revno" garb/garbd

cp garb/garbd ${Intall_Dir}/bin
cp libgalera_smm.so ${Intall_Dir}/lib

cd ${Home_Dir}/Percona-XtraDB-Cluster-5.7.19-29.22
WSREP_VERSION="$(grep WSREP_INTERFACE_VERSION wsrep/wsrep_api.h | cut -d ‘"‘ -f2).$(grep ‘SET(WSREP_PATCH_VERSION‘  "cmake/wsrep.cmake" | cut -d ‘"‘ -f2)"

source ./VERSION

MYSQL_VERSION="$MYSQL_VERSION_MAJOR.$MYSQL_VERSION_MINOR.$MYSQL_VERSION_PATCH"

REVISION="$(cd "$SOURCEDIR"; grep ‘^short: ‘ Docs/INFO_SRC |sed -e ‘s/short: //‘)"

DCT=`echo "Percona XtraDB Cluster binary (GPL) $MYSQL_VERSION-$WSREP_VERSION Revision $REVISION"`

cd ${Home_Dir}/Percona-XtraDB-Cluster-5.7.19-29.22
cmake ./ -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_EMBEDDED_SERVER=OFF -DFEATURE_SET=community -DENABLE_DTRACE=OFF -DWITH_SSL=system -DWITH_ZLIB=system -DCMAKE_INSTALL_PREFIX="$Intall_Dir" -DMYSQL_DATADIR="$DATA_DIR" -DMYSQL_SERVER_SUFFIX="$WSREP_VERSION" -DWITH_INNODB_DISALLOW_WRITES=ON -DWITH_WSREP=ON -DWITH_UNIT_TESTS=0 -DWITH_READLINE=system -DWITHOUT_TOKUDB=ON -DWITHOUT_ROCKSDB=ON -DCOMPILATION_COMMENT="$DCT" -DWITH_PAM=ON -DWITH_INNODB_MEMCACHED=ON -DDOWNLOAD_BOOST=1 -DWITH_BOOST="/usr/local/boost" -DWITH_SCALABILITY_METRICS=ON

make && make install

有关参数的详解可以看我上篇博客

四、编译配置文件

4.1 编译配置文件
第一个实例:6600

vim /data/6600/my.cnf
[client]
socket=/data/6600/mysql.sock
port            = 6600
default-character-set = utf8

[mysqld]
socket=/data/6600/mysql.sock
basedir = /data
datadir = /data/6600/data
port = 6600
server_id = 16600
pid-file = /data/6600/mysql_6600.pid
key_buffer_size =128M
max_allowed_packet = 16M
table_open_cache = 512
max_connections = 200
sort_buffer_size = 20M
read_buffer_size = 20M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
character-set-server=utf8

innodb_buffer_pool_size = 256M
innodb_log_file_size = 48M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table=1
lower_case_table_names=1
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5120M

explicit_defaults_for_timestamp=TRUE
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,only_full_group_by
skip-name-resolve

log-bin = /data/6600/binlog/mysql-bin
expire_logs_days = 7
#binlog-do-db=plateform_stable,finance_stable,location_log_stable
#binlog-ignore-db=mysql,information_schema,test

binlog_format=ROW
log_slave_updates
symbolic-links=0
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
log-error=/data/6600/mysqld_6600-error.log

wsrep_cluster_name = pxc
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so
wsrep_cluster_address=‘gcomm://192.168.1.210:6630,192.168.1.210:6632‘
wsrep_sst_receive_address=192.168.1.210:6620
wsrep_node_incoming_address=192.168.1.210:6600
wsrep_provider_options = "gmcast.listen_addr=tcp://192.168.1.210:6030;ist.recv_addr=192.168.1.210:6631;"
wsrep_slave_threads= 4
wsrep_log_conflicts
wsrep_node_address=192.168.1.210:6600
#wsrep_node_name=pxc-cluster-node-
wsrep_sst_method=xtrabackup-v2
#wsrep_sst_method=mysqldump
wsrep_sst_auth=sstuser:sstpasswd
#pxc_strict_mode=ENFORCING
wsrep_log_conflicts
wsrep_retry_autocommit=8
secure_file_priv=""
innodb_page_cleaners=8

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
port            = 6600
default-character-set = utf8
socket=/data/6600/mysql.sock

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

第二个实例:6602

[client]
socket=/data/6602/mysql.sock
port            = 6602
default-character-set = utf8

[mysqld]
socket=/data/6602/mysql.sock
basedir = /data
datadir = /data/6602/data
port = 6602
server_id = 6602
pid-file = /data/6602/mysql_6602.pid
key_buffer_size =128M
max_allowed_packet = 16M
table_open_cache = 512
max_connections = 200
sort_buffer_size = 20M
read_buffer_size = 20M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
character-set-server=utf8

innodb_buffer_pool_size = 256M
innodb_log_file_size = 48M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table=1
lower_case_table_names=1
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5120M

explicit_defaults_for_timestamp=TRUE
sql_mode=NO_ENGINE_SUBSTITUTION,only_full_group_by
skip-name-resolve

log-bin = /data/6602/binlog/mysql-bin
expire_logs_days = 7
#binlog-do-db=plateform_stable,test

binlog_format=ROW
log_slave_updates
symbolic-links=0
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
log-error=/data/6602/mysqld_6602-error.log

wsrep_cluster_name = pxc
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so
wsrep_cluster_address=‘gcomm://192.168.1.210:6630,192.168.1.210:6632‘
wsrep_sst_receive_address=192.168.1.210:6622
wsrep_node_incoming_address=192.168.1.210:6602
wsrep_provider_options = "gmcast.listen_addr=tcp://192.168.1.210:6632;ist.recv_addr=192.168.1.210:6633;"
wsrep_slave_threads= 4
wsrep_log_conflicts
wsrep_node_address=192.168.1.210:6602
#wsrep_node_name=pxc-cluster-node-
wsrep_sst_method=xtrabackup-v2
#wsrep_sst_method=mysqldump
wsrep_sst_auth=sstuser:sstpasswd
#pxc_strict_mode=ENFORCING
wsrep_log_conflicts
wsrep_retry_autocommit=8
secure_file_priv=""
innodb_page_cleaners=8

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
port            = 6602
default-character-set = utf8
socket=/data/6602/mysql.sock

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

五、初始化启动pxc主节点

5.1 初始化pxc

初始化6600

chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/6600{,6602}
/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/6600/data --user=mysql  --initialize

初始化6602

/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/6602/data --user=mysql  --initialize

初始化错误可以清空msyql/data/目录下的文件
注意记录初始化密码

5.2 启动mysql
启动6600实例

/usr/local/mysql/bin/mysqld --defaults-file=/data/6602/my.cnf  --wsrep-new-cluster &

注意主节点启动要加上--wsrep-new-cluster,其他节点不用。

启动6600实例

/usr/local/mysql/bin/mysqld --defaults-file=/data/6602/my.cnf &

5.3 更改密码

echo "export .:/usr/local/mysql/bin:$PATH" >>/etc/profile
source /etc/profile

用刚刚初始化的密码进去MySQL实例6600

mysql -uroot -p${mypasswd} -S /data/6600/mysql.sock

第一次进去会提示改密码

ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘123456‘;

用刚刚初始化的密码进去MySQL实例6602

mysql -uroot -p${mypasswd} -S /data/6602/mysql.sock

第一次进去会提示改密码

ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘123456‘;

5.4 为wsrep_sst_auth传输创建用户
随便选择一个节点创建

mysql> CREATE USER ‘sstuser‘@‘localhost‘ IDENTIFIED BY ‘sstpassword‘;
mysql> GRANT RELOAD,LOCK TABLES,PROCESS,REPLICATION CLIENT ON *.* TO ‘sstuser‘@‘localhost‘;
mysql> FLUSH PRIVILEGES;

六、使用garbd

pxc集群最少是要3台,仲裁者garbd,用来解决

cd /usr/local/mysql/bin/
    ./garbd --group=pxc-cluster --address=gcomm://192.168.1.210:6630,192.168.1.210:6632 --option=gmcast.listen_addr=tcp://192.168.1.210:5567 -d -l /tmp/garbd.log
    #全部起完了之后就可以看到节点数和集群

七、检查

#查看MySQL 节点数
 mysql> show global status like ‘wsrep_cluster_size‘;
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
1 row in set (0.00 sec)

是三个表示pxc集群搭建成功,可以在一个节点上创建一张表,其他节点可以查询的到说明集群运行正常。

查看进程数

ps -ef|grep mysql
mysql    14316     1  0 Jun28 ?        00:06:18 /usr/local/mysql/bin/mysqld --defaultsfile=/data/6600/my.cnf --wsrep-new-cluster
mysql    15611     1  0 Jun28 ?        00:03:37 /usr/local/mysql/bin/garbd --group=pxc --address=gcomm://192.168.1.210:6630,192.168.1.210:6632 --option=gmcast.listen_addr=tcp://192.168.1.210:5567 -d -l /tmp/garbd.log
mysql    23001     1  0 Jun29 ?        00:04:55 /usr/local/mysql/bin/mysqld --defaults-file=/data/6602/my.cnf

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor 1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep 'Time zone'查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="static" ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// <summary> /// 取小写文件名后缀 /// </summary> /// <param name="name">文件名</param> /// <returns>返回小写后缀,不带“.”</ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start & nohup ./kibana &
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程, ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属