mysql pxc galera_移动云基于MySQL Galera的PXC运维实战 - MySQL

本文深入解析MySQL PXC Galera集群的重要监控指标,包括wsrep_local_state_uuid、wsrep_protocol_version等,帮助理解集群状态、数据同步与网络延迟等问题,提升集群运维效率。
摘要由CSDN通过智能技术生成

wsrep_local_state_uuid:存储于该节点的UUID状态

wsrep_protocol_version:wsrep协议使用的版本

wsrep_last_committed:最后提交事务的序列号

wsrep_replicated:发送到其他节点的writesets总数

wsrep_replicated_bytes:发送到其他节点的writesets总字节数

wsrep_repl_keys:复制keys总数

wsrep_repl_keys_bytes:复制keys总字节数

wsrep_repl_data_bytes:复制数据的总字节数

wsrep_repl_other_bytes:其他复制的总字节数

wsrep_received:从其他节点接收的writesets总数

wsrep_received_bytes:从其他节点接收的writesets总字节数

wsrep_local_commits:该节点提交的writesets总数

wsrep_local_cert_failures:认证测试中失败的writesets总数

wsrep_local_replays:因非对称锁粒度回放的事务数

wsrep_local_send_queue:当前发送队列的长度,表示等待被发送的writesets数

wsrep_local_send_queue_avg:网络瓶颈的预兆。如果这个值比较高的话,可能存在网络瓶

wsrep_local_recv_queue:当前接收队列的长度,表示等待被使用的writesets数

wsrep_local_recv_queue_avg:表示slave事务队列的平均长度,slave瓶颈的预兆

wsrep_local_cached_downto:gcache的最小序列号,这个变量可以用来判断是用IST,还是SST。如果此值为0,表示gcache中没有writesets

wsrep_flow_control_paused_ns:表示复制停止了多长时间,以纳秒为单位

wsrep_flow_control_paused:表示复制停止了多长时间。即表明集群因为Slave延迟而慢的程度,值为0~1,越靠近0越好,值为1表示复制完全停止。可优化wsrep_slave_threads的值来改善

wsrep_flow_control_sent:表示该节点已经停止复制了多少次

wsrep_flow_control_recv:表示该节点已经停止复制了多少次

wsrep_cert_deps_distance:有多少事务可以并行应用处理。wsrep_slave_threads设置的值不应该高出该值太多

wsrep_apply_oooe:并发执行效率,writesets应用于out-of-order的频率

wsrep_apply_oool:大序列值的writeset比小序列值的writeset多出的执行频率

wsrep_apply_window:同时使用的最高序列值和最小序列值间的平均差值

wsrep_commit_oooe:事务脱离队列的频率

wsrep_commit_window:同时提交的最大序列值和最小序列值间的平均差值

wsrep_local_state:galera状态值

1 - Joining (requesting/receiving State Transfer) –表示此节点正在加入集群

2 - Donor/Desynced –表示正在加入的节点是donor

3 - Joined –表示节点已经加入集群r

4 - Synced –表示节点已经和集群同步

wsrep_local_state_comment:galera状态,如果wsrep_connected为On,但wsrep_ready为OFF,则可以从该项查看原因

wsrep_cert_index_size:certification索引的entries数量

wsrep_cert_bucket_count:哈希表中certification索引的cells数

wsrep_gcache_pool_size:page pool或者为gcache动态分配的字节数

wsrep_causal_reads:writesets处理数

wsrep_incoming_addresses:以逗号分隔显示集群中的节点地址

wsrep_evs_repl_latency:提供集群节点间通信复制延迟信息

wsrep_evs_delayed:被剔除出集群的UUID

wsrep_evs_evict_list:有延迟的节点列表

wsrep_evs_state:EVS协议状态

wsrep_gcomm_uuid:galera的view_id,不同于集群的uuid,在gvwstate.dat可以查看到

wsrep_cluster_conf_id:集群成员发生变化的数目,正常情况下所有节点上该值是一样的。如果值不同,说明该节点被临时"分区"了。当节点之间网络连接恢复的时候应该会恢复一样的值

wsrep_cluster_size:集群中的节点数目,如果这个值跟预期的节点数一致,则所有的集群节点已经连接

wsrep_cluster_state_uuid:集群的UUID值,在集群所有节点的值应该是相同的,有不同值的节点,说明其没有连接入集群

wsrep_cluster_status:集群节点的状态。如果不为"Primary",说明出现"分区"或是"split-brain"状况,可能的取值为:Primary、Non-Primary、Disconnected

