自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

翔云

Just try, don't shy.

  • 博客(720)
  • 资源 (15)
  • 收藏
  • 关注

原创 sqlalchemy QueuePool limit of size 3 overflow 20 reached, connection timed out, timeout

开发过程中,最郁闷的不是代码一直报错,而是明确知道代码执行有异常,但就是没有具体的错误报出来,无法进一步定位到问题的根因。因此,平时工作中,养成良好的编码习惯是多么重要。例如,在代码有异常的地方,打印下日志。这个看似细小的动作,会给以后排查问题带来莫大的帮助。并且即使使用监控组件上报错误,也记得在本地打印下日志,方便问题追查。更何况,第三方监控组件可靠性不是百分之百的。万一,监控组件有个bug,把代码中的错误吞掉了。那更是增加问题排查的难度。最近就遇到了类似的问题。我们在代码中捕获异常后,先是使用

2020-09-20 15:00:58 1625

原创 Orchestrator 集群扩容后新节点无法加入集群 raft: Remote peer 10.23.116.176:10008 does not have local node

Orchestrator是基于Raft的分布式集群。现在原有三节点集群基础上,新扩容两个节点。所有节点更新配置文件,并重启后,新的节点无法加入集群。新节点报错信息;2020/09/04 15:22:53 [WARN] raft: Heartbeat timeout from "" reached, starting election2020/09/04 15:22:53 [INFO] raft: Node at 10.77.243.28:10008 [Candidate] entering Can

2020-09-06 15:56:58 363 4

原创 关于golang database_sql 包

golang中的标准库database/sql 包为SQL和类SQL数据库的操作提供了通用的接口。database/sql 包 必须与数据库driver 配套使用。目前已有的SQL database drivers 见链接。这里面就包括比较常用的MySQL driver go-sql-driver/mysql 。database/sql 包的设计可以说是很巧妙。它对于上层应用提供了标准的API接口,对下层驱动driver暴露了简单的驱动接口。并且实现了连接池的管理。这意味着,不同数据库的驱动只需

2020-09-05 22:58:38 893

原创 MySQL主从集群搭建实战

关于MySQL主从集群搭建,前面已经有一篇文章–MySQL主从集群搭建讲过,文中是在同一个机器上搭建的,并且当时以主库上没有原始数据为例介绍的。本文介绍的场景,是主库上已经有数据了,更贴近实际生产环境的应用场景。将要搭建的集群实例信息如下:角色IP端口主库192.168.1.813306从库1192.168.1.823306从库2192.168.1.8333061.备份主库数据在主库上执行备份:$mysqldump --master-data=2

2020-08-15 11:30:50 216

原创 [解惑]MHA基本原理

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在 MySQL 故障切换过程中,MHA 能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。MHA架构它由两部分组成:MHA Manager(管理节点)和

2020-08-15 10:57:39 6025

原创 里程碑--学会蝶泳

从上周开始,get了一项新技能–蝶泳。蝶泳,总给人一种流畅的感觉,游起来,就像是海豚一样,身体曲线的美自然展现出来。在水下游一会,接着飞起来,飞一会。非常的酷。这是自由的象征。这让我想起了大鲲,游着,游着,突然发现,原来可以飞,于是就化作了大鹏。...

2020-08-09 22:19:34 173 1

原创 orchestrator中的raft snapshot操作

1.snapshot是什么snapshot是Raft log压缩的方式。压缩内容主要是Raft log 和应用状态数据(即orchestrator 中backend DB)。snapshot作用:定期清理raft log,减少空间占用备份raft节点状态,新节点加入时,快速应用备份和加入集群对于具体业务的影响,例如在orchestrator,原先从CMDB中导入的数据,可以快速在新节点或落后节点恢复切换时的防flapping,依赖topology_recovery数据表记录等2.什么时候

2020-08-09 22:10:50 359

原创 使用binlog恢复被删除的数据

上一篇文章关于MySQL binlog二进制日志中,对binlog是什么,日志结构,如何查看等进行了介绍,本文介绍如何将使用binlog进行数据恢复。清空binlog清空binlog,便于后续测试:reset master数据写入对数据库进行更新操作:mysql > create database test;mysql > use test;mysql > create table test001(id int,name varchar(10));mysql &gt

2020-08-02 23:26:27 1089

原创 关于MySQL binlog二进制日志

