MySQL根据离线binlog快速“闪回”

2017-03-14
阅读 3 分钟
5k
昨天突然有个客户说误操作,自己删除了大量数据,CTO直接将我拉到一个讨论组里,说要帮他们恢复数据。他们自己挖的坑,打算让开发那边根据业务日志去恢复,被告知只记录的删除主键这样的信息,物理删除,无能为力。

监控MySQL你还应该收集表信息

2017-03-14
阅读 3 分钟
6.5k
也许你经常会被问到,库里某个表最近一年的内每个月的数据量增长情况。当然如果你有按月分表比较好办,挨个 show table status,如果只有一个大表,那估计要在大家都休息的时候,寂寞的夜里去跑sql统计了,因为你只能获取当前的表信息,历史信息追查不到了。

一种直观记录表结构变更历史的方法

2017-03-13
阅读 2 分钟
4.5k
说个自己的经历,需要改现网的一个索引来看优化的效果,因为存在风险,不会一次全改,先只改1个库,然后逐步放开。前后验证效果可能花上一两周的时间,除非实现完整的记录了当时的ddl语句和对应的库,否则根本难以记得。这就完全依赖于个人的习惯及能力。

READ-COMMITED 与 REPEATABLE-READ 事务隔离级别之间的异同

2017-03-13
阅读 2 分钟
13.8k
经常会被问到 InnoDB隔离级别中 READ-COMMITED和REPEATABLE-READ 的区别,今天就整理了一下,不再从“脏读”、“幻读”这样的名词解释一样去回答了。

遇到腾讯云CDB连接字符集设置一个坑

2016-11-23
阅读 2 分钟
4.8k
最近一个与qq有关的服务迁到腾讯云上,相应的数据库也要从原阿里云RDS迁移到腾讯云CDB上,经过一番摸索,不带任何政治色彩的说,CDB跟RDS相比弱的不止一条街。比如看个错误日志还要提工单,数据库访问没有白名单,数据传输服务竞不支持源库的开启GTID,自带的后台管理是phpMyAdmin,要临时看查询日志也要提工单,当然这...

MySQL非主从环境下数据一致性校验及修复程序

2016-11-21
阅读 3 分钟
5.3k
主从环境下数据一致性校验经常会用 pt-table-checksum 工具,它的原理及实施过程之前写过一篇文章:生产环境使用 pt-table-checksum 检查MySQL数据一致性。但是DBA工作中还会有些针对两个表检查是否一致,而这两个表之间并没有主从关系,pt工具是基于binlog把在主库进行的检查动作,在从库重放一遍,此时就不适用了。

让mysqldump变成并发导出导入的魔法

2016-11-21
阅读 5 分钟
7.2k
取名mypumpkin,是python封装的一个让mysqldump以多线程的方式导出库表,再以mysql命令多线程导入新库,用于成倍加快导出,特别是导入的速度。这一切只需要在 mysqldump 或 mysql 命令前面加上 mypumpkin.py 即可,所以称作魔法。

自动记录MySQL慢查询快照脚本

2016-11-21
阅读 4 分钟
3.4k
写这个脚本的初衷是在使用阿里云RDS的过程中,数据库出现异常,需要快速恢复。网上有许多类似的kill脚本,都是通过 mysqladmin 实现的。然而 Ali-RDS 环境有以下限制:

MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)

2016-07-11
阅读 5 分钟
55.3k
最近测试组那边反应数据库部分写入失败,app层提示是插入成功,但表里面里面没有产生数据,而两个写入操作的另外一个表有数据。因为 insert 失败在数据库层面是看不出来的,于是找php的同事看下错误信息:

MySQL避免索引列使用 OR 条件

2016-06-04
阅读 3 分钟
13.1k
这个亏已经吃过很多次了,在开发以前的sql代码里面,许多以 or 作为where条件的查询,甚至更新。这里举例来说明使用 or 的弊端,以及改进办法。

pt-online-schema-change使用说明、限制与比较

