自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Orchestrator核心之失败探测

前言上篇文章中:《orchestrator的discover模块》主要讲述的是在client发出discover这个命令后,orchestrator服务端所采取的动作,那么,后续的持续discover,是如何实现,并且如何探测到失败实例的呢,今天这篇文章就来讲述这方面的内容。持续发现入口函数在:logic/orchestrator.go文件:ContinuousDiscovery()函数调用handleDiscoveryRequests(),handleDiscoveryRequests()该函数就

2022-03-08 15:09:04 424

原创 Orchestrator核心之失败类型判定

Orchestra失败类型我们可以从官网上了解到,orchestrator有很多中失败类型,如DeadMaster、DeadMasterAndReplicas、DeadMasterAndSomeReplicas等等。那么,它是如何来判断这些类型的呢,今天一起走进orchestrator的内心世界。orchestrator数据采集过程要知道orchestrator如何判定失败类型,那么首先要知悉orchestrator的探测或检测过程,这部分的内容,会在单独的一篇文章中写,这篇文章主要讨论的是失败类型的

2022-03-02 17:18:46 718

原创 orchestrator的discover模块

orchestrator的discover原理当我们发出命令:orchestrator-client -c discover -i hostname:port首先,orchestrator会发现给定的实例,即命令中的hostname:port这个实例,然后进而通过该实例来发现整个拓补结构。具体如何进行发现:1、使用MySQLHostnameResolveMethod和HostnameResolveMethod两个参数来发现给定实例。2、使用DiscoverByShowSlaveHosts来发现

2022-01-13 11:10:50 755 6

原创 Orchestrator手动优雅切换源码切换逻辑部分解读

