MySQL主从延迟解决方案

版本:5.7.23

现象

过一段时间会发现从库追不上主库,而且差距越来越大

此时通过在主从库上分别查询:select * from information_schema.processlist where info is not null order by host 得知:

  1. 主库一直有不断的增删改操作
  2. 从库一直只有查询操作

查从机:show slave status,得知:

[阅读全文]

AWS-EC2搭建hugo+caddy,安装shadowsocks手记

关于购买预留实例

老外们的思维方式不同,在中国其实就是购买实例的时候,选择费用方式为包月包年 预留实例在左边菜单的入口处购买

初始化服务器

原来的服务器到期了,去年mysql+go+vue架构换成了github+caddy+hugo,配置要求不那么高,所以换了个便宜点新实例(2vcpu+2G+8G,这么低的配置都感觉有些浪费了),初始化过程如下:

[阅读全文]

关于mysql驱动的DSN字符问题

此次重构发现之前的loc参数一直为空,不太记得是当时刻意为之,还是当时发生了错误未解决 所以在生产上就加了配置asia/shanghai,报错了:invalid DSN: did you forget to escape a param value? 这个好办,转换一下就行了,改成:asia%2Fshanghai

[阅读全文]
golang  mysql  DSN 

MySQL中间件选择

MyCAT(1.6.5)

先天不足,发现部分应用有兼容性问题

  1. XXL-JOB官方文档有说明:如果mysql做主从,调度中心集群节点务必强制走主库
  2. flyway也不支持!

TiDB(2.0版)

对运行环境硬件配置要求高得变态,某公司的服务器上了高性能SSD仍然不能满足IOPS要求(<40000)

[阅读全文]

Twitter snowflake算法

算法原理

  • 1位符号位,始终为0;
  • 41位时间戳,一般实现上不会存储当前的时间戳,而是时间戳的差值(当前时间-固定的开始时间),这样可以使产生的id从更小值开始;41位时间戳可以使用69年,1L«41/(1000L*60*60*24*365) = 69年
  • 10位节点位,前五位数据中心标识,后五位机器标识,可以部署1024个节点
  • 12位序列号,支持同一个节点同一毫秒可以生成4069个ID

golang learning

一个有关Golang变量作用域的坑

对于使用:=定义的变量,如果新变量p与那个同名已定义变量 (这里就是那个全局变量p)不在一个作用域中时,那么golang会新定义这个变量p,遮盖住全局变量p

[阅读全文]
golang 

使用Nexus3搭建docker registry

Nexus 3.0 的三种docker仓库:

  1. docker (proxy) 代理和缓存远程仓库 ,只能pull
  2. docker (hosted) 托管仓库 ,私有仓库,可以push和pull
  3. docker (group) 将多个proxy和hosted仓库添加到一个组,只访问一个组地址即可,只能pull

前提:安装配置好了Java运行环境

[阅读全文]

cmd+h和cmd+m

  • cmd + m:是对「窗口」的操作,cmd + m是最小化窗口
  • cmd + h:是对「应用程序」的操作,cmd + h是隐藏当前程序
  • cmd + m:最小化当前窗口
  • cmd + option + m:会最小化当前程序所有窗口
  • cmd + h:隐藏当前程序
  • cmd + option + h:隐藏除当前应用程序之外所有程序窗口

golang如何进行交叉编译

问题

golang如何在一个平台编译另外一个平台可以执行的文件。比如在mac上编译Windows和linux可以执行的文件。那么我们的问题就设定成:如何在mac上编译64位linux的可执行文件。

[阅读全文]

docker registry

registry和registry-web配合使用Token认证的问题

之前使用的是htpasswd方式,但registry-web需要使用token方式。

其原理很重要,需要搞明白:

  • 先生成key和密钥,分别部署于registry和registry-web
  • 在registry中配置token认证方式realm地址为registry-web的地址
  • 在registry-web中配置的url为registry的api地址

当前测试可用的配置:

[阅读全文]