2016-06-04
阅读 9 分钟
7.1k
在 mysql 5.5 版本以前,修改表结构如添加索引、修改列,需要锁表,期间不能写入,对于大表这简直是灾难。从5.5特别是5.6里,情况有了好转,支持Online DDL,相关介绍见 这篇文章,而我在实际alter table过程中还是会引起 data meta lock 问题。pt-online-schema-change是Percona-toolkit一员,通过改进原生ddl的方式,...

mysql 5.6 原生Online DDL解析

2016-06-04
阅读 16 分钟
6.5k
做MySQL的都知道,数据库操作里面,DDL操作(比如CREATE,DROP,ALTER等)代价是非常高的,特别是在单表上千万的情况下,加个索引或改个列类型,就有可能堵塞整个表的读写。

InnoDB行格式对text/blob大变长字段的影响

2016-05-20
阅读 8 分钟
5.5k
最近在排查现网Text与Blob类型,发现有不少,在《高性能MySQL(第3版)》看到对这两种变长数据类型的处理会涉及到在磁盘上创建临时表,性能开销比较大。于是把影响blob型数据存储方式了解了一下:row_format。

小心MySQL的隐式类型转换陷阱

2016-05-16
阅读 8 分钟
5k
t_tb1 表上有个索引uid_type_frid(f_col2_id,f_type)、idx_corp_id_qq1id(f_col1_id,f_qq1_id),而且如果选择后者时,f_qq1_id的过滤效果应该很佳,但却选择了前者。当使用 hint use index(idx_corp_id_qq1id)时:

MySQL数字类型int与tinyint、float与decimal如何选择

2016-05-14
阅读 7 分钟
9.4k
只需要知道对应类型占多少字节就能推算出范围了,比如int占 4 bytes,即4*8=32bits,大约10位数字,也能理解为什么int默认显示位数是11。

MySQL字符数据类型char与varchar的区别

2016-05-14
阅读 8 分钟
6.3k
数据类型差不多是接触mysql一开始就了解的内容,最近遇到几个现象如varchar自动转mediumtext,blob存储性能的问题,不得不回头明确一下关于MySQL常用数据类型的选择。

使用sysbench对mysql压力测试

2016-04-05
阅读 9 分钟
10k
sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。关于这个项目的详细介绍请看:[链接] 。它主要包括以下几种方式的测试:

记一次Mac mini折腾过程(鼠键共享,更换SSD)

2016-02-21
阅读 5 分钟
9.5k
从公司网管那捣鼓来一个“遗弃” Mac mini,说其它人觉得用起来太卡,正好我的工作PC( CPU 4×i3,MEM 8G, HDD 500G)软件开多了也觉得有些卡,特别是我使用浏览器的习惯不太好,每次搜索统一结果都要打开好多标签页对比,文章性质的觉得有用想将来记录下来就没关闭页面,一两个星期下来只Chrome使用的内存就达到4G多。不用...

使用 Xtrabackup 在线对MySQL做主从复制

