PXC 安装 (yum操作)
1:环境准备实验环境:节点1:192.168.145.128节点2:192.168.145.128节点3:192.168.145.128[root@master ~]# more /etc/redhat-releaseCentOS Linux release 7.9.2009 (Core)关闭SELINUXSELINUXTYPE=targeted 修改为:SELINUXTYPE=disabled临
1:环境准备
实验环境:
节点1:192.168.145.128
节点2:192.168.145.129
节点3:192.168.145.130
[root@master ~]# more /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
关闭SELINUX
SELINUXTYPE=targeted 修改为:SELINUXTYPE=disabled
临时修改为 setenforce 0
配置时间同步服务
节点1:Yum安装ntp软件;节点2,3安装ntpdate客户端
节点1:yum install ntp
节点2,节点3:yum install ntpdate
节点1启动ntpd服务,并设置成开机启动
systemctl start ntpd
systemctl enable ntpd
节点1修改ntp.conf配置文件,指定一个外部同步服务器,这里就指定本地
vim /etc/ntp.conf
加上:server 127.127.1.0 prefer
节点2,3
创建crontab定时和节点一同步
[root@slave1 ~]# crontab -l
*/10 * * * * ntpdate ntp3.aliyun.com
[root@slave2 ~]# crontab -l
*/10 * * * * ntpdate ntp3.aliyun.com
修改 hosts文件
vim /etc/hosts
192.168.145.128 master
192.168.145.129 slave1
192.168.145.130 slave2
关闭防火墙
service iptables status
service iptables stop
chkconfig iptables off
放开对应端口:
[root@master ~]# firewall-cmd --add-port=3306/tcp --permanent
[root@master ~]# firewall-cmd --add-port=4567/tcp --permanent
[root@master ~]# firewall-cmd --add-port=4568/tcp --permanent
[root@master ~]# firewall-cmd --add-port=4444/tcp --permanent
[root@master ~]# firewall-cmd --reload
[root@master ~]# firewall-cmd --add-port=3306/tcp --permanent
success
[root@master ~]# firewall-cmd --add-port=4567/tcp --permanent
success
[root@master ~]# firewall-cmd --add-port=4568/tcp --permanent
success
[root@master ~]# firewall-cmd --add-port=4444/tcp --permanent
success
[root@master ~]# firewall-cmd --reload
success
安装配置YUM (三台机器都操作)
安装 yum install wget
====================================================================
Package 架构 版本 源 大小
====================================================================
正在安装:
wget x86_64 1.14-18.el7_6.1 base 547 k
事务概要
====================================================================
安装 1 软件包
总下载量:547 k
安装大小:2.0 M
Is this ok [y/d/N]: y
然后下载percona 源文件
yum clean all
yum makecache
yum repolist
[root@master ~]# wget https://www.percona.com/downloads/percona-release//redhat/1.0-27/percona-release-1.0-27.noarch.rpm
[root@master ~]# rpm -ivh percona-release-1.0-27.noarch.rpm
准备中... ################################# [100%]
修改调度算法(很重要)
临时修改:echo "deadline" > /sys/block/sda/queue/scheduler
永久修改: grubby --update-kernel=ALL --args="elevator=deadline"
修改limit 参数
cat /etc/security/limits.conf
vim /etc/security/limits.conf
# 添加如下的行
* soft nproc 11000
* hard nproc 11000
* soft nofile 655350
* hard nofile 655350
重启三台机器:
reboot
2 开始安装
yum install Percona-XtraDB-Cluster-57
一行命令即可, 是需要的 socat,percona-xtrabackup 等依赖包都自动安装
安装过程 很简单
yum install Percona-XtraDB-Cluster-57
是否继续?[y/N]:y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
正在安装 : rsync-3.1.2-10.el7.x86_64 1/21
正在安装 : qpress-11-1.el7.x86_64 2/21
正在安装 : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64 3/21
正在安装 : socat-1.7.3.2-2.el7.x86_64 4/21
正在安装 : perl-Digest-1.17-245.el7.noarch 5/21
正在安装 : perl-Digest-MD5-2.52-3.el7.x86_64 6/21
正在安装 : Percona-XtraDB-Cluster-shared-compat-57-5.7.36-31.55.1.el7.x86_64 7/21
正在安装 : libev-4.15-7.el7.x86_64 8/21
正在安装 : lsof-4.87-6.el7.x86_64 9/21
正在安装 : Percona-XtraDB-Cluster-shared-57-5.7.36-31.55.1.el7.x86_64 10/21
正在安装 : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64 11/21
正在安装 : perl-IO-Compress-2.061-2.el7.noarch 12/21
正在安装 : perl-Net-Daemon-0.48-5.el7.noarch 13/21
正在安装 : perl-PlRPC-0.2020-14.el7.noarch 14/21
正在安装 : perl-DBI-1.627-4.el7.x86_64 15/21
正在安装 : perl-DBD-MySQL-4.023-6.el7.x86_64 16/21
正在安装 : Percona-XtraDB-Cluster-client-57-5.7.36-31.55.1.el7.x86_64 17/21
正在安装 : percona-xtrabackup-24-2.4.24-1.el7.x86_64 18/21
正在安装 : Percona-XtraDB-Cluster-server-57-5.7.36-31.55.1.el7.x86_64
启动数据库 找到密码
service mysql start
grep 'temporary password' /var/log/mysqld.log
[root@master ~]# grep 'temporary password' /var/log/mysqld.log
2022-04-02T14:16:13.965869Z 1 [Note] A temporary password is generated for root@localhost: 9r;Yj1p%VNk2
Use this password to log in as root:
mysql -u root -p
修改密码 创建用户
Change the password for the superuser account and log out. For example
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'sstuser'@'localhost' IDENTIFIED BY '123456';
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
FLUSH PRIVILEGES;
关闭数据库
Stop the mysql service:
service mysql stop
[root@master ~]# service mysql stop
Redirecting to /bin/systemctl stop mysql.service
进到数据库 data 目录 查看下情况
[root@master ~]# cd /var/lib/mysql
[root@master mysql]# ll
总用量 241752
-rw-r-----. 1 mysql mysql 56 4月 2 22:16 auto.cnf
-rw-------. 1 mysql mysql 1676 4月 2 22:16 ca-key.pem
-rw-r--r--. 1 mysql mysql 1120 4月 2 22:16 ca.pem
-rw-r--r--. 1 mysql mysql 1120 4月 2 22:16 client-cert.pem
-rw-------. 1 mysql mysql 1676 4月 2 22:16 client-key.pem
-rw-r-----. 1 mysql mysql 134219048 4月 2 22:19 galera.cache
-rw-r-----. 1 mysql mysql 113 4月 2 22:20 grastate.dat
-rw-r-----. 1 mysql mysql 365 4月 2 22:20 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 4月 2 22:20 ibdata1
-rw-r-----. 1 mysql mysql 50331648 4月 2 22:20 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 4月 2 22:16 ib_logfile1
-rw-r-----. 1 mysql mysql 177 4月 2 22:16 master-bin.000001
-rw-r-----. 1 mysql mysql 1067 4月 2 22:20 master-bin.000002
-rw-r-----. 1 mysql mysql 40 4月 2 22:16 master-bin.index
drwxr-x---. 2 mysql mysql 4096 4月 2 22:16 mysql
drwxr-x---. 2 mysql mysql 8192 4月 2 22:16 performance_schema
-rw-------. 1 mysql mysql 1680 4月 2 22:16 private_key.pem
-rw-r--r--. 1 mysql mysql 452 4月 2 22:16 public_key.pem
-rw-r--r--. 1 mysql mysql 1120 4月 2 22:16 server-cert.pem
-rw-------. 1 mysql mysql 1676 4月 2 22:16 server-key.pem
drwxr-x---. 2 mysql mysql 8192 4月 2 22:16 sys
截至到上面 我们可以理解为 MySQL 数据库已经安装完毕, 但是 PXC 的集群 还没有搭建
-------------------------------------修改MySQL的配置文件-----------------------------------------------------------------------------
思考问题: 安装完毕后,参数都是系统默认的,比如修改 undo redo 涉及的参数 需要如何操作
先看下 /etc/my.cnf
[root@master ~]# cat /etc/my.cnf
#
# The Percona XtraDB Cluster 5.7 configuration file.
#
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
# Please make any edits and changes to the appropriate sectional files
# included below.
# 只有单纯的 下面两行有信息 其他信息都不在my.cnf 里面
!includedir /etc/my.cnf.d/
!includedir /etc/percona-xtradb-cluster.conf.d/
进到 /etc/my.cnf.d/ 查看 里面是空的
进到 /etc/percona-xtradb-cluster.conf.d/
[root@master my.cnf.d]# cd /etc/percona-xtradb-cluster.conf.d/
[root@master percona-xtradb-cluster.conf.d]# ll
总用量 12
-rw-r--r--. 1 root root 452 4月 2 22:49 mysqld.cnf
-rw-r--r--. 1 root root 440 2月 8 04:43 mysqld_safe.cnf
-rw-r--r--. 1 root root 1066 2月 8 04:43 wsrep.cnf
打开这三个文件 查看下
cat mysqld.cnf 是mysql 的默认配置文件, 如果我们修改binlog 大小 和变动data 目录情况 需要如何操作!(这个时候 我们已经stop 的服务)
[root@master percona-xtradb-cluster.conf.d]# cat mysqld.cnf
# Template my.cnf for PXC
# Edit to your requirements.
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
server-id=1
datadir=/var/lib/mysql/data 增加一个data 目录, 把 对应的 /var/lib/mysql/全部mv 到/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
max_binlog_size=512M 增加binlog 的大小为 512M 或者按照实际需要操作
innodb_data_file_path=ibdata1:1024M:autoextend 修改 innodb tablespace 大小 为 1G
启动下 mysql 看看
[root@master data]# service mysql start
Redirecting to /bin/systemctl start mysql.service
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
启动失败 报错了吧 启动失败 报错了吧 启动失败 报错了吧 启动失败 报错了吧 启动失败 报错了吧
这是由于mysql yum 安装的时候初始化 系统最低的配置,修改了 innodb tablespace 造成 数据页 大小 和 现有的 文件 也大小不匹配
查看下错误log tail -f /var/log/mysqld.log
2022-04-03T03:02:15.353161Z 0 [ERROR] InnoDB: The Auto-extending innodb_system data file './ibdata1' is of a different size 65536 pages (rounded down to MB) than specified in the .cnf file: initial 131072 pages, max 0 (relevant if non-zero) pages!
2022-04-03T03:02:15.353220Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2022-04-03T03:02:16.461662Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2022-04-03T03:02:16.461762Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2022-04-03T03:02:16.461774Z 0 [ERROR] Failed to initialize builtin plugins.
2022-04-03T03:02:16.461784Z 0 [ERROR] Aborting
解决方法:解决方法:解决方法:解决方法:解决方法:解决方法:解决方法:因为是新搭建的数据库 还没有数据,操作下面两个动作 即可
[root@master data]# rm -f ibdata1
[root@master data]# rm -f ib_logfile*
继续启动:
[root@master data]# service mysql start
Redirecting to /bin/systemctl start mysql.service
启动成功:
-rw-r-----. 1 mysql mysql 2147483648 4月 3 11:08 ibdata1
-rw-r-----. 1 mysql mysql 50331648 4月 3 11:08 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 4月 3 11:08 ib_logfile1
ib_logfile 50M 文件也需要修改 情况
添加 innodb_log_file_size 参数
[root@master percona-xtradb-cluster.conf.d]# cat mysqld.cnf
# Template my.cnf for PXC
# Edit to your requirements.
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
server-id=1
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
max_binlog_size=1G
innodb_data_file_path=ibdata1:2048M:autoextend
log_slave_updates
expire_logs_days=7
innodb_log_file_size=1024M
修改后启动
[root@master percona-xtradb-cluster.conf.d]# service mysql stop
Redirecting to /bin/systemctl stop mysql.service
[root@master percona-xtradb-cluster.conf.d]# service mysql start
Redirecting to /bin/systemctl start mysql.service
启动成功
mysqld.cnf 文件 其实就是 单纯的mysql 的 my.cnf 文件
截至到上面 就是 yum 安装 修改 pxc 的 mysql 配置 截至到上面 就是 yum 安装 修改 pxc 的 mysql 配置
------------------------------------修改MySQL的配置文件------------------------------------------------------------------------------
开始配置集群文件
[root@master my.cnf.d]# cd /etc/percona-xtradb-cluster.conf.d/
[root@master percona-xtradb-cluster.conf.d]# ll
总用量 12
-rw-r--r--. 1 root root 452 4月 2 22:49 mysqld.cnf
-rw-r--r--. 1 root root 440 2月 8 04:43 mysqld_safe.cnf
-rw-r--r--. 1 root root 1066 2月 8 04:43 wsrep.cnf
打开 wsrep.cnf
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so #Galera库文件路径
wsrep_cluster_name=pxc-cluster #集群的逻辑名称,各节点应该统一
wsrep_cluster_address=gcomm://192.168.145.128,192.168.145.129,192.168.145.130 #列出集群内所有节点的IP
wsrep_node_name=pxc1 #当前节点的逻辑名称
wsrep_node_address=192.168.145.128 #当前节点的IP
wsrep_sst_method=xtrabackup-v2 #全量同步(SST)方式
wsrep_sst_auth=sstuser:123456 #用于SST的账户信息(需要自行创建) REDHAT6.8 是:#wsrep_sst_auth="sstuser:sstuser"
pxc_strict_mode=ENFORCING #PXC严格模式,建议开启
binlog_format=ROW #binlog格式,PXC只支持格式为ROW的binlog
default_storage_engine=InnoDB #PXC对InnoDB存储引擎有最好的支持
innodb_autoinc_lock_mode=2 #在向有auto_increment 列的表插入数据时,PXC只支持interleaved(2)交错锁1
wsrep_slave_threads= 8 #建议配置成CPU个数或者1.5倍CPU个数
wsrep_provider_options="gcache.size=1G" # gcache预留2-3小时,保证宕机能接着复制
对于第二个和第三个节点,除了 wsrep_node_name 和 wsrep_node_address 变量之外,使用相同的配置:
对于第二个节点:
wsrep_node_name=pxc2
wsrep_node_address = 192.168.145.129
对于第三个节点:
wsrep_node_name = pxc3
wsrep_node_address = 192.168.145.130
配置完所有节点后,按照引导第一个节点中描述的步骤引导第一个节点,从而初始化 Percona XtraDB Cluster
停掉之前的所有mysql服务,以集群的方式启动
service mysql@bootstrap.service start
[root@master percona-xtradb-cluster.conf.d]# service mysql stop
Redirecting to /bin/systemctl stop mysql.service
[root@master percona-xtradb-cluster.conf.d]# service mysql@bootstrap.service start
Redirecting to /bin/systemctl start mysql@bootstrap.service
mysql> show status like 'wsrep%';
+----------------------------------+-----------------------------------------------+
| Variable_name | Value |
+----------------------------------+-----------------------------------------------+
| wsrep_local_state_uuid | 7957b704-b28f-11ec-9ade-534a317ae013 |
| wsrep_evs_repl_latency | 2.017e-06/1.32302e-05/5.0935e-05/1.8892e-05/5 |
| wsrep_evs_state | OPERATIONAL |
| wsrep_gcomm_uuid | 49805560-b2fd-11ec-a6e5-b77c3f17ea99 |
| wsrep_gmcast_segment | 0 |
| wsrep_cluster_conf_id | 1 |
| wsrep_cluster_size | 1 |
| wsrep_cluster_state_uuid | 7957b704-b28f-11ec-9ade-534a317ae013 |
| wsrep_cluster_status | Primary | 谁先启动 谁就是主
| wsrep_connected | ON |
| wsrep_local_bf_aborts | 0 |
| wsrep_local_index | 0 |
| wsrep_provider_name | Galera |
| wsrep_provider_vendor | Codership Oy <info@codership.com> |
| wsrep_provider_version | 3.55(r8b6416d) |
| wsrep_ready | ON |
+----------------------------------+-----------------------------------------------+
75 rows in set (0.01 sec)
Starting the Second Node
[root@slave1 ~]# /etc/init.d/mysql start or [root@slave1 ~]# systemctl start mysql
服务器启动后,应该会自动接收到SST。查询第二个节点的状态。
show status like 'wsrep%';
| wsrep_incoming_addresses | 192.168.145.128:3306,192.168.145.129:3306 |
| wsrep_cluster_weight | 2 |
| wsrep_desync_count | 0
Starting the Third Node
[root@slave2 ~]# /etc/init.d/mysql start or [root@slave2 ~]# systemctl start mysql
show status like 'wsrep%';
| wsrep_incoming_addresses | 192.168.145.128:3306,192.168.145.129:3306,192.168.145.130:3306 |
| wsrep_cluster_weight | 3 |
| wsrep_desync_count | 0
最后验证
主库创建一个库:
mysql> create database travelsky;
Query OK, 1 row affected (0.03 sec)
备库随意查询
[root@slave2 percona-xtradb-cluster.conf.d]# systemctl start mysql
[root@slave2 percona-xtradb-cluster.conf.d]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.7.36-39-57-log Percona XtraDB Cluster (GPL), Release rel39, Revision 5197785, WSREP version 31.55, wsrep_31.55
Copyright (c) 2009-2021 Percona LLC and/or its affiliates
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| travelsky |
+--------------------+
5 rows in set (0.01 sec)
更多推荐
所有评论(0)