- 博客(76)
- 资源 (8)
- 收藏
- 关注
原创 编译error: no acceptable C compiler found in $PATH
执行./configure时报错:configure: error: no acceptable C compiler found in $PATH***********************************************************查看得知未安装合适的编译器。sudo yum install gcc-c++(使用sudo yum install gc...
2020-11-11 15:55:54
43969
8
原创 列表python排序
Python题目:对列表[37,41.12,35,22,98,16,7,45,31]进行排序。这里不考虑.sort()方法。#!/usr/bin/env python#_*_coding:utf-8_*_def merge(left, right): i, j = 0, 0 result = [] #左右列表元素对比大小,然后加1 while i < len(left) and j < len(right): if left[i] <=
2020-11-11 15:52:25
394
原创 insert事务产生duplicate key error引发的死锁分析
先看程序报错: 2017-06-12 21:18:40.856 [ForkJoinPool.commonPool-worker-12] ERROR com.jd.gms.maindata.accurate.service.impl.FixServiceImpl[51] - FixServiceImpl.fixSkuAttribute error java.lang.RuntimeException: org.springframework.dao.DeadlockLoserDat...
2020-11-11 15:51:05
1585
原创 MYSQL通过存储过程实现批量建表
适用于分表比较多的情况,如何批量创建,可通过存储过程实现。存储过程批量执行只是临时使用,不建议业务使用存储过程,有些存储过程封装SQL较多,导致性能下降,不容易排查。创建一个存储过程:红色为表结构,蓝色为表名及表数量,从0开始到255MySQL root@[test]>delimiter //MySQL root@[test]>create procedure sp_create_tab()beginset @str = " ( `id` int(11) NO...
2020-11-11 15:50:38
700
1
原创 Mysql Group Replication简介
MGR(Mysql Group Replication)是5.7版本新加的特性,是一个MySQL插件。MGR 是一个新的高可用与高扩展的方案,集群中的任何节点数据都是一样的,可以实现任何节点都可以写入,实现了真正意义上的多主。主要包含以下几部分API层:负责完成和MySQL Server的交互,得到Server状态,完成事务的管理。组件层:主要包括3个特定组件,Capture负责收集事务执行的相关信息,Applier负责应用集群事务到本地,Recovery负责节点的数据恢复。复制层
2020-11-11 15:49:58
3598
2
原创 MySQL高可用工具—Orchestrator配置说明
Orchestrator配置说明{ Debug: false, --设置debug模式 EnableSyslog: false, -- 是否把日志输出到系统日志里 ListenAddress: ":3000", -- web http tpc 监听端口
2020-11-11 15:49:34
693
原创 MySQL高可用工具—Orchestrator初识
Orchestrator是一款开源的MySQL复制拓扑管理工具,采用go语言编写,支持MySQL主从复制拓扑关系的调整、支持MySQL主库故障自动切换、手动主从切换等功能。Orchestrator后台依赖于MySQL或者SQLite存储元数据,能够提供Web界面展示MySQL集群的拓扑关系及实例状态,通过Web界面可更改MySQL实例的部分配置信息,同时也提供命令行和api接口,以便更加灵活的自动化运维管理。相比于MHA,Orchestrator更加偏重于复制拓扑关系的管理,能够实现MySQL任一复制
2020-11-10 15:34:10
643
原创 【MYSQL】必考面试题10道(答案解释)
1、MySQL偶尔会出现OOM(内存溢出)现象,导致MySQl服务重启,以下哪种方式能有效缓解OOM的情况发生()A.适当调低innodb_buffer_pool_size大小,5.7之前需要重启MySQL服务。B.降低并发,避免查询分组排序和更多table cache。C.开启swap。D.将一个实例下库表拆成多个库表(分库分表)。答案:ABC解释:D.分库分表会open更多的表,占用更多系统内存。可以分库分表但不要放在一个主机和实例下。2、INSERT BUFFER即合并插入缓存..
2020-11-10 15:33:38
1328
1
原创 MYSQL面试必问—INSERT BUFFER
INSERT BUFFER即合并插入缓存,从MySQL 5.1.X版本(innodb 1.0.x)开始引入Changebuffer,是INSERT BUFFER升级版,不仅包括INSERT BUFFER,还包括UPDATE BUFFER、DELETE BUFFER、PURGE BUFFER。我们可以通过show engine innodb status看到INSERT BUFFER信息。一条命令解读InnoDB存储引擎—show engine innodb statusInsert..
2020-11-10 15:33:19
313
原创 MySQL SQL开发规范
工作内容 内容详细说明 1.主键自增 建表语句中主键自增或者研发在应用程序设置主 键为自增 2.auto_increment=1 建表语句中保证auto_increment=1或者没有此参 数(默认是从1开始自增) 3.禁止使用大字段(text,mediumext,longtext;) mysql数据库字段类型禁止使用大字段,(如:...
2020-11-10 15:32:59
221
转载 了解开源许可,减少不必要麻烦
之前技术圈因为React专利事件再次被大家关注,印象中Angular和Vue的纷争刚刚过去不久,果然前端技术圈对”造轮子”和”搞事情”有着近乎执著的追求。作为一个在知乎吃瓜的伪前端工程师,我对这凑热闹这种事情从来都是是颇为喜欢的。如果说Angular和Vue冲突主要来自大漠穷秋和尤小尤的个人战场,那么这次React专利事件则是商业公司之间对社区主导力量的一次争夺和抗衡。开源是一种近似乌托邦般的理想社会,它倡导的”人人为我,我为人人”这种近乎大同社会的观念,在面临商业化浪潮洗礼的时候难会和商业利益发生冲突,
2020-11-10 15:32:40
210
原创 图数据库使用场景
一、关系型数据库的不适性在众多不同的数据模型里,关系数据模型自20世纪80年代就处于统治地位,而且出现了不少巨头,如Oracle、MySQL,它们也被称为:关系数据库管理系统(RDBMS)。然而,随着关系数据库使用范围的不断扩大,也暴露出一些它始终无法解决问题,其中最主要的是数据建模中的一些缺陷和问题,以及在大数据量和多服务器之上进行水平伸缩的限制。同时,互联网发展也产生了一些新的趋势变化: 用户、系统和传感器产生的数据量呈指数增长,数据量不断增加,大数据的存储和处理; 新时代互联网形
2020-11-10 15:31:51
858
原创 ZooKeeper分布式协调服务
ClickHouse需要依赖ZooKeeper使用,本文对ZooKeeper做简单介绍。一、ZooKeeper定义ZooKeeper译名为“动物园管理员”。各个子系统就好比动物园里的动物,为了使各个子系统能正常为用户提供统一的服务,必须需要一种机制来进行协调——这就是ZooKeeper。ZooKeeper是一个开源的分布式协调服务。分布式应用程序可以基于 ZooKeeper实现如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分
2020-11-10 15:31:31
273
原创 提高应用性能,你应该知道的SQL小技巧
应用程序慢如牛,原因多多,可能是网络的原因、可能是系统架构的原因,还有可能是数据库的原因。那么如何提高数据库SQL语句执行速度呢?有人会说性能调优是数据库管理员(DBA)的事,然而性能调优跟程序员们也有莫大的关系。程序中嵌入的一行行的SQL语句,如果使用了一些优化小技巧,定能达到事半功倍的效果。技巧1 比较运算符能用 “=”就不用“<>”“=”增加了索引的使用几率。技巧2 明知只有一条查询结果,那请使用 “LIMIT 1”“LIMIT 1”可以避免全表扫描,找到..
2020-11-10 15:29:26
123
原创 一分钟理解TCP重传
为什么需要重传任何信息在介质中传输可能丢失,这是由于传输介质的物理特性决定的,所以网络不可能被设计为“可靠的”(不是由于考虑“性能”原因而是压根做不到)。既然物理层无法提供可靠数据传输那么只能由协议提供可靠传输了,其中最有名的协议就是TCP了。TCP是基于IP的网络协议,它提供可靠、有序的数据传输。在数据传输之前客户端和服务器端通过三次握手建立连接,建立连接的就是双方交换Seq(数据包序号)、MSS(每个TCP数据包大小) 、Win(滑动窗口,一次可以确认多少个TCP数据包),连接建立完成后每个T
2020-11-10 15:29:05
771
原创 一组漫画告诉你Linux 系统有什么
今天,看到一组漫画,主要介绍Linux内核构成,可以帮助大家对Linux内核有个初步认知。TurnOff.us 是一个极客漫画网站,作者Daniel Stori 画了一些非常有趣的关于编程语言、进程、服务、云计算、Linux 相关的漫画。今天解读的便是其中的一篇。首先,我们来看看这幅漫画的全貌:主要包含三部分:地基、一层、跃层地基作为一个房子,最重要的莫过于他的地基,地基打的好房子才牢固,在这个图片里,我们也从最下面的地基开始看起:地基地基(底层)由一排排的文件柜组成,井然有序
2020-11-10 15:28:44
226
原创 MySQL OOM的排查思路及优化方法
OOM全称"Out Of Memory",即内存溢出。内存溢出已经是软件开发历史上存在了近40年的“老大难”问题。在操作系统上运行各种软件时,软件所需申请的内存远远超出了物理内存所承受的大小,就叫内存溢出。内存溢出产生原因多种多样,当内存严重不足时,内核有两种选择: 直接panic 杀掉部分进程,释放一些内核。 大部分情况下,会杀掉导致OOM的进程,然后系统恢复。通常我们会添加对内存的监控报警,例如:当memory或swap使用超过90%时,触发报警通知,需要及时介入排查。
2020-11-09 10:55:04
862
原创 科普:一文读懂IPv6是什么?
最近“IPv6”这个词频频登上新闻,“IPv6进入高速发展期”、“2020年IPv6要全覆盖”等等。各位围观的同学要问了,IPv6是什么?别着急,一篇文章带你读懂IPv6。IPv6是什么意思?IPv6通俗讲就是,第六代互联网。互联网是什么,不用多介绍了,大家整天刷微博、刷视频、玩游戏都是在上网。有同学就又有疑问了,为啥都第六代了?这就说来话长了。互联网的历史这里稍微普及一下,网络最开始是上世纪60、70年代在美国诞生的,那时候计算机非常大、数量非常少,为了共享计算机资源,大家把几台
2020-11-09 10:54:21
31332
原创 MYSQL源码解析:XA与二阶段提交
问题 业务上新增一条订单记录,用户接收到BinLake拉取的 MySQL 从库数据消息后,马上根据消息内的订单号去查询同一个MySQL从库,发现有些时候无法查到该条数据,等待大约500ms~1000ms后再去查询数据库,可以查询到该条数据。 注: BinLake为京东商城 数据库 技术部自研的一套订阅和消费MySQL数据库binlog的组件,本例所描述的问题是业务方希望根据订阅的binlog来获取实时订单等业务消息。 Binlog与内部XA 2.1 XA的概念 ...
2020-11-09 10:52:23
733
原创 MySQL大小写敏感总结
在MySQL中,数据库、表、triggers实际上都对应了datadir目录(或子目录)下的文件,因此,这些对象的名字是否大小写敏感主要是依赖于操作系统和文件系统的,因此这些内容在Windows中是大小写是不敏感的,而在大多数类Unix系统中是敏感的(Mac OS X除外),当然对于建立在这些类Unix系统上的MySQL,敏感性可以在一定程度上通过参数的修改来设定。1、column(包括别名)、 index、routine和 event names在所有平台上大小写都是不敏感的;2、l..
2020-11-09 10:51:43
570
原创 MYSQL高性能优化总结
1.1 前言在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。图 - MySQL查询过程1.2 优化的哲学优化有风险,涉足需谨慎1.2.1 优化可能带来的问题优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统。优化手段本来就有很大的风险,只不过你没能力意识到和预见到!任何的技术可以解决一个问题,但必然存在带来一个问题的风险!对于优...
2020-11-09 10:51:26
484
1
原创 MySQL并发复制演进
MySQL5.5及以前的复制一般主从复制有三个线程且都是单线程:Binlog Dump(主) --> IO Thread(从) --> SQL Thread(从)。1、master节点的Binlog dump Thread,当slave节点与master正常连接的时候,master把更新的binlog内容推送到slave节点。2、slave节点的I/O Thread ,该线程通过读取master节点binlog日志名称以及偏移量信息将其拷贝到本地relay l...
2020-11-09 10:51:09
251
原创 Kubernetes 儿童插图指南
翻译:云原生实验室英文原文:https://www.cncf.io/the-childrens-illustrated-guide-to-kubernetes/献给所有试图向孩子们解释软件工程的家长。很久很久以前,有一个叫 Phippy 的应用程序。她是一个简单的应用程序,由 PHP 编写且只有一个页面。她住在一个需要和其他可怕的应用程序分享环境的主机中,她不认识这些应用程序并且不愿意和他们来往。她希望她能拥有一个属于自己的环境:只有她自己和她可以称之为家的 Web 服务器.
2020-11-09 10:50:40
122
原创 MYSQL INNODB表压缩
压缩前提表压缩能提升性能,减少存储空间,主要是用在字符类型比较大的表上(VARCHAR,VARBINARY和BLOB和TEXT类型),且读多写少的情况下,如果你的应用是io密集型的,不是cpu密集型的,那么压缩会带来很多性能的提升,例如:数据仓库。innodb_file_format = Barracuda --模式支持压缩innodb_file_per_table = on --必须是独立表空间压缩原理InnoDB支持两种文件格式 Antelope(羚羊)和Barracuda(梭.
2020-11-09 10:49:21
716
原创 MYSQL GTID使用介绍
GTID定义:定义: GTID即全局事务ID(global transaction identifier),一个事物对应一个GTID 引入: MySQL-5.6.5开始支持,MySQL-5.6.10后开始完善 组成: GTID = server_uuid :transaction_id server_uuid 首次启动时 MySQL 会自动生成一个 server_uuid,并且保存到 auto.cnf 文件,一个实例对应一个server_uuid tra...
2020-11-09 10:48:14
477
原创 MYSQL架构调整的常用方式
一、不同级别挂载为同一级别低级从库往上级挂载比较简单,只要上一级停止复制线程,确保没有数据写入,记录此时被挂载的主库位点,按此位点change即可。如下:把192.168.1.4提升为1级从库,挂载到192.168.1.1下操作步骤:步骤 主库 一级从库 二级从库 IP 192.168.1.1 192.168.1.3 192.168.1.4 1 停止1级从库的复制线程 stop slave; ..
2020-11-09 10:40:47
150
1
原创 互联网行业如何评定绩效
KPI绩效考核,又称“关键业绩指标”考核法1. 企业战略—>可操作的任务目标—>明确部门的主要责任—>具体工作拆分2. KPI法符合一个重要的管理原理--“二八原理”,即80%的工作任务是由20%的关键行为完成的。3. KPI不是由上级强行确定下发的,也不是由本职职位自行制定的,它的制定过程由上级与员工共同参与完成,是双方所达成的一致意见的体现。SMART原则1. 绩效指标必须是具体的(Specific)2. 绩效指标必须是可以衡量的(Measurable)..
2020-11-03 09:38:20
911
原创 开源中间件Vitess助力MySQL实现分库分表
关于VitessVitess自2011年以来一直为YouTube的所有数据库流量提供服务,目前已被许多企业采用,以满足其生产需求。Vitess是一个用于部署、扩展和管理大型mysql实例集群的数据库解决方案。它的架构是在公共或私有云架构中高效运行,就像在专用硬件上一样。它结合并扩展了许多重要的mysql特性和nosql数据库的可伸缩性。Vitess可以解决以下问题1. 实现MYSQL的分片,应用只需很少的更改或无需更改2. 部署和管理大型数据库集群实例3. 裸设备到云的迁移Vi
2020-11-03 09:37:12
728
2
原创 分布式系统的一致性协议—Paxos、Raft介绍
什么是分布式系统?说到系统,接触过计算机的人可能并不陌生,首先联想到的就是计算机操作系统,最熟悉的如Windows、Linux等等。可以在硬件设备上安装操作系统,有了系统就可以安装并运行应用,这些系统有一个共同的特点就是只能安装到一台硬件设备。如果应用越来越多,应用不断更新,需要的计算能力越来越高,我们的电脑就会变的很慢,这时我们只有两种解决办法:初始化系统或换一台高配主机,但是这两种方法只是治标不治本,需要周期性频繁操作。对服务器来说,这两种方法代价都很高,那是否可以将大量廉价设备关联起来,共同构成
2020-11-03 09:34:43
576
原创 分布式文件系统—Google File System介绍
为什么要文件系统?我们知道如要要从磁盘取数据,需要告诉控制器从哪取,取多长等信息,如果这步由应用来做,那实在太麻烦。所以操作系统提供了一个中间层,它管理本地的磁盘存储资源、提供文件到存储位置的映射,并抽象出一套文件访问接口供用户使用。对用户来说只需记住文件名和路径,其他的与磁盘块打交道的事就交给这个中间层来做,这个中间层即为文件系统。但随着互联网企业的高速发展,一些业务对数据存储的要求越来越高,而且模式各异,如购物网站的大量商品图片,其特点是文件较小,但数量巨大;而类似于youtube,优酷这样的
2020-11-03 09:33:32
1039
原创 MacBook 运维软件
1、Outlook2、SecureCRT3、Firefox\Chrome\Maxthon4、远程桌面连接5、macpass6、GoLand\PyCharm\python\go7、VPN8、UltraEdit9、解优CRT配置
2020-11-03 09:29:49
1111
原创 分布式计算系统—MapReduce介绍
MapReduce最早是由Google公司研究提出的一种面向大规模数据处理的并行计算模型和方法。MapReduce的灵感来源于函数式语言(比如Lisp)中的内置函数map和reduce。简单来说,在函数式语言里,map表示对一个列表(List)中的每个元素做计算,reduce表示对一个列表中的每个元素做迭代计算。MapReduce极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。在MapReduce里,Map处理的是原始数据,可以是杂乱无章的,每条数据之间互相没有关系;
2020-11-03 09:26:08
725
原创 MySQL8.0 字典表增强的意义
MySQL中数据字典是数据库重要的组成部分之一,INFORMATION_SCHEMA首次引入于MySQL 5.0,作为一种从正在运行的MySQL服务器检索元数据的标准兼容方式。用于存储数据元数据、统计信息、以及有关MySQL server的访问信息(例如:数据库名或表名,字段的数据类型和访问权限等)。8.0之前:1、元数据来自文件2、采用MEMORY表引擎3、frm文件 存放表结构信息4、opt文件,记录了每个库的一些基本信息,包括库的字符集等信息5、.TRN,.TRG文件用
2020-11-03 09:20:48
292
原创 【MySQL】一些知识点(一)
1、统计信息原理我们知道执行计划跟同级信息有关,统计信息多久收集一次,如何收集?如果表太大不可能全部统计一遍,所以统计信息采用采样统计,InnoDB 默认会选择 N 个数据页,统计这些页面上的不同值,得到一个平均值,然后乘以这个索引的页面数,就得到了这个索引的基数。而数据表是会持续更新的,索引统计信息也不会固定不变。所以,当变更的数据行数超过 1/M 的时候,会自动触发重新做一次索引统计。在 MySQL 中,有两种存储索引统计的方式,可以通过设置参数 innodb_stats_persisten
2020-11-03 09:15:10
166
原创 【MySQL】开源数据闪回工具—binlog2sql介绍
一、binlog2sql介绍binlog2sql是国内MySQL大佬danfengcao使用python开发,许多MySQL爱好者参与改进的一款MySQL binlog解析软件。根据不同选项,可以得到原始SQL、回滚SQL、去除主键的SQL等。github地址为:https://github.com/danfengcao/binlog2sql该工具主要用于: 数据快速回滚(闪回); 从binlog生成标准SQL; 适用MySQL版本:MySQL5.6 、MySQL5.7
2020-11-03 09:11:33
3381
1
原创 【转】mysql各版本timestamp默认值
生产环境中部署着各种版本的MySQL,包括MySQL 5.5/5.6/5.7三个大版本和N个小版本,由于MySQL在向上兼容性较差,导致相同SQL在不同版本上表现各异,下面从几个方面来详细介绍时间戳数据类型。时间戳数据存取在MySQL上述三个大版本中,默认时间戳(Timestamp)类型的取值范围为'1970-01-01 00:00:01' UTC至'2038-01-19 03:14...
2019-08-15 18:33:26
16992
原创 MYSQL 必考面试题10道(多选)
1、MySQL偶尔会出现OOM(内存溢出)现象,导致MySQl服务重启,以下哪种方式能有效缓解OOM的情况发生()A.适当调低innodb_buffer_pool_size大小,5.7之前需要重启MySQL服务。B.降低并发,避免查询分组排序和更多table cache。C.开启swap。D.将一个实例下库表拆成多个库表(分库分表)。2、INSERT BUFFER即合并插入缓存,从in...
2019-08-05 10:19:40
2465
原创 【mysql】show engine innodb status 解读
InnoDB是MySQL使用最多的存储引擎,通常InnoDB状态可以通过show engine innodb status\G查看。由于MySQL不同版本采用InnoDB引擎版本不同,5.6后对show engine innodb status信息进行了优化,本文环境为5.7。MySQL版本 InnoDB引擎版本 5.1.x 1.0.x版本(官方称为InnoDB P...
2019-06-26 13:01:46
2880
2
percona-toolkit-3.0.11_x86_64.tar
2018-07-31
keypass4.7.11
2018-05-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人