安装部署PXC集群
1. 主机角色
- 3台服务器
主机名 | IP地址在 | 角色 |
---|---|---|
pxcnode10 | 192.168.10.10 | 数据库服务器 |
pxcnode20 | 192.168.10.20 | 数据库服务器 |
pxcnode30 | 192.168.10.30 | 数据库服务器 |
##在每台主机上都修改自己的主机名
[root@localhost ~]# hostname pxcnode10 ;su --在192.168.10.10上执行
[root@localhost ~]# hostname pxcnode20 ;su --在192.168.10.20上执行
[root@localhost ~]# hostname pxcnode30 ;su --在192.168.10.30上执行
##在每台主机上执行修改hosts文件
vim /etc/hosts
#添加下面内容:
192.168.10.10 pxcnode10
192.168.10.20 pxcnode20
192.168.10.30 pxcnode30
- 3台主机都需要执行
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
percona-release enable-only pxc-80 release
percona-release enable tools release
yum install percona-xtradb-cluster
2. 安装后,启动服务并使用命令查找临时密码。mysql grep
#修改配置文件设置大小写不敏感
vim /etc/my.cnf
[mysqld]
...
lower_case_table_names=1
#启动服务
systemctl start mysql
#查看初始密码
grep 'temporary password' /var/log/mysqld.log
#登录
mysql -uroot -p
#修改密码
alter user 'root'@'localhost' identified by 'nane871747';
#刷新策略
flush privileges;
#退出
exit
#停止服务
systemctl stop mysql
3. 修改配置文件
- pxcnode10修改如下:
vim /etc/my.cnf
[client]
socket=/var/lib/mysql/mysql.sock #指定socket路径
[mysqld]
server-id=10 #MySQL服务器的ID
datadir=/var/lib/mysql #指定MySQL数据目录的路径
socket=/var/lib/mysql/mysql.sock #指定MySQL服务器使用的套接字文件的路径
log-error=/var/log/mysqld.log #指定MySQL错误日志文件的路径
pid-file=/var/run/mysqld/mysqld.pid #指定MySQL进程ID(PID)文件的路径
lower_case_table_names=1 #指定MySQL对于表名和数据库名大小写不敏感
character_set_server=utf8mb4 #设置MySQL服务器使用的字符集为UTF-8
collation-server=utf8mb4_unicode_ci #指定了MySQL服务器默认使用的字符集校对规则
default-storage-engine=INNODB #设置默认的存储引擎为InnoDB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #设置MySQL的SQL模式,包含禁止使用未知存储引擎和严格事务表模式
innodb_flush_log_at_trx_commit=0 #设置InnoDB引擎的日志刷新策略
key_buffer_size=5120M #设置用于索引缓存的内存大小为5120MB
read_buffer_size=64M #设置读取缓冲区的大小为64MB
sort_buffer_size=64M #设置排序缓冲区的大小为64MB
innodb_buffer_pool_size=8G #设置InnoDB缓冲池的大小为8GB
max_connections=4096 #设置允许的最大连接数为4096
binlog_expire_logs_seconds=604800 #设置二进制日志文件过期时间为一周,即7 * 24 * 60 * 60秒。
wsrep_provider=/usr/lib64/galera4/libgalera_smm.so #指定PXC使用的Galera复制插件的路径和名称。
wsrep_cluster_address=gcomm://192.168.10.20,192.168.10.30,192.168.10.10 #指定PXC集群中所有节点的IP地址和端口号,并使用gcomm协议进行通信。
binlog_format=ROW #设置MySQL二进制日志记录格式为行级别。这意味着MySQL将记录每个更改的行,而不是记录语句本身。
wsrep_slave_threads=8 #指定在PXC集群中用于并发复制的工作线程数。
wsrep_log_conflicts #启用写冲突日志记录,以便在发生写冲突时进行调试和故障排除。
innodb_autoinc_lock_mode=2 #指定自增ID锁定模式为“连续”。这可以提高并发性能并减少锁定争夺。
wsrep_node_address=192.168.10.10 #指定当前节点的IP地址。
wsrep_cluster_name=pxc-cluster #指定PXC集群的名称,以便节点可以加入正确的集群。
wsrep_node_name=pxcnode10 #指定当前节点的名称。
pxc_strict_mode=ENFORCING #启用PXC的严格模式,以确保所有节点都运行相同版本的MySQL服务器,并且使用相同的配置选项。这有助于保持系统的稳定性和一致性。
skip-name-resolve #禁用DNS反向解析,可以加速节点间的通信
pxc-encrypt-cluster-traffic=OFF #表示节点之间的通信不经过加密处理
wsrep_sst_method=xtrabackup-v2 #指定了节点使用的State Snapshot Transfer(SST)方法。具体来说,xtrabackup-v2是一种基于物理备份的SST方法,它使用Percona XtraBackup工具在不中断集群服务的情况下将数据从一个节点复制到另一个节点。
[sst]
pxc-encrypt-cluster-traffic=OFF #在[sst]配置节中,节点之间的数据传输也不经过加密处理
- pxcnode20修改如下:
vim /etc/my.cnf
server-id=20
wsrep_cluster_address=gcomm://192.168.10.10,192.168.10.30,192.168.10.20
wsrep_node_address=192.168.10.20
wsrep_node_name=pxcnode20
#其他配置和pxcnode10一样,以上是不同的配置。
- pxcnode30修改如下:
vim /etc/my.cnf
server-id=30
wsrep_cluster_address=gcomm://192.168.10.10,192.168.10.20,192.168.10.30
wsrep_node_address=192.168.10.30
wsrep_node_name=pxcnode30
#其他配置和pxcnode10一样,以上是不同的配置。
4. 启动集群服务,并加入节点
#pxcnode10启动集群服务
systemctl start mysql@bootstrap.service
#若要确保群集已初始化,请运行以下命令:
show status like 'wsrep%';
#pxcnode20、pxcnode30执行命令加入集群
systemctl start mysql
#查看集群状态
mysql> show status like 'wsrep%';
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| wsrep_local_state_uuid | 5e1a6736-b393-11ee-b291-3f371aacaa86 #当前节点的状态唯一标识。 |
| wsrep_protocol_version | 10 #Galera协议的版本 |
| wsrep_last_applied | 7 #最近一次应用的事务序号 |
| wsrep_last_committed | 7 #最近一次提交的事务序号 |
| wsrep_monitor_status (L/A/C) | [ (5, 5), (7, 7), (7, 7) ] #集群中各节点的状态信息,包括本地状态和应用状态 |
| wsrep_replicated | 0 #已复制的事务数 |
| wsrep_replicated_bytes | 0 #已复制的数据量(字节) |
| wsrep_repl_keys | 0 #复制的键数 |
| wsrep_repl_keys_bytes | 0 #复制的键数据量(字节) |
| wsrep_repl_data_bytes | 0 #复制的数据量(字节) |
| wsrep_repl_other_bytes | 0 #其他复制数据量(字节) |
| wsrep_received | 4 #接收到的事务数 |
| wsrep_received_bytes | 504 #接收到的数据量(字节) |
| wsrep_local_commits | 0 #本地提交的事务数 |
| wsrep_local_cert_failures | 0 #本地证书失败数 |
| wsrep_local_replays | 0 #本地重放数 |
| wsrep_local_send_queue | 0 #本地发送队列长度 |
| wsrep_local_send_queue_max | 1 #本地发送队列的最大长度 |
| wsrep_local_send_queue_min | 0 #本地发送队列的最小长度 |
| wsrep_local_send_queue_avg | 0 #本地发送队列的平均长度 |
| wsrep_local_recv_queue | 0 #本地接收队列长度 |
| wsrep_local_recv_queue_max | 1 #本地接收队列的最大长度 |
| wsrep_local_recv_queue_min | 0 #本地接收队列的最小长度 |
| wsrep_local_recv_queue_avg | 0 #本地接收队列的平均长度 |
| wsrep_local_cached_downto | 6 #本地缓存的已应用事务序号 |
| wsrep_flow_control_paused_ns | 0 #流控暂停时长(纳秒) |
| wsrep_flow_control_paused | 0 #流控暂停次数 |
| wsrep_flow_control_sent | 0 #发送的流控请求次数 |
| wsrep_flow_control_recv | 0 #接收的流控请求次数 |
| wsrep_flow_control_active | false #是否处于流控状态 |
| wsrep_flow_control_requested | false #是否请求流控 |
| wsrep_flow_control_interval | [ 173, 173 ] #流控间隔时间范围 |
| wsrep_flow_control_interval_low | 173 #流控间隔时间的下限 |
| wsrep_flow_control_interval_high | 173 #流控间隔时间的上限 |
| wsrep_flow_control_status | OFF #流控状态 |
| wsrep_cert_deps_distance | 0 #证书依赖的距离 |
| wsrep_apply_oooe | 0 #应用超出顺序事务数 |
| wsrep_apply_oool | 0 #应用超出顺序事务数(低优先级) |
| wsrep_apply_window | 0 #应用窗口大小 |
| wsrep_apply_waits | 0 #应用等待次数 |
| wsrep_commit_oooe | 0 #提交超出顺序事务数 |
| wsrep_commit_oool | 0 #提交超出顺序事务数(低优先级) |
| wsrep_commit_window | 0 #提交窗口大小 |
| wsrep_local_state | 4 #本地节点的状态,值为 4 时,表示当前节点处于进行全局事务快照的阶段,处于 "Donor/Desynced" 状态 |
| wsrep_local_state_comment | Synced #本地节点状态的说明 |
| wsrep_cert_index_size | 0 #证书索引的大小 |
| wsrep_cert_bucket_count | 1 #证书桶的数量 |
| wsrep_gcache_pool_size | 5320 #全局缓存池的大小 |
| wsrep_causal_reads | 0 #因果一致性读取次数 |
| wsrep_cert_interval | 0 #证书间隔 |
| wsrep_open_transactions | 0 #打开的事务数 |
| wsrep_open_connections | 0 #打开的连接数 |
| wsrep_ist_receive_status | #IST接收状态 |
| wsrep_ist_receive_seqno_start | 0 #IST接收的起始事务序号 |
| wsrep_ist_receive_seqno_current | 0 #IST接收的当前事务序号 |
| wsrep_ist_receive_seqno_end | 0 #IST接收的结束事务序号 |
| wsrep_incoming_addresses | 192.168.10.10:3306,192.168.10.20:3306 #集群中其他节点的地址列表 |
| wsrep_cluster_weight | 3 #节点的权重 |
| wsrep_desync_count | 0 #脱离同步计数 |
| wsrep_evs_delayed | #延迟的EVs。 |
| wsrep_evs_evict_list | #驱逐列表的EVs |
| wsrep_evs_repl_latency | 0/0/0/0/0 #复制延迟 |
| wsrep_evs_state | OPERATIONAL #EVs的状态 |
| wsrep_gcomm_uuid | 662eadec-b40a-11ee-b6b8-83c877abdb09 #集群通信的UUID |
| wsrep_gmcast_segment | 0 #组播段 |
| wsrep_cluster_capabilities | #集群的能力 |
| wsrep_cluster_conf_id | 3 #集群配置ID |
| wsrep_cluster_size | 3 #集群的节点数 |
| wsrep_cluster_state_uuid | 5e1a6736-b393-11ee-b291-3f371aacaa86 #集群状态的UUID |
| wsrep_cluster_status | Primary #集群的状态 |
| wsrep_connected | ON #是否连接到集群,on代表连接集群 |
| wsrep_local_bf_aborts | 0 #本地BF中止数 |
| wsrep_local_index | 1 #本地索引 |
| wsrep_provider_capabilities | :MULTI_MASTER:CERTIFICATION:PARALLEL_APPLYING:TRX_REPLAY:ISOLATION:PAUSE:CAUSAL_READS:INCREMENTAL_WRITESET:UNORDERED:PREORDERED:STREAMING:NBO: | #提供程序的能力
| wsrep_provider_name | Galera #提供程序的名称 |
| wsrep_provider_vendor | Codership Oy <info@codership.com> (modified by Percona <https://percona.com/>) | #提供程序的厂商
| wsrep_provider_version | 4.16(841837f) #提供程序的版本 |
| wsrep_ready | ON #是否就绪,on代表已就绪 |
| wsrep_thread_count | 9 #线程数目 |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
79 rows in set (0.02 sec)