2016-02-18
阅读 7 分钟
11.7k
mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷。一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldump就力不从心了。Percona-Xtrabackup备份工具,是实现MySQL在线热备工作的不二选择,可进行全量、增量、单表备份和还原。(但当数据量更大时,可能需要考虑分库分表,或使用 LVM ...

生产环境使用 pt-table-checksum 检查MySQL数据一致性

2016-01-14
阅读 8 分钟
39.4k
公司数据中心从托管机房迁移到阿里云,需要对mysql迁移(Replication)后的数据一致性进行校验,但又不能对生产环境使用造成影响,pt-table-checksum 成为了绝佳也是唯一的检查工具。

Nginx+Keepalived实现站点高可用

2015-06-06
阅读 9 分钟
37.5k
公司内部 OA 系统要做线上高可用,避免单点故障,所以计划使用2台虚拟机通过 Keepalived 工具来实现 nginx 的高可用(High Avaiability),达到一台nginx入口服务器宕机,另一台备机自动接管服务的效果。(nginx做反向代理,实现后端应用服务器的负载均衡)快速搭建请直接跳至 第2节。

nginx做负载均衡器以及proxy缓存配置

2015-06-03
阅读 9 分钟
25.6k
关于nginx的安装和基本配置请参考nginx,本文在原基础上完成以下几个功能: 结合proxy和upstream模块实现nginx负载均衡 结合nginx_upstream_check_module模块实现后端服务器的健康检查 使用nginx-sticky-module扩展模块实现Cookie会话黏贴(session-sticky效果) 使用proxy模块实现静态文件缓存 使用ngx_cache_purge实现...

nginx配置ssl加密(单/双向认证、部分https)

2015-06-01
阅读 5 分钟
60.9k
nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番。一开始采用的是全站加密,所有访问http:80的请求强制转换(rewrite)到https,后来自动化测试结果说响应速度太慢,https比http慢慢30倍,心想怎么可能,鬼知道他们怎么测的。所以就试了...

nginx配置location总结及rewrite规则写法

2015-05-26
阅读 7 分钟
281.4k
location正则写法 一个示例: {代码...} 已=开头表示精确匹配 如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。 ^~ 开头表示uri以某个常规字符串开头,不是正则匹配 ~ 开头表示区分大小写的正则匹配; ~* 开头表示不区分大小写的正则匹配 / 通用匹配, 如果没有其它匹配,任何请求都会匹配到 顺序 no优先级: (locat...

nginx服务器安装及配置文件详解

2015-05-26
阅读 11 分钟
189k
nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自己也整理一份安装文档和nginx.conf配置选项的说明,留作以后参考。像负载均衡配置(包括健康检查)、缓存(包括清空缓存)配置实例,请参考 [链接] ,ssl加密请参考 [链接] 。

doc/jpg等文件在线浏览解决方案搭建

2015-05-15
阅读 3 分钟
4.8k
在公司OA和CRM系统遇到要实现在线查看word/jpg等文件的功能,按照开发小组的要求搭建了一套解决方案:OpenOffice + JodConvertor + SWFTool+ FlexPaper,其中OpenOffice + JodConvertor用于将文档转化为PDF格式文档,SwfTool用于将PDF转化为SWF文档,FlexPaper用于展示。使用这个解决方案的最大好处就是跨平台且较为简单。

高效Linux bash快捷键及alias总结

2015-05-13
阅读 4 分钟
13.4k
习惯使用编辑的快捷键可以大大提高效率,记忆学习过程要有意识的忽略功能键、方向键和数字小键盘。以下快捷键适用在bash处于默认的Emacs模式下。如果你有set -o vi,就处于 vi 模式就不适用了。 另外下面的内容并不包含所有快捷键,只是我个人适用频率最高的几种,但相信已经可以大大提高工作效率了:

配置 Oracle 11gR2 在 CentOS6 上开机自启动

2015-05-13
阅读 3 分钟
5.1k
要达到oracle随开机自启动,一般使用11g自带的dbstart脚本:$ORACLE_HOME/bin/dbstart,但要先修改/etc/oratab的内容,将N改成Y,表示允许实例自启动,假如有2个实例要启动,再写一行:

lsyncd实时同步搭建指南——取代rsync+inotify

2015-05-07
阅读 8 分钟
34.8k
最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify + rsync,但随着文件数量的增大到100W+,目录下的文件列表就达20M,在网络状况不佳或者限速的情况下,变更的文件可能10来个才几M,却因此要发送的文件列表就达20M,严重减低的带宽的使用效率以及同步效率;更为要紧的是,加入inotifywait在5s内监控...

PHP 5.3 连接 Oracle 的客户端及 PDO_OCI 模块安装

2015-05-01
阅读 4 分钟
13.3k
php连接oracle数据库虽然不是最佳拍档,但组内开发确实有这样需求。如果没有参考合适的文档,这个过程还是挺折磨人的,下面是一个记录,原型是国外的一篇博客 Installing PDO_OCI and OCI8 PHP extensions on CentOS 6.4 64bit。