db-topology:显示MySQL/MariaDB复制的的拓扑结构

尽管pt-slave-find是个很好的主从拓扑发现工具,但命令行看起来毕竟不太直观,db-topology是我写的一个python小工具,可以以图方式直观显示MySQL/MariaDB的拓扑结构.如下图: 一主两从 级联复制 基本思路: 脚本里指定user和password,这个user能连上所有节点,且至少具有replication slave、replication client、process权限,通过 show slave status; show slave host; select host from INFORMATION_SCHEMA.PROCESSLIST where command = 'Binlog Dump' 递归找出它的所有master和slave. 依赖: Python3 Connector/Python NetworkX 使用方法 $ git clone https://github.com/leafonsword/db-topology.git $ cd db-topology…

一道Redis面试题

这道面试题是这样子的: 请用Redis和任意语言实现一段恶意登录保护的代码,限制1小时内每用户Id最多只能登录5次。具体登录函数或功能用空函数即可,不用详细写出。 我乍看下觉得像是面试开发的题~ 花了一下午了解了下redis,发现这货似乎蛮简单的,而且有哈希和列表数据结构.我一开始想用哈希,每个用户为key,登陆时间为value,统计下now和now-1h之间的key数目是否大于5,类似这样的sql select count(user) from user_log where access between date_sub(now, interval 1 hour) and now(). 但感觉这种范围查找会比较慢.后来觉得用列表是个好方法:列表中每个元素代表登陆时间,只要最后的第5次登陆时间和现在时间差不超过1小时就禁止登陆.用Python写的代码如下,感觉蛮简练的,如果网友有更巧妙的方法,欢迎指教. #!/usr/bin/env python3 import redis import sys import time r…

从10s到0.2s--个人博客提速简明手记

近期将博客从DigitalOcean迁移到Linode了,迁移完毕后顺便优化了下主机,效果很明显,访问速度从10s降低到0.2s,有图有真相: Yslow的评分是95分! 以下是我的一些总结: 一.主机选择 1.地理位置--响应时间VS带宽 通常一个误区是新加坡、日本、香港的VPS速度要比美国快,但这里的快只是因为地理位置接近而响应时间很快,也即ping显示数值小;但因为主机商的带宽提供各异和近几年国人对亚洲机房的蜂拥,在晚间访问速度并不一定比美国主机具有优势. 2.DNS 现在VPS厂商大都顺带提供域名解析服务,譬如linode的是nsX.linode.com;假如一个用户第一次访问你的博客,而假如他的本地宽带运营商没有缓存你的域名记录,解析就需到就需先到VPS提供商那,假如VPS提供商是海外的那解析时间还是比较长的;所以使用国内dns解析服务(如dnspod)可能是个比较好的提速选择. 3.虚拟化 一般OpenVZ的这种指令级虚拟化的提供商都会超卖,看起来实惠,其实很不稳定;KVM、XEN能较好的保证稳定性. 二.系统优化 1.系统选择 这没什么说的,Linux是标配了,windows用的少,也贵. 2.Linux优化相关 limits…

SSD是否该开启'nobarrier'标示?

在笔记本上用了2年的SSD,这几天突然想了个问题--挂载SSD是否该开启'nobarrier'标示?问了朋友和网友,众说纷纭,查找了一些资料,做了总结--It depends! Depending什么?要搞清楚Depending什么,先要明白何谓barrier? 何谓barrier 引用mount manual: barrier=0 / barrier=1 This disables / enables the use of write barriers in the jbd code. barrier=0 disables, barrier=1 enables (default). This also requires an IO stack which can support barriers, and if jbd gets…

给nautilus添加"修复PDF字体"右键

Linux下看PDF是件麻烦事,假如没有内嵌字体而系统又不包含指定的字体,显示效果就很很差,针对中文字体显示问题这篇文章可以参考,但最近我遇到无内嵌英文字体的pdf显示问题:虽然我系统中有从win8拷过来的字体,但一些字体比较不常见,显示效果很差如下: Evince提示: ghostscript能将未嵌入字体替换为支持的字体,但每次命令行操作太麻烦,于是想在natilus下添加一个右键菜单,鼠标点点就行~ 具体步骤 官方说nautilus添加菜单有两种办法:natilus-script和nautilus-extension,不过都要自己写脚本,发现第三方的nautilus-actions能够很方便的定制出右键菜单,遂试之~ 1.安装nautilus-action sudo pacman -S nautilus-actions 2.通过nautilus-actions-config-tool来定制 先指定名字、描述、图标等基本信息: 然后是运行的命令 其实等同于 /usr/bin/gs -o 输出pdf -dPDFSETTINGS=/prepress -sDEVICE=pdfwrite 源文件 至于%d等意思见下图: 更聪明的显示--只对pdf文件出现'Repair PDF Font'右键: 3.最后 保存后…

Galera Cluster官方安装文档的两点小错误

这两天搭建Galera Cluster中发现官方文档可能没及时更新,有两点小错误,虽然是小问题,但对第一次接触的新手来说还是蛮恶心的~记录之,方便后来人。 1.在installationmysql章节 无论deb还是rpm安装文档都只提到安装wsrep patch过的MySQL,如下: 而其实Galera也要安装,如下面命令: dpkg -i galera-25.3.5-i386.deb 2.在createcluster的3.6.4. Adding Nodes to a Cluster章节 文档如下: 而这样配置的话会出现如下错误: 2014-05-24 17:18:22 6999 [ERROR] WSREP: gcs/src/gcs_backend.c:gcs_backend_init():99: Invalid backend URI…