说起MySQL binlog,并不陌生,经常听到DBA们提到,可以说是如雷贯耳。那binlog到底是什么,有什么用途,以及如何使用,本文将围绕这个主题展开。1.binlog是什么与MySQL Server相关的日志主要有4种:Error log, 用来记录MySQL发生错误General Query log,记录MySQL执行的每条SQL,非常详细,但对MySQL性能有影响,一般不会开启,除非排查问题。Slow Query log,即慢查询日志,用来记录执行时间超过一定阀值SQL信息,这个经常

2020-08-01 22:41:33 656

原创 无锁加载配置

动态加载配置,是服务中常用的功能。动态加载配置是指不重启服务情况下,使配置文件的改动或者其他方式的改动生效。一般普遍使用的方式是,加锁方式。其步骤大体过程如下:从配置文件中读取配置到新的配置变量加锁将新的配置变量赋值给已有的配置变量解锁使用新的配置接下里,介绍一种方式,即无锁加载配置。golang中的atomic 提供了大量底层同步原语。其中的Value就是本文的重点。下面是加载配置的例子:package mainimport ( "log" "sync/a

2020-07-26 12:37:38 245

原创 go tool trace 浏览器空白页问题 trace shows blank page

问题使用go tool trace时,会打开浏览器显示相关页面,但有很多链接无法打开,显示空白页。页面中的报错:Uncaught ReferenceError: tr is not defined at trace_viewer_html.js:595Uncaught ReferenceError: tr is not defined at onResult (trace?goid=3126858:73) at trace?goid=3126858:57在github

2020-07-12 16:37:17 999

原创 godoc的使用

如何在本地轻松查看go document?如何解决godoc无法找到的问题:GolangDoc: Could not find godoc, (hint: is godoc installed?)本文将介绍如何使用godoc查看go语言文档。安装godocgo get -v golang.org/x/tools/cmd/godoc启动Go Documentation Servergodoc -http=:6060在浏览器中,打开urlhttp://localhost:go doc

2020-07-11 16:43:48 1516

原创 Error 1390: Prepared statement contains too many placeholders

当大量数据同时插入数据库时,出现了一下报错:Error 1390: Prepared statement contains too many placeholders经过搜索,发现这个问题,是由于SQL语句中占位符数量限制导致的。MySQL官方文档 error 定义:Error number: 1390; Symbol: ER_PS_MANY_PARAM; SQLSTATE: HY000Message: Prepared statement contains too many placehol

2020-07-05 15:42:07 6419 2

原创 orchestrator raft leader频繁变化问题

最近在使用orchestrator的过程中,遭遇了严重的问题。最初上线的几个月里,raft leader非常稳定。但随着时间的推移,raft leader 频繁变化的问题就爆发了。leader的变化,直接原因,就是leader没有按时发送heartbeat,从而触发了选举机制。第一个怀疑的原因,就是网络抖动,出现丢包。但是,通过查看监控数据,发现没有丢包迹象。接着,通过tcpdump抓包,也证实没有数据丢失。第二个怀疑的是,raft的代码实现有问题。查看github仓库,已经很长时间没有relea

2020-07-04 23:26:59 484 3

原创 如何查看golang程序中有哪些goroutine 正在执行

查看 正在执行的goroutine分两步:1.程序中引入pprof pakage在程序中引入pprof package:import _ "net/http/pprof"程序中开启HTTP监听服务:package mainimport ( _ "net/http/pprof" "net/http")func main() { go func() { log.Println(http.ListenAn

2020-06-27 16:42:13 9193

原创 golang程序性能分析

pprof和trace 是golang程序性能分析中经常用到的两个工具。本文简单介绍其使用方法。1.程序中引入pprof package对于长期运行的的后台程序来说,使用package net/http/pprof 是比较便捷的选择。使用方法非常简单,只要import package的地方加上:import _ "net/http/pprof"就可以使用提供的接口包括:"/debug/pprof/""/debug/pprof/cmdline""/debug/pprof/profile"

2020-06-27 16:30:41 4102

原创 golang mysql unexpected EOF(invalid connection)

1.问题在使用go-sql-driver/mysql连接MySQL 服务过程,隔一段时间,会报MySQL连接错误:[mysql] 2020/05/09 02:02:01 packets.go:36: unexpected EOF2020-05-09 02:02:01 ERROR goroutine 59835131 invalid connection排查下来,是由于使用无效的连接导致的。基本场景是:client 连接MySQL,执行SQL后,不立刻关闭连接。client保留连接在连接池中。

2020-05-24 15:39:45 9099

原创 工作强度指数级增长

从2月份上班以来,工作任务一波接一波。常态就是,本期任务还没完成,下期需求又来了。坐在工位上,你就舍不得起来。分秒必争啊,因为TODO列表还很长。。。项目前期,撰写过一些技术文档,做过很多测试。但这仍是不够的。一旦需要上线,大规模测试是必需的。大规模测试的效果还是很明显的。各种测试用例一起跑,各种问题一起报。初期的时候,接连报错。每个错误都需要排查半天。一天下来,能解决两三个问题,已经是高效率了。一边开发新功能,一边排查线上报错原因。...

2020-05-23 12:48:12 875

原创 如何查看MySQL当前连接数

在MySQL中,连接建立后,会分配一个线程负责。一个连接,就是一个线程。可以通过查看MySQL状态参数,查看当前的连接数:mysql> show status like 'Threads%';+-------------------+-------+| Variable_name | Value |+-------------------+-------+| Thread...

2020-04-05 21:32:11 4813

原创 Error 1040 Too many connections

在使用MySQL的过程中,应用程序有时会碰到错误:Error 1040 Too many connections这个错误表示,已经达到MySQL的最大连接数。什么是MySQL的最大连接数?1.最大连接数的定义max_connections是指MySQL 同时处理的连接的最大数量。更确切一些,是指MySQL同时处理的连接数量。这些连接,包括正在建立的连接,已建立的连接, 以及正在断开的...

2020-04-04 22:38:31 4348

原创 iptables基本用法

iptables是一个很好用的数据包过滤工具,可以针对host,port等进行数据包拦截等操作。本文主要介绍iptables的两个操作:drop和reject.1.dropdrop顾名思义,就是丢包,不回复任何数据。设置策略:iptables -A OUTPUT -p tcp --dport 3306 -d 192.168.0.101 -j DROP查看策略:[root@local...

2020-03-30 21:59:27 1030

原创 MySQL基本授权grant操作

本文介绍MySQL权限的基本操作。授权MySQL用户包括user和host两部分。user与host是一起出现的,即权限指的是某个用户在某个主机或某些主机上的权限。首先,创建用户:mysql> CREATE USER 'root'@'%' IDENTIFIED by 'mysql123456';接着,授权权限:mysql> GRANT ALL on *.* to 'r...

2020-03-29 22:01:01 1627

原创 分布式共识协议RAFT基本原理

为了提升服务的高可用、高性能,通常采用多节点架构。一个节点时候,数据是一致的。多个节点的情况下,如何保证数据一致性呢?本文介绍的RAFT协议,就是解决多节点情况下,数据一致性问题。1.基本概念节点有三种角色:leader, candidate, 和follower.在Raft选举中,有两个控制选举的超时设置: 选举超时(election timeout)和心跳超时(heartbeat t...

2020-03-29 21:34:31 533

原创 slave_net_timeout, MASTER_HEARTBEAT_PERIOD, MASTER_CONNECT_RETRY,以及 MASTER_RETRY_COUNT设置和查看

在主从复制中,有几个参数是非常重要的,包括slave_net_timeout, MASTER_HEARTBEAT_PERIOD, MASTER_CONNECT_RETRY,以及 MASTER_RETRY_COUNT。slave_net_timeout表示slave在slave_net_timeout时间之内没有收到master的任何数据(包括binlog,heartbeat),slave认为...

2020-02-27 23:37:46 2937

原创 show slave status

在从库上,使用show slave status,可以查看主从复制状态。包括主库定制,IO thread、 SQL thread连接状态,以及bin log位置等。>show slave status\G*************************** 1. row *************************** Slave_IO_State...

2020-02-24 23:25:23 2500

原创 吐槽一下python

关于python,优点有很多。例如,编码灵活,书写随意。印象最深的就是,Duck Type。也就说,如果使用会走路和会飞来衡量鸭子,那么如果一个物体,走路像鸭子,飞起来像鸭子,那么它就是鸭子。def test(duck): duck.Walk() duck.Fly()class A(object): def Walk(): print("walk...") def Fly...

2020-02-24 22:26:40 317

原创 制作docker映像(三)--golang应用程序

本篇文章与制作docker映像(二)–golang应用程序的不同之处在于,不会拷贝程序源代码到容器中,而是通过挂载数据卷的方式,使容器与容器共享文件。1. Dockerfile首先新建项目目录,目录中的文件如下:[lanyang@localhost docker_demo]$ cd myapp3[lanyang@localhost myapp3]$ lltotal 8-rw-rw-r-...

2020-02-16 22:16:51 296

原创 Mac OS安装虚拟机

Mac OS上进行开发,很多时候需要Centos或其他系统进行测试。可以在Mac OS上安装virtualbox,在virtualbox中安装CentOS或其他系统,非常方便,记录下。virtualbox官网链接。...

2020-02-15 20:51:54 267

原创 Docker镜像加速

在构建docker的过程,需要从远程仓库DockerHub拉取需要的映像,由于网络原因,会比较慢。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:Docker官方提供的中国镜像库:https://registry.docker-cn.com七牛云加速器:https://reg-mirror.qiniu.com当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个...

2020-02-15 20:19:56 1002

原创 制作docker映像(二)--golang应用程序

本文以简单golang应用为例,介绍docker映像制作。1.创建Dockerfile工程目录结构如下:[lanyang@localhost docker_demo]$ mkdir -p myapp2[lanyang@localhost docker_demo]$ cd myapp2/[lanyang@localhost myapp]$ ll$ lltotal 8-rw-rw-r-...

2020-02-15 19:50:56 456

原创 制作docker映像(一)--python应用程序

本文以简单Python应用为例,介绍docker映像制作。1.创建Dockerfile工程目录结构如下:[lanyang@localhost docker_demo]$ mkdir -p myapp[lanyang@localhost docker_demo]$ cd myapp/[lanyang@localhost myapp]$ lltotal 8-rw-rw-r--. 1 la...

2020-02-15 19:49:56 646

原创 科普下病菌和病毒

导致人类生病的两大主要威胁:病菌和病毒。这里科普下”病菌“和”病毒“的概念。急性肠炎,鼠疫,就属于病菌感染。平时,经常听到的抗生素,是用来治疗病菌引起的疾病的。而疱疹,肝炎,狂犬病,就属于病毒导致的疾病。我们从”生物“的分类说起。自然界中的生物分为3大类,动物、植物,以及微生物。而微生物大体分为细菌、真菌以及病毒等。这里的”病菌“是使人致病的菌类的统称。而病毒,则专指”病毒“这一...

2020-02-08 22:56:35 1293

原创 centos环境下安装docker

$ ps -ef| grep dockerroot 12486 1 0 23:21 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.socklanyang 12639 10783 0 23:21 pts/0 00:00:00 grep --colo...

2020-01-31 10:37:30 409

原创 change master to到一个不存在的主库或主库无法连接

本文测试当主库无法连接时,从库的复制状态。1.设置主库在从库上, 将主库设置为//127.0.0.1或一个无法连接的主库:MASTER_HOST='//127.0.0.1'或MASTER_HOST='_'设置复制:mysql> stop slave;Query OK, 0 rows affected (0.00 sec)mysql> mysql> CHA...

2020-01-29 14:35:40 791

原创 MySQL主从集群搭建

在本文中,使用单机上多个实例来搭建一个主从集群。基于的MySQL版本是5.7.27。单机多实例的具体安装过程可参考文档单机安装MySQL多实例。将要搭建的集群实例信息如下:角色端口主库3306从库13307从库233081.创建复制账号在主库上,创建复制用的账号,并赋予相应权限:mysql> CREATE USER 'rep'@'%' ...

2020-01-28 23:15:49 444

原创 单机安装MySQL多实例

很多时候受限于资源限制,需要在单机上安装多个MySQL实例。本文基于MySQL 5.7.27,介绍如何在单机环境下安装多个MySQL实例。文件的方案,建立了3个实例,端口分别为3306, 3307, 3308。1.创建MySQL用户账号首先创建mysql用户组和用户。并设置不允许登录。# groupadd mysql# useradd -s /sbin/nologin -g mysq...

2020-01-28 15:38:22 1680 7

原创 2019年度总结

用一百分总结这一年,只能给自己打80分。工作上半年,由于各方面的原因,进度比较缓慢。更多的还是项目的准备阶段。继续阅读项目代码,深挖设计意图,撰写技术文档。下半年,进度加快,开始接入平台,做接入平台相关的开发。并完成两个重大需求的开发和测试工作。通过不断的测试和摸索,对于源码的理解更加深刻。12月初,以技术文档的形式总结这一阶段的工作,比较棒。在参与github的开源项目中,多次提i...

2020-01-04 12:32:26 624

原创 go goroutine id

使用go语言开发过程,很多情况,需要了解goroutine的执行情况,尤其在大量并发场景中,需要根据日志跟踪任务的执行情况,这个时候可以大致根据goroutine id来跟踪程序执行的状态。在go语言中,没有获取goroutine id(简称goid)的API。为什么没有提供呢?原因如下:为了避免采用Goroutine Id当成Thread Local Storage的Key。强烈...

2019-12-28 23:21:24 922

原创 go语言中 json转换--nil

go语言中如果一个变量的值为nil,是否能否为json?如果能否转换,转换后的结果是什么?下面直接看下例子。package mainimport ( "encoding/json" "fmt")func main() { marshalTest()}func marshalTest() { b, err := json...

2019-12-28 22:12:40 2311

原创 go module 使用举例

在go语言,从1.11开始,引入module,进行版本管理。通过使用module,工程目录的位置不用必须放在GOPATH下。本文介绍 module的使用。下文中用的Go版本是1.13。1. go mod命令通过go mod可以进行modules的相关操作。首先看下 go mod命令:$ go help modGo mod provides access to operations ...

2019-12-22 17:56:43 344

mysql-replicant-python.zip

书中使用的示例代码下载

2021-08-29

git post-update

服务器代码库工作区不更新问题解决,具体问题描述请参看 http://blog.csdn.net/lanyang123456/article/details/76378229

2017-07-30

Spreadsheet-ParseXLSX-0.16.tar.gz

该包用于解决无法找到Spreadsheet-ParseXLSX的问题,具体安装方法可参考http://blog.csdn.net/lanyang123456/article/details/41519501

2014-11-26

U盘安装XP_Win7系统指南

本文档主要讲述了如何使用U盘进行系统的安装。并针对安装系统过程遇到的问题进行了解答。希望给有需要的人一点帮助。

2014-07-12

Linux下的C++标准库

Linux下的std C++ 标准库 下载后,解压,将文件拷贝到/lib或者/usr/lib目录下,可以解决提示libstdc++。so找不到的问题

2013-06-04

sqlite嵌入式编程实例

本资源给出了linux+ARM 环境下SQLite数据库嵌入式编程实例。 详细内容请参考 Linux下SQLite数据库移植与编程 . http://blog.csdn.net/lanyang123456/article/details/7680670

2012-06-20

Linux下sqlite3编程实例

本文件给出了sqlite编程实例源码及其执行结果。其中,源码实例中包括了最常用的一些API,非常适合对于初学者学习使用。 有关SQLite安装与编程请参考下面的帖子 Linux下SQLite数据库安装操作与编程 . http://blog.csdn.net/lanyang123456/article/details/7680532

2012-06-20

Linux RS485 通信代码

本资源给出了Linux下进行RS485通信的实例代码

2012-03-20

rt5370驱动

腾达 无线USB网卡 型号:W311M 芯片类型:rt5370 该驱动是linux下针对rt5370 rt2800等芯片的驱动,可以通过交叉编译移植到嵌入式开发板。

2012-03-20

Linux系统下dhcp源码

提供Linux系统下DHCP源码下载 dhcp-3.1.1.tar.gz

2012-03-16

ndiswrapper 最新版本下载 ndiswrapper-1.57.tar.gz

ndiswrapper是Linux用于安装无线网卡驱动的一款软件。 ndiswrapper调用Windows下的驱动为Linux系统所用。

2012-03-07

Linux下使用USB转串口获取GPS数据

本文档,就linux系统下如何使用GPS设备(USB插口)读取GPS数据做了比较详细的阐述。主要介绍了如何使用USB转串口驱动,以及如何打开ttyyUSB0,如何读取数据等等。

2012-03-01

深入理解linux内核 第三版 Daniel P. Bovet &Marco Cesati 勘误

深入理解Linux内核 第三版是经典的linux内核分析的圣经,里面分析透彻,解析明了。 书中有些错误影响阅读,经过多方收集,特列出。

2011-03-07

考研数学公式大全 最全面的

最全面的公式集合,一个很好的参考工具,涵盖高数 概率论 线性代数

2009-05-23

空空如也

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

TA关注的人

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