Ansible无法连接老旧机器

管理的DB系统版本不统一,使用Ansible管理的时候发现有的连得上、有的连不上,发现连不上的机器都比较老旧--SUSE Enterprise Server 10,环境列举如下(本地机器是运行Ansible的机器、远端机器是要用Ansible管理的机器): 本地机器:OpenSSH_5.3p1 远端机器:SSH Secure Shell 3.2.9.1 & Python2.4 运行: ansible oldserver -i hosts -m ping 报错: testserver2 | FAILED => FAILED: ('Bad authentication type', [u'publickey', u'keyboard-interactive']) (allowed_types=[u'publickey', u'keyboard-interactive']) 这错误之前我用Fabric也遇到过,表现为终端一直提示输入密码,但明明密码正确就是登陆不上,看来是paramiko库对SSH…

使用Arrow生成一段连续的日期时间

日常工作中经常需要按天分表生成某一年的全部表,如下: table_20150101 table_20150102 ...... ...... table_20151231 虽然Python自带的datetime能完成这样的工作,但datetime使用不太简洁直观,可能需要如下的代码: #!/usr/bin/env python3 import datetime dt = datetime.date(2015,1,1) end = datetime.date(2015,12,31) step = datetime.timedelta(days=1) while dt < end: print(dt.strftime('%Y-%m-%d')) dt += step 而Arrow这个第三方模块就能很方便的实现上诉场景,如下: #!/usr/…

使用MyDumper迁移InnoDB到TokuDB

最近几台微信买家相关数据库数据量增长迅猛,空间紧张,因而考虑迁移到压缩率超高的TokuDB,一个比较流行的迁移方法是用mysqldump导出同时修改InnoDB字符串到TokuDB: mysqldump ...... | sed -e 's/^) ENGINE=MyISAM/) ENGINE=InnoDB/' > dump.sql 但这样导出的单一文件恢复时太慢,虽然有各种第三方方法能使mysqldump导出多个文件,但复杂了些;而mydumper因为并行特性是一个更理想的迁移工具,但0.6之前因为锁时间太长导致实际不可用,而0.6后大大降低了锁时间,因而这次我尝试使用MyDumper来迁移InnoDB到TokuDB,我的思路是: 因为MyDumper导出的文件是schema和data分开的,因而可以先导入schema,修改成TokuDB引擎后再将数据导入 以下是步骤: 1.导出文件 mydumper ...... -o /data/dump 2.将schema和data文件分离 mkdir /data/dump_schema mv /data/dump/*schema* /data/dump_schema mv…

使用q和pt-find了解机器上的库表

当DBA换工作到新环境时,肯定需要大概了解下各台机器有什么库表,如下sql就能打印这台机器上所有非系统自带的库名和表名: select TABLE_SCHEMA,TABLE_NAME from information_schema.tables where TABLE_SCHEMA not in ('mysql','information_schema','performance_schema'); 但有这样一种情况--机器因为分库分表虽然有几十个库和成百上千的表,但大部分库表类型其实是相同的,如下所示: +--------------+-------------------+ | db_a01 | tab_c01 | | db_a02 | tab_c02 | ............ ............ | db_b10 | tab_d09 | | db_b10 | tab_d10 | +--------------+-------------------+ 上诉表格虽然有20个库(db_a01~db_a10、…

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…