wsrep_connected:节点是否连接到集群,如果该值为Off,且wsrep_ready的值也为Off,则说明该节点没有连接到集群。(可能是wsrep_cluster_address或wsrep_cluster_name等配置错造成的。具体错误需要查看错误日志)

wsrep_local_bf_aborts:被其他节点上的事务终止的正在执行的本地事务数

wsrep_local_index:集群节点索引

wsrep_provider_name:wsrep程序提供者

wsrep_provider_vendor:wsrep供应商

wsrep_provider_version:wsrep程序提供者的版本

以下是基于CentOS封装MySQL8的PXC集群的Docker镜像的步骤: 1. 准备工作 安装Docker和Docker Compose,确保系统已经安装了CentOS 7或更高版本。 2. 创建Dockerfile 在本地创建一个新的文件夹,并在其中创建一个Dockerfile文件。将以下内容复制到Dockerfile文件中: ``` FROM centos:latest RUN yum update -y && \ yum install -y epel-release && \ yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm && \ yum install -y Percona-XtraDB-Cluster-57 && \ yum install -y which && \ yum clean all ENV MYSQL_ROOT_PASSWORD=password ENV MYSQL_USER=mysql ENV MYSQL_PASSWORD=password COPY my.cnf /etc/my.cnf COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh ENTRYPOINT ["docker-entrypoint.sh"] EXPOSE 3306 4444 4567 4568 CMD ["mysqld"] ``` 3. 编写docker-entrypoint.sh 在本地文件夹中创建一个名为docker-entrypoint.sh的新文件,并将以下内容复制到该文件中: ``` #!/bin/bash set -e # Start MySQL server mysqld --user=mysql --wsrep-new-cluster & # Wait for the MySQL server to start mysqladmin --user=root --password=$MYSQL_ROOT_PASSWORD ping --silent # Create the PXC cluster mysql --user=root --password=$MYSQL_ROOT_PASSWORD -e "CREATE USER '$MYSQL_USER'@'%';" mysql --user=root --password=$MYSQL_ROOT_PASSWORD -e "GRANT ALL PRIVILEGES ON *.* TO '$MYSQL_USER'@'%' WITH GRANT OPTION;" mysql --user=root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL wsrep_cluster_address='gcomm://';" mysql --user=root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL wsrep_node_address='$(hostname -i)';" mysql --user=root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL wsrep_node_name='$(hostname)';" mysql --user=root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL wsrep_provider_options='pc.bootstrap=1';" mysql --user=root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL wsrep_sst_method='xtrabackup-v2';" mysql --user=root --password=$MYSQL_ROOT_PASSWORD -e "SET GLOBAL wsrep_cluster_name='PXC';" # Shutdown the MySQL server mysqladmin --user=root --password=$MYSQL_ROOT_PASSWORD shutdown # Start MySQL server with PXC exec mysqld --user=mysql ``` 4. 创建my.cnf文件 在本地文件夹中创建一个名为my.cnf的新文件,并将以下内容复制到该文件中: ``` [mysqld] server-id=1 binlog_format=ROW default_storage_engine=InnoDB innodb_autoinc_lock_mode=2 innodb_flush_log_at_trx_commit=0 wsrep_on=ON wsrep_provider=/usr/lib64/galera3/libgalera_smm.so wsrep_cluster_name=PXC wsrep_cluster_address=gcomm:// wsrep_node_name=node1 wsrep_node_address=192.168.0.1 wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth=sstuser:s3cret ``` 替换上述内容中的wsrep_cluster_address、wsrep_node_name和wsrep_node_address为适当的值。 5. 创建docker-compose.yml文件 在本地文件夹中创建一个名为docker-compose.yml的新文件,并将以下内容复制到该文件中: ``` version: '3.7' services: db: build: . restart: always environment: MYSQL_ROOT_PASSWORD: password MYSQL_USER: mysql MYSQL_PASSWORD: password ports: - "3306:3306" - "4444:4444" - "4567:4567" - "4568:4568" ``` 6. 构建和运行Docker镜像 在终端中转到文件夹,并运行以下命令来构建Docker镜像: ``` docker build -t mysql-pxc . ``` 然后,运行以下命令来启动Docker容器: ``` docker-compose up -d ``` 这将启动MySQL8的PXC集群,并将其映射到主机的3306端口。您可以使用MySQL客户端连接到它并开始使用它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值