Orchestrator解读第一部分最近在二次开发Orchestrator,所以研读了一下优雅切换部分的代码。入口首先,通过orchestrator-client来做为客户端请求入口来说明:代码位于:orchestrator/resources/bin/orchestrator-clientmain:function main { check_requirements detect_leader_api instance_hostport=$(to_hostport $ins

2021-08-21 17:22:32 798 1

原创 orchestraror使用下篇

概述在之前,比较笼统的讲述了Orchestrator的大概部署与用法,本篇则详细描述Orchestrator的Hook、API命令的使用。还有其他部署过程中需要注意的点。如果对Orchestrator还不太了解,可以参考:《 MySQL中间件:Orchestrator上篇》配置细化在说明Hook之前,要先了解Orchestrator是如何做故障检测的,以及是如何进行故障恢复的。需要的配置Orchestrator配置文件中的配置有一项:{ “ FailureDetectionPerio

2021-01-20 22:46:23 1405 2

原创 innodb MVCC

undo log回滚段是记录MVCC历史的一个空间,如果开启了独立表空间,会在独立表空间中创建一个回滚表空间,undo表空间有128个段,其中:1~32段存放于临时表的系统表空间中33~127段存放于独立undo表空间中为了事物并发,每个undo段又分为1024个slot理论上来说,innodb可支持96*1024个事物并发RR和RCRR隔离级别(除了Gap锁之外)和RC隔离级别的差...

2020-01-16 17:56:33 179

原创 rpmbuild打包成rpm包(mysql示例)

编译和二进制安装mysql的时间有点长,所以考虑了一下,还是利用rpmbuild打包成rpm包更快的安装,还可以自己定义配置文件和脚本等,打包一个属于自己的rpm包。这里使用的源码包是:mysql-boost-5.7.26.tar因为这个包自带boost库,就不需要自己另外下载了1、开始安装:安装rpmbuild工具包:yum install rpmbuild rpmdevt...

2019-07-24 14:54:23 1821

原创 logstash grok正则语法规则

这几天一直在研究ELK的搭建和使用,遇到logstash 的grok模块的时候,被困扰了很久,网上搜索很多资料,大部分都是残缺不全的并且很多都是“点到为止”grok语法详解为了理解方便,我们先来举一个例子更加直观:2019-06-18T16:21:17.237207+08:00 12350 [Note] Aborted connection 12350 to db: ‘imchat’ us...

2019-07-05 18:13:29 2387

原创 mysql group by date_format( stat_time, '%Y/%m/%d' ) 优化

mysql从5.7开始支持Generated Column操作,可以看做继承于目标列,但是可以使用函数进行转换。Generated Column有两种类型:stored和virtual。stored即存储实际数据的,而virtual则是在任何BEFORE触发器之后立即读取行时计算列值 ,不占用存储空间。示例:CREATE TABLE triangle (sidea DOUBLE...

2019-06-17 11:24:29 7244 1

原创 proxysql 链式规则详解

链式规则理解在mysql_query_rules表中,有两个特殊字段"flagIN"和"flagOUT",它们分别用来定义规则的入口和出口,从而实现链式规则。链式规则实现方法:1、proxysql查找到flagIN=0的字段的规则,开始进入链式规则模式,该字段默认为02、当语句规则完全匹配match_pattern字段时,记下当前规则的flagOUT值,如果flagOUT值非空,那么为该语...

2019-06-14 18:07:36 592

翻译 MySQL数据类型详解

MySQL数据类型预览: 整型类型: 具体类型 长度(byte) 范围 说明 tinyint 1 -128~127  0~255(unsigned)     &n...

2019-06-13 15:18:08 125

原创 mysql python数据库管理工具:MySQL Utilities

前提:1、安装MySQL Utilities工具2、复制my_print_defaults命令至/usr/bin下或写入环境变量。卸载方式:python ./setup.py clean --all 即可全部卸载1、mysqlrplsync工具。用来检查主从复制的数据一致性的工具。需要开启GTID模式mysqlrplsync--master=check:pas...

2019-05-30 11:06:01 904

原创 mysql XA 空事物锁

今天开发过来和我说有一个旧账号总是登录不上,一直卡在登录界面不跳转,后台程序那边排查之后,反应说数据库有锁。查找information_schema库下的INNODB_LOCK_WAITS和INNODB_TRX表,查找到当时正在锁定的事物:SELECT * FROM information_schema,INNODB_TRX发现这些事物的trx_mysql_thread_id都为0,而...

2019-05-27 10:33:27 406 2

翻译 mysql--EXPLAIN输出分析

前提explain提供 SELECT, DELETE, INSERT, REPLACE,和 UPDATE语句的解析。explain输出格式 Column JSON Name Meaning id select_id ...

2019-05-23 15:22:57 169

原创 mysql内存使用

mysql内存使用统计:MySQL分配缓冲区和缓存以提高数据库操作的性能。默认配置是大约512MB RAM的虚拟机上启动。可以通过增加某些缓存和缓冲区相关系统变量的值来提高MySQL性能。还可以修改默认配置以在内存有限的系统上运行MySQL。以下列举了MySQL的内存使用方法:1、缓冲池InnoDB缓冲池是保持缓存的InnoDB表,索引,及其它辅助缓冲中的数据。为了提高大容量读取操作的效率...

2019-05-23 11:21:32 1465

原创 mysql使用large_pages来提升性能

在Linux系统当中默认值的内存页通常为4KB。实际实现取决于底层硬件和操作系统。执行大量内存访问的应用程序可能会因为减少了转换后备缓冲区(TLB)丢失而使用大页面来提高性能。通过增大页面大小来减少 TLB 条目数。hugepages相关概念:Page Table: page table是一种用于物理地址到虚拟之间的映射。对于内存的访问,先是访问Page Table,然后根据Page Ta...

2019-05-22 11:07:55 1373

原创 mysql使用jemalloc来优化innodb缓冲池

jemalloc是一个malloc()碎片避免和可扩展的并发支持的实现。它旨在用作系统提供的内存分配器,如FreeBSD的libc库,以及链接到C / C ++应用程序。jemalloc提供了许多超出标准分配器功能的内省,内存管理和调优功能。作为一个极端的例子,arenas可以用作池分配器;即arenas可用于通用分配,然后整个arenas作为单一操作被销毁。jemalloc首次分配小...

2019-05-20 17:10:55 2114

原创 mysql监控系统:PMM部署与使用

环境:系统: centos7.3PMM是percona公司出品的一款mysql、mariadb,percona server、postgresql的监控软件,可以对引擎,事物,日志,系统等项目进行全面的监控。PMM是C/S架构。部署PMM前提需要docker环境。安装:安装yum扩展源:yum -y install epel-release安装dock...

2019-05-06 09:51:27 886

原创 xtrabackup备份原理解析

对于数据量大的数据库来说,xtrabackup是作为mysql最好的热备份工具。xtrabackup内容解析:首先做一次全量备份:xtrabackup -uroot -p123456 --backup -S /usr/local/mysql/mysql.sock第一部分(对于innodb表的备份):190422 16:14:28 version_check Connecte...

2019-04-22 16:37:28 4946

原创 MySQLdump备份原理

mysql常用备份工具:1、MySQLdump、MySQLpump(逻辑备份)2、xtrbackup(热备份)MySQLdump解析:1、打开general_log:show variables like 'general_log';setgeneral_log = 1;2、执行一次全备份:mysqldump -uroot -p -A -R -E --tri...

2019-04-22 15:55:49 837

原创 MySQL高可用管理工具:orchestrator

orchestrator是一个MySQL高可用复制拓补的管理和可视化工具,同时也是GitHub官方在使用的一个复制拓补管理工具,它允许:1)发现:orchestrator主动发现拓补结构并读取基本的MySQL信息,如复制状态和配置。2)重构:可以将一个不可用的服务器从拓补结构中剔除,并把数据副本移动到另一个从库下面3)恢复:在不可用时,可以选择一个适合的从库提升为主库...

2019-04-19 14:14:31 3931 17

原创 mysql innodb LRU算法理解

innodb的LRU链表是有新旧两个队列,所以和LRU算法的Twoqueues有些类似当数据要缓存如LRU链表时,先把数据移动到历史访问队列的链表里如果数据停留时间超过1S,那么就从历史访问队列里移动到热区域的LRU链表里,如果数据停留时间小于1S,那么就不会移动移动时间是由innodb_old_blocks_time参数控制,innodb_old_blocks_pct参数负责控制旧...

2019-04-12 14:59:56 3854

原创 pgsql主从复制

pgsql复制的三种模式:1. 基于日志文件的复制  Master库向Standby库异步传输WAL日志,Standby解析日志并把日志中的操作重新回放,这种复制模式需要等待Master库将整个WAL日志填充完毕后才发送给Standby库,如果中途发生宕机,那么事物都会丢失。2. 异步流复制模式  Master库以流模式向Standby库异步传输WAL日志,Standby解析收到的...

2019-04-02 11:16:22 1560

原创 pgsql安装与配置

最近迷上了pgsql,发现比mysql强大太多二进制安装过程:预先创建好postgres账户:group add postgresuseradd postgres -g postgres修改密码1、下载:wget https://get.enterprisedb.com/postgresql/postgresql-10.7-1-linux-x64-binaries.ta...

2019-04-01 15:52:12 4047

原创 redis报Can't save in background: fork: Cannot allocate memory错误

开发那边传过来错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured ...

2019-01-17 13:55:02 2250

原创 死锁及日志写入分析

今天线上环境查看状态时,发现一个死锁:分析:事务1:2018-07-15 07:15:39 7efc9e815700*** (1) TRANSACTION:TRANSACTION 39968365183, ACTIVE 0 sec insertingmysql tables in use 3, locked 3LOCK WAIT 6 lock struct(s), hea...

2018-12-05 14:47:00 441

原创 innodb redolog理解

1、在干净关闭mysql时,重做日志应该逻辑上为空。意思是在检查点LSN之后没有要恢复的记录。但是,日志文件仍可能包含一些旧数据(在恢复过程中不使用)。2、对数据页面内容的每次更改都必须通过mtr完成,该事物由mtr_commit()函数提交完成。3、在提交mtr前,在mtr的内部缓冲区内收集更改日志。它包含多个日志记录,提交mtr时,所有日志记录都将写入一组日志记录中的日志缓冲区。包括:...

2018-11-29 15:51:18 311

原创 mysql innodb恢复过程

总体来说,innodb恢复过程包含以下几个步骤:一、查找表空间:        这里的查找表空间,主要是查找重做日志来实现的。        如果innodb发现到上一次检查点之后写入的重做日志,那么必须将重做日志应用于受影响的表空间。在恢复期间标记受影响的表空间。           通过将重做日志从最后一个检查点扫描到日志末尾来执行查找表空间,以查找在 MLOG_FILE_NA...

2018-11-21 10:29:21 1485

原创 mysql迁移数据目录

系统:centos7  mysql版本:5.7.22一、检查mysql进程状态:ps -ef | grep mysql二、确认数据库目录所在:ps -ef | grep mysql   看datadir所在的地方三、确认新数据库目录的权限及硬盘空间:df -h   查看硬盘空间ll -lih   查看目录权限,要指定mysql用户四、确定要修改的配置文件/etc...

2018-11-17 13:40:44 675

原创 mysql inner join连接算法

INNER JOIN有两种算法:1、Nested-Loop Join Algorithm2、Block Nested-Loop Join Algorithm 第一种算法:        一个简单的嵌套循环连接(NLJ)算法一次一个循环从第一个表中读取行,然后将每一行传递给一个嵌套循环,循环处理连接中的下一个表。这个过程重复多次筛选数据。        嵌套循环连接算法的程序:...

2018-11-13 15:21:14 469

转载 binlog2sql mysql数据库闪回工具

binlog2sql工具比mysqlbinlog+sed恢复更快捷。1、安装:从github上下载:https://github.com/danfengcao/binlog2sqlshell> git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sqlshell> pip...

2018-11-12 11:29:58 251

原创 mysql MGR安装

MGR基本要求:1、InnoDB存储引擎2、主键,每个表必须具有已定义的主键或等效的主键,其中等效项是非null唯一键3、IPv4网络4、网络性能5、开启二进制日志并开启GTID模式6、mysql版本在5.7.17以上MGR限制:1、组复制不支持mysiam引擎2、不支持binlog的checksum校验3、并发DDL与DML操作。  使用多主模式时,不支持...

2018-11-08 16:28:02 1140

原创 ALTER TABLE语句引发的事故

今天开发那边过来和我说他那边数据库无法提交数据,一直卡住我查看了一下进程show processlist,发现有几条delete语句和insert语句,已经执行了6000多秒了,都是非常简单的语句在RR模式下:有几条语句:alter table tbname drop primary key;   执行了6000多秒。其他delete,insert操作也一直卡在哪里。 ...

2018-11-08 15:21:56 928

原创 mysql主主及并行复制的搭建

两台机器互为主从。机器1:192.168.1.160机器2:192.168.1.164修改两台机器的my.cnf文件,server-id,log-bin,auto-increment-increment,auto-increment-offset   后面两个参数为防止主键冲突而设置。主主配置有两个要点:1、复制账号2、定位master信息。所以,在两台机器上分别执行:...

2018-05-18 14:26:01 129

原创 mysql增加从库

1、将主库前一天备份的数据传输到从库机上。主库备份语句加上--master-data=2,记录其change master to信息。2、在从库上导入主库备份数据。mysql -uroot -ppasswd < bak_20180411.sql3、查看从库上的备份数据:bak_20180411.sql,找到其中的CHANGE MASTER TO字段,记录position。    cat ba...

2018-05-18 14:24:46 881

原创 mysql去重,3亿多数据量

差不多3亿6千万数据,需要去重。因为数据量太大,所以:将数据load data infile到大表里,不进行任何去重操作,没有任何约束。然后将数据分成几十个小表,用这几十个小表去对比大表去重。得到去重后的小表。去重以后的小表,根据字段进行hash算出后两位数字,重新建好新表,将去重后小表的数据,插入到带有hash数字新表中。存储过程如下(去重):DELIMITER ///*tbln...

2018-05-18 14:23:40 2735

原创 Jenkins构建本地项目到服务器上自动部署的方法

最近在用Jenkins做项目的自动部署,由于项目需求,现在要在本地构建后再放到Tomcat里。以下是本地构建步骤:名称填写好,下面的选项是可选的。源码管理这里选择none。触发器这里,我的是在凌晨3点强制构建。可选。这里是最重要的一步:选择Execute shell选项。可以使Jenkins执行一些shell命令。点击

2017-06-28 16:36:08 11923

原创 自动定时备份删除脚本

任务:定时备份数据库所有数据。          定时删除7天以前的数据脚本如下:#!bin/bashdat=`date +%Y%m%d`    mysqldump -uroot -p123456  -A -R -E --triggers > /home/back.data/all_bak_${dat}.sqlrm -rf /home/back.data/`date -d...

2017-06-28 16:35:12 590

proxysql-1.4.10最新版本

proxysql的最新版本,支持读写分离及高可用。高可用需要配合其他的高可用工具。

2018-09-19

gcc-4.9.3资源

Linux,centos6版本升级到4.9.x是不会出任何不兼容问题的

2018-09-17

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除