MySQL组复制(一)
概述MySQL Group Replication是MySQL5.7引进的高可用扩展,以插件形式提供。复制组包含多个成员,每个成员都有完整的数据副本,成员之间通过广播消息互相交互。
在多个成员互相交互的过程中会对事务进行冲突检测,优先进行提交的事务顺利完成提交,其它冲突事务则进行回退。在高并发的场景下大量事务回退导致性能降低,因此官方建议对同一记录的修改应该放在一个节点上,利用本地锁进行同步等待,避免事务冲突造成大量回滚。
下图描述了 MySQL 组复制协议:
MGR基于现有的MySQL复制体系,利用二进制日志、基于行的日志记录和全局事务标识等功能。下图显示了MySQL Group Replication的结构图
MySQL Group Replication plugin包含一组用于捕获、应用、生命周期管理的API,它们控制插件如何与MySQL Server进行交互。下面则是一组组件,当通知路由到它们时,它们会进行相应处理。Capture负责跟踪与正在执行的事务的上下文;applier组件负责在数据库上执行远程事务;recovery组件管理分布式恢复,并负责通过选择数据源、管理cat ...
MySQL8.0新特性 : Asynchronous Replication Automatic failover
MySQL8.0支持在一个复制通道上配置多个可用复制源,当某个复制源不可用时,自动根据权重重新选择数据源进行同步。例如我们本地有一个跨机房的MGR高可用环境,计划在另一个地区的机房搭建一个异步复制节点做容灾。当MGR主节点发生切换时,就可以通过该特性在新主节点继续进行复制。
开启source_connection_auto_failover选项
change master to master_user='msandbox',master_password='msandbox',master_host='127.0.0.1',master_auto_position=1,source_connection_auto_failover=1,master_port=23223,master_retry_count=6,master_connect_retry=10for channel 'mgr';
master_retry_count和master_connect_retry表示重试多久切换复制源
配置as ...
MySQL8.0 : caching_sha2_password认证
在MySQL8.0中,用户认证插件默认值为caching_sha2_password,可以实现SHA-256加密认证。
msandbox@(none) 15:39: show variables like 'default_authentication_plugin';+-------------------------------+-----------------------+| Variable_name | Value |+-------------------------------+-----------------------+| default_authentication_plugin | caching_sha2_password |+-------------------------------+-----------------------+
在创建用户时,也可以指定认证插件
CREATE USER 'sha2user'@'localhost ...
MySQL8.0 : 窗口函数
测试数据
root@test 03:53: select * from t1;+----+-------+------+| id | name | flag |+----+-------+------+| 1 | lu | 1 || 2 | heng | 1 || 3 | xing | 2 || 4 | li | 2 || 5 | wang | 3 || 6 | zhang | 2 |+----+-------+------+
ROW_NUMBER
ROW_NUMBER用于返回分区范围内的行号
root@test 03:07: select id,name,row_number() over w as 'row_number',flag from t1 window w as (partition by flag order by name);+----+------+------------+------+| id | name | row_number | flag |+----+---- ...
MySQL主从数据不一致修复
pt-table-checksum/pt-table-syncpt-table-checksum是用于MySQL主从复制数据一致性校验的工具,在主库上运行,通过将数据分成多个chunk数据块,以数据块为单位使用CRC32计算checksum再进行比较。
会话开始时,会降低innodb_lock_wait_timeout的锁超时时间,只要innodb有锁产生则立即放弃操作,并且在执行checksum前会先通过explain评估语句的执行计划成本,因此对线上业务影响很小。
注:表需要存在主键或唯一键
常用参数
名称
描述
–nocheck-replication-filters
不检查复制过滤器
–no-check-binlog-format
非STATEMENT格式时需要指定
–replicate-check-only
只显示不同步的信息
–replicate
把checksum信息写入到指定表中
–databases
指定执行检查的数据库
–tables
指定执行检查的表
h
master节点的地址
u
用户
p
密码
P
端口
示例 ...
percona-toolkit : pt-stalk
pt-stalk采用shell脚本编写,主要用于在问题时间点收集OS及MySQL的诊断信息,包括CPU,内存,磁盘等资源以及数据库锁等待,主从复制,状态等信息。
触发
pt-stalk可以用后台服务的方式监控MySQL并指定触发条件,当触发条件时收集相关当前时间点系统和数据库信息。相关参数如下:
function:默认为status,表示监控show global status的输出;processlist表示监控show processlist输出,也可以自定义监控脚本
variable:默认为Threads_runing,表示监控参数,可根据监控输出自行指定
threshold:默认为25,表示监控阈值,超过阈值将触发条件;如果参数非数值,需要配合match一同使用,
cycles:默认为5,表示连续满足5次触发条件,才触发信息收集
iterations:指定收集次数,到达参数指定后退出,默认一直运行
run-time:收集多长时间的数据,默认30秒
sleep:前一次触发收集后,休息多长时间再次开启监控,默认300秒
interval:状态检查频率,默认1秒
dest:监控数据 ...
AlwaysOn可用性组创建失败(error 41131)
问题描述
在SQLServer2016上创建可用性组失败,错误显示如下:
Failed to bring availability group 'availability_group' online. The operation timed out.Verify that the local Windows Server Failover Clustering (WSFC) node is online. Then verify that the availability group resource exists in the WSFC cluster. If the problem persists, you might need to drop the availability group and create it again.
原因
导出集群日志(PowerShell)
mkdir d:\traceGet-ClusterLog -Destination d:\trace
其中错误信息如下
ODBC Error: [42000] [Microsoft][ ...
Percona Backup For MongoDB
概述早前,在Percona for MongoDB上手一文中提到Percona版本的MongoDB支持热备份,现在Percona已经将该功能独立出来,让你可以在社区版的MongoDB replset或集群上进行备份,支持MongoDB3.6或更高版本。
Percona Backup For MongoDB的组件如下:
pbm-agent:运行在集群或副本集每个节点上的进程,用于执行备份或恢复操作
pbm:pbm是向pbm-agent下达操作指令的程序
pbm control collections:控制集合用于存储配置数据和备份状态,pbm和pbm-agent都通过控制集合来检查备份状态并相互通信
remote backup storage:远程备份存储是保存备份文件的位置,可以是S3存储,也可以是Filesystem
pbm-agent
备份需要本地连接一个pbm-agent实例到每个Mongod实例,这包括副本集的secondary节点和分片群集中的配置服务器副本节点。
当pbm-agent观察到pbm对控制集合的更新后,将触发备份和恢复操作,类似副本集选择primary节点 ...
Anemometer慢日志展示
Anemometer 是一个MySQL慢日志展示的工具,结合pt-query-digest,输出较为详细的MySQL慢查询信息,有助于性能优化分析。Anemometer为B/S架构,WEB端依赖于LAMP,因此我们需要安装配置MySQL、PHP、Apache,其数据来源于pt-query-digest,因此我们还需要安装percona-toolkit。
Apache安装解压apache
$ tar -xvf httpd-2.2.34.tar.gz
编译安装
$ cd httpd-2.2.34$ ./configure --prefix=/usr/local/apache$ make && make install -j 4
编辑配置文件(/usr/local/apache/conf/httpd.conf)
LoadModule php7_module modules/libphp7.soServerName 10.0.139.161:80<Directory /> Options FollowSymLinks AllowOver ...
Centos7.2查看目录使用率hang住
现象:
Centos7.2通过df -h查看目录使用率卡住,无法结束
分析:
通过strace命令跟踪df命令,发现在stat(“/proc/sys/fs/binfmt_misc处卡住,查看unit状态
$ systemctl list-units -all | grep binfmtproc-sys-fs-binfmt_misc.automount loaded active running Arbitrary Executable File Formats File System Automount Pointproc-sys-fs-binfmt_misc.mount loaded inactive dead Arbitrary Executable File Formats File Syste ...