数据库
文章平均质量分 96
kaifly
一个“技术扎实,球风朴实”的技术流球员
展开
-
mysql5.1 系列 关于用户授权的一个bug
不知道我这文章名字这样写是否精确,但是我在5.1.37 和 5.1.60 两个版本上碰到了这样的问题。以前网站链接数据库的用户权限是 grant all on *.* to user identified by 'password'后来感觉这样的权限太大,想修改为只能从特定主机访问特定库,于是执行revoke all on *.* from user;然后重新赋权限:revoke all on l原创 2016-08-10 10:32:35 · 1364 阅读 · 0 评论 -
Percona XtraDB Cluster 初探
Percona XtraDB Cluster(下文简称PXC集群)提供了MySQL高可用的一种实现方法。PXC集群以节点组成(推荐至少3节点,后面会讨论两节点的情况),每个节点都是基于常规的MySQL/Percona Server,意味着你可以从集群中分离出某节点单独使用。集群中每个节点都包含完整的数据。PXC集群主要由两部分组成:Percona Server with XtraDB和Writ原创 2016-10-19 20:42:32 · 1574 阅读 · 0 评论 -
基于pt-query-digest的慢查询日志持续追踪
percona-toolkit被称为MySQL DBA的“瑞士*”,其强大性不言而喻。而其中的慢查询分析工具“pt-query-digest”相比官方的“mysqldumpslow”提供了很多额外的属性,例如灵活的过滤器,基于库和表的分析排序等等。今天分享一例基于“pt-query-digest”和邮件自动追踪MySQL慢查询日志的小脚本,同时避免对同类型的sql语句重复提示。直接上脚本(只要安装了原创 2016-10-19 22:56:40 · 1520 阅读 · 0 评论 -
记一次APP和DB间流量异常问题的排查
情景通过zabbix监控发现有一个应用和数据库之间存在不定时的流量异常(也不频繁),具体为应用server的入向流量和数据库server的出向流量会有短时间(通常在一分钟左右)的激增,甚至快达到千兆网卡的传输上限。分析过程通过症状,几乎可以断定是由于某些sql语句需要返回大量数据导致。但这次问题的分析结果确是很不顺利(其中有我前期方法不当的原因)。初次分析:因为在那之前做了一个针对于故障/异常分析的原创 2017-03-19 15:00:29 · 1501 阅读 · 1 评论 -
为MySQL设置安全的远程连接
需求:开发、测试部门需要对准生产和生产数据库进行远程访问有一阵子,是直MySQL层面接授予最小权限,并限制只允许从公司出口ip访问;iptables层面也是针对数据库端口只允许公司出口ip访问。但是这个样子终究觉得不够放心。后来研究了下MySQL的登录过程(wireshark抓包和参考官方文档),虽然说MySQL实现的登录机制(这里有机会单独说)基本不存在泄露密码的风险(理论上存在被破解的原创 2017-04-20 15:15:34 · 3881 阅读 · 0 评论 -
基于sysbenche-0.5的MySQL自动压测及分析出图
本文是作者工作中需要对atlas(360开源的mysql中间件,可实现读写分离、分表、多从库负载均衡)以及后期对proxysql(另一款高效并很有特色的数据库代理软件)进行测试时所设计和采用的一套脚本。由于对中间件测试,要测试对比的维度较多,所以尽量将涉及到的因素都纳入脚本中以实现自动化的压测和分析过程。总体思路如下:准备测试数据(这步在脚本之外人工完成) --> 运行脚本测试(压测线程数在脚本里原创 2016-10-16 20:47:43 · 3637 阅读 · 0 评论 -
ProxySQL--灵活强大的MySQL代理层
本文是我在学习和验证ProxySQL的过程中,从初识(对其机制猜想或者仅凭几次命令的结果臆断其原理),到逐渐深入(模拟各种场景测试、抓包分析、与作者交流)过程中的思路和方法和结论的记录。ProxySQL项目网址亮点:几乎所有的配置均可在线更改(其配置数据基于SQLite存储),无需重启proxysql基于正则和client_addr的可完全自主控制的路由规则详细的状态统计,统计结果和pt-qu原创 2016-09-25 22:16:54 · 33727 阅读 · 30 评论 -
解决ProxySQL的单点问题
ProxySQL存在单点隐患,开源架构中解决单点故障最常用的应该及时keepalived了。尤其是主备服务之间不需要“实时同步数据或状态”的服务,最为适用(举个反例,MySQL双主的高可用架构如果用keepalived的话,由于切换VIP的动作还必须考慎重的考虑主从数据一致性问题,所以切换逻辑就会比较复杂。之前写过一篇该方案的文章) ProxySQL的配置支持配置文件和数据库接口(基于SQLite)原创 2017-08-24 13:48:29 · 2366 阅读 · 0 评论 -
逻辑/物理(增量)--两套MySQL备份脚本
数据备份其重要性无需多言,再细想一步,我们至少需要两种备份:一种逻辑备份(mysqldump生成sql文件);一种物理备份(xtrabackup可很好完成)。逻辑备份在出问题时能提供更细粒度的恢复和对比;物理备份在整库范围的数据恢复或者增加从库方面有着更高的效率。 首先看下逻辑备份脚本,比较简单#!/bin/sh###每天运行一次###定义用户 密码 备份目录等信息user=my原创 2016-10-18 21:51:00 · 2264 阅读 · 0 评论 -
ProxySQL Query Rewrite 使用示例
在这篇文章中,我将重新探究ProxySQL中的Query Rewrite功能,因为query rewriting是创建ProxySQL的最根本初衷。 为什么我们需要重写查询? - 你已经确定了一个触发性能瓶颈或导致系统缓慢的查询 - 你无法(快速的)修改应用代码 - 某些特殊的操作需要“重定向查询”这儿举例你作为DBA发现了一个“坏查询”,你确认是它导致了服务缓慢,并且可能会导致服...翻译 2018-05-07 16:02:53 · 767 阅读 · 0 评论 -
如何设置innodb_log_file_size
在这片文章中,我会提供一些关于如何设置 MySQL的 innodb_log_file_size 参数的一些建议。跟其他数据库管理系统一样,MySQL通过日志来实现数据的持久性(在使用InnoDB存储引擎的前提下)。这确保了当一个事务提交后,其相关数据在崩溃或者服务器掉电的情况下不会丢失。MySQL的InnoDB 存储引擎使用一个指定大小的Redo log空间(一个环形的数据结构)。Redo log的翻译 2018-05-08 16:52:08 · 28026 阅读 · 0 评论 -
MySQL-5.5主从关于‘复制过滤’的深入探究
关于MySQL主从复制的过滤,例如通过binlog-ignore-db、replicate-do-db、replicate-wild-do-table等。如果不好好研究过这些过滤选项就用的话,是有可能造成主从数据不一致问题的。本文将参考MySQL-5.5官方文档并结合实验,和各位一起探讨下这里的各个设置。 以下内容参考5.5官方文档binlog_format(STATEMENT,RO原创 2016-10-19 17:07:34 · 416 阅读 · 0 评论 -
xtrabackup使用方法简介
关于xtrabackup的简介就不再赘述,百度一堆,使用方法也说明也很多。感觉还是只有自己试过之后才能有更深刻的认识,以下的使用说明基于官方文档及自己试验过程,记录下备查。安装:去percona-xtrabackup官网上下载,有rpm包、tar包,也有解压直接可用的二进制包。我试验采用的二进制包。由于里面的innobackupx命令实际上是用perl语言封装了xtrabackupx而成,所以使用i原创 2016-10-19 14:38:36 · 971 阅读 · 0 评论 -
关于MySQL区分大小写问题的探究
先说遇到的问题:有个mysql实例跑了两个库,两套程序。其中一个库的表名全为大写,另一个库的表名全为小写。 表名为小写的这个库的程序里面写sql语句的时候有用大写的,运行时会提示找不到表。所以需要在my.cnf里添加“lower_case_table_names = 1”使mysql忽略大小写。但是加上这个之后,会导致表名大写的那套程序提示找不到表,而且无论用查询语句用大写表名还是小写表名都原创 2016-08-10 10:33:09 · 1163 阅读 · 0 评论 -
xtrabackup 官方原理
在InnoDB内部会维护一个redo日志文件,我们也可以叫做事务日志文件,事务日志文件会存储每一个InnoDB表数据的更改记录。当InnoDB启动时,InnoDB会检查数据文件和事务日志,并执行两个步骤:1.应用已经提交的事务日志到数据文件;2.将事务日志里还未提交的更改回滚。xtrabackup在启动时会记住 log sequence number(LSN,每条事务记录的唯一编号),并且复制所有转载 2016-08-10 10:33:31 · 431 阅读 · 0 评论 -
mysql 查询语句统计和查询缓存相关的状态值解疑答惑
关于mysql里‘show global status’输出的Com_select、Queries、Questions、Qcache_hits、Qcache_inserts、Qcache_not_cached这几个状态值一直有些迷惑,现通过实验来更加准确和深刻的了解之。实验版本:5.5.39先附上每个状态的官方解释Com_select:The Com_xxx statement counter v原创 2016-08-10 10:33:37 · 760 阅读 · 0 评论 -
MySQL 可优化的一些参数详解
mysql里有些变量设置可用于server层面的调优,多是cache和buffer之类,有的是为整个server分配的大小,有些则是为每个session/thread分配的。为每个session/thread分配大小的变量尤其要注意不要设置太大。sort_buffer_sizeEach sessionthat needs to do a sort allocates a buffer of thi原创 2016-08-10 10:33:43 · 286 阅读 · 0 评论 -
MySQL主库高可用 -- 双主单活故障自动切换方案
前言:(PS:前言是后来修改本文时加的)对于这篇文章,有博友提出了一些疑问和见解, 有了博友的关注,也促使我想把这套东西做的更实用、更安全。后来又经过思考,对脚本中一些条件和行为做了些改变。经过几次修改,现在终于敢说让小伙伴本使用这套东西了。主要目的: 以双主结构配合keepalived解决MySQL主从结构中主库的单点故障;同时通过具体的查询语句提供更细粒度、更为真实的关于主库可用性的原创 2016-08-10 11:58:40 · 5339 阅读 · 0 评论 -
Python实现MySQL DBA小工具一例
我们知道MySQL所有的运行状态统计信息都能从“show global status”语句的结果集中查看,该结果集保存的是从MySQL启动到当前时间之间各状态值的“总数”,对我们的分析不友好。在我们日常维护和优化中,我们需要持续的跟踪某些状态值的的变化(增量或者是平均值);或者是在调整某些参数后,观察某些状态值的变化是否符合我们预期等等。 基于以上这些需求,作者用Python实现了一个小工具原创 2016-10-23 18:53:47 · 1341 阅读 · 0 评论