数据库相关技术专家
一 简介 Redis 是一款完全开源免费的高性能的key-value数据库,可以作为缓存,kv结构存储和队列,目前在互联网行业比较广泛使用。 Redis作为Key-value型数据库,它提供了Key-Value 映射关系。
本系列基于5.7.12 版本来讲述MySQL的新特性,从安装,文件结构,SQL ,优化 ,运维层面 复制,等几个方面展开介绍5.7 的新特性和功能,同时也建议大家跟踪官方blog和文档,以尽快知悉其新的变化。
写在前面 MySQL 5.7版本于2015年10月份左右 GA,至今已经半年多了,但自己一直没有时间来follow MySQL 5.7 新的特性,作为MySQL DBA 实在汗颜,以后会花时间来研究5.7 版本的特性并针对部分优化功能做出压力测试。
写在前面 MySQL 5.7版本于2015年10月份左右 GA,至今已经半年多了,但自己一直没有时间来follow MySQL 5.7 新的特性,作为MySQL DBA 实在汗颜,以后会花时间来研究5.7 版本的特性并针对部分优化功能做出压力测试。
起因 开发反馈一个表的数据大小已经130G,对物理存储空间有影响,且不容易做数据库ddl变更。咨询了开发相关业务逻辑,在电商业务系统中,每笔订单成交之后会有一条对应的订单物流信息,因此需要设计一个物流相关的表用来存储该订单的物流节点信息,该表使用text字段存储物流信息。
一背景 早上7点多接到一个数据库服务器空间报警,磁盘空间不足。登陆数据库查看,MySQL slave 大量延迟,有68G 的relay log。查看slave status 发现Relay_Log_Pos ,Exec_Master_Log_Pos 位点始终不变...
一 前言 本文介绍一款绿色免安装版本的数据库压测利器--mydbtest(mydbtest_linux64.bin,由楼方鑫大牛编写).该压测软件区别于sysbench ,tpcc 等常见压测工具软件,免安装,上手快,而且可以针对业务sql做定制化压测。
一 简介 socket是两个应用程序进行通信的管道,这两个应用程序可以在同一台机器上,也可以位于两台不同的机器上,相同的网络或者不同网络之间的。Python socket有丰富的类和方法,可以简化socket编程。
MySQL DBA 偶尔会遇到因为空间不足,在不能删除data之前,可能先想到的是通过删除binlog 暂时解决空间问题。周末本人也遇到这样的情况,因为不在电脑旁边,找领导出马并且使用手机把命令打出发给老板去删除binlog。
一 前言 昨天在给开发同学做数据库设计规范分享的时候,讲到时间字段常用的有三个选择datetime、timestamp、int,应该使用什么类型的合适?本文通过三种类型的各个维度来分析,声明:本文没有具体的结论,但是会给一个推荐使用方式,需要使用者结合自己的业务场景来具体选择。
根据工作经验 总结了一份MySQL 数据库开发规范,对于索引设计概况不完全,这点需要DBA针对开发做数据库优化设计的分享,欢迎各取所需。
整理一份 MySQL DDL 的思维导图,介绍5.5版本以及之前 和 5.6 版本的 MySQL DDL 执行的方式和需要注意的参数。
背景 早上和一个同事讨论技术问题,谈到ibdata文件会随着数据的使用而增大,而且在事务隔离级别RR 隔离级别下要比RC 隔离级别的大。本文尝试分析两个问题之一 a ibdata 文件随着数据库的使用而增大。
压测方法论 压测目的 压测场景/模型 结果分析 压测报告 其实可以把每次压测当作是一个项目,包括压测目的是什么?新版本数据库上线?新功能? 新的机型 ? 确定压测目标之后我们要选择何种压测场景进行压测,只读,只写,读写混合? 观察压测过程中的性能曲线是否满足我们的期望,并且真对性能出现可重复性抖动的问题进行分析原因并改进。
介绍 在解析mysqlbinlog dump出来的binlog的时候学习了一个函数 --enumerate。官方的定义如下: def enumerate(collection,N=0): 'Generates an indexed series: (0,coll[0]), (1,coll[1]) .
一 简介 作为MySQL DBA ,在维护数据库的过程中,偶尔会遇到服务器异常crash/重启情况,DBA需要在机器重启之后将MySQL数据库重启(当然也有可能其他的数据库本文重点介绍MySQL)。
因为项目的原因我需要深入的学习python,后端程序依赖各种各种软件包,比如MySQLdb,新手可能会有些不熟悉 如何快速安装所需要的python 包。常用的python 包安装和管理有 easy_install, setuptools, pip,distribute。
背景在使用 python MySQLdb 执行sql 命令的时候,如果执行结果含有warning,则会被写入到 stderr 展示到终端命令行。其实这些warning提示信息没有任何实际的作用。
因为之前 将自己觉得有技术含量 且能为读者朋友解决实际生产问题的blog 做了特别设置,留了微信支付二维码 ,陆陆续续也收到读者朋友的打赏 ,在此表示感谢,你们的认可是我持续写blog 的动力。
最近写后台业务逻辑,要用到获取本机ip地址的方法,记录两个python的实现方式: import socket import struct import fcntl import comma...
记录一份 my.cnf 作为自己生产的标配, 仅供参考。 [client] default-character-set = utf8mb4 port ...
一 前言 varchar(N) N代表什么意思,能存放多少个中文字符?属于老生常谈的问题了,今天又被一个开发同事问我关于这个问题,索性写一篇文章来具体介绍一下。 二 理论知识 先说明一下 MySQL 历来版本对 varchar 的定义: 4.
一 前言 作为MySQL DBA, 在运维MySQL的工作过程中,常常遇到Too many connections这个错误,这时作为数据库维护人员都不能登陆数据库进行维护 是多么窘迫的事。
一 介绍 相信作为DBA 在和开发打交道的过程中,经常会遇到分页查询 order by 排序这样的需求。本文源于生产过程中的案例,5.6版本的数据库使用limit和order by 一个非唯一字段时,结果集并不总是确定的.已经确定为bug,详见:MySQL 官方的bug 提醒读者朋友注意。
一 简介 在检查某业务数据库的slowlog 时发现一个慢查询,查询时间 1.57s ,检查表结构 where条件字段存在正确的组合索引,正确的情况下优化器应该选择组合索引,而非为啥会导致慢查询呢? 且看本文慢慢分析。
一 现象 在生产环境中我们偶尔会遇到 "unauthenticated user" 这样的连接,同时伴有数据库服务器层面的load,sys cpu较高,或者thread running异常。
帮助一个朋友招人 公司 二维火 地点 杭州 薪酬 很给力,绝对高于市场价 DBA岗位职责:1.负责MySQL集群和pgsql集群的搭建和维护;2.负责数据库自动化管理,系统的高可用,自动化备份和自动化监控体系的搭建及维护;3.负责数据库架构设计;4.负责sql优化;5.持续研究数据库领域新技术。
自己做过很多关于数据库/系统方面的压测工作,因此总结一份关于数据库压测相关的思维导图,分享给大家。 如果有更合适的思路和方式 欢迎交流。
一 背景 相信大家对time_zone参数的意义和使用方式并不陌生,MySQL 通过设置 time_zone来控制时区,不过本文从另外一个角度来了解该参数对系统性能的影响。
一 前言 工作四年多了,接触了很多开发和其他岗位的同事 ,遇到各种各样的问题。求助过他人也帮别人解决过问题,然而在解决问题的过程中,合理的提问方式等于事半功倍,提出问题的同时,提问者就已经了解了问题的本质或者解决方法了 ,不合理的提问方式则事倍功半,浪费提问者和解答者的时间,效率低下。
本文总结了使用Python 程序执行系统的几种命令,介绍各个模块的优缺点。os.system模块 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息,如果在命令行下执行,结果直接打印出来 Python 2.
一 引言 在构建和维护业务服务应用时,大多数情况下业务系统的性能瓶颈往往是在数据库,解决应用到数据库之间瓶颈,系统的性能会得到极大提升。系统的数据库性能优化方法有很多: 从底层到上层有数据库模型设计,SQL优化,使用缓存等等。
一 简介 通过前面两篇文章的介绍,相信读到这里的各位对MDL 锁已经有了比较深入的了解了,本文将结合理论知识介绍几组MDL 锁的案例。 二 常见MDL 锁的场景1 Waiting for global read lock 我们先构造一个Waiting...
一 简介 上一篇文章 《MetaData Lock 之一》 简单的介绍了MySQL 引入MDL 的前因后果,本文深入了解MDL的实现原理和运行机制。二 MDL 的类型 metadata lock也是一种锁。
一 简介 和MySQL打交道比较多的朋友,肯定遇到过 "Waiting for table metadata lock"或者由于MDL导致的故障,不过本文介绍MDL锁之前 我们先看一个著名的bug#989 大致情况如下: s1: BEGIN; INSERT INTO t .
生产环境总会遇到由于各种原因导致的主从复制不一致的情况,导致slave出现 1032报错。为了使主从关系能够稳定的运行,大多时候可以选择修复1032 报错 ,先跳过去 ,然后使用 percona 的工具 pt-table-checksum 和 pt-table-sync 进行校验和修复 。
一 背景 某业务的数据库定期报 thread_runing 飙高,通定位发现一个慢查询sql导致会话堆积。执行sql 耗时如下 root@db 05:32:05>select count(item_id) from xxxtable whe...
记录一个读取my.cnf配置的脚本,可以基于该函数做一些mysql 后端运维工作。各位可以基于自己的需求进行修改。 脚本名称 getcnf.py import sys import os ...
一 现象 一套MySQL主-备-备-备数据库,其中的备库升级到主库之后,系统监控报警 Seconds_Behind_Master 瞬间为0,瞬间为数十万秒。第一感觉是遇到了复制风暴--不同于主备server_id 的log event在主备库之间无限循环复制。
帮蘑菇街的朋友招聘 MySQL 资深DBA 【职位要求】 1、具有3年以上MySQL DBA相关开发和维护的一线实际工作经验; 2、实际开发和运维中实践过MySQL分布式部署架构,有亿级存储、高并发经验;实际MySQL数据...
一 介绍 MySQL 5.6 针对复制功能提供了新特性: slave支持crash-safe. 该功能可以解决之前版本中系统异常断电可能导致的SQL thread 信息不准确的问题。
MySQL 架构师 工作地点在北京职位描述负责应用系统的数据库规划、数据库设计以及标准化建设负责数据库系统的升级、重构、备份、存储、扩容、集群、容灾系统的设计和实现负责及时跟踪数据库相关的技术动态以及问题解决技巧指导开发人员编写高性能的程序任职资格3 年以...
一 介绍 MySQL 5.6版本提供了很多性能优化的特性,其中之一是关于提高表join性能的算法 --- Batched Key Access (BKA) ,本文将结合之前写过MRR,BNL优化特性一起来详细介绍该算法。
一 前言 MySQL 的主从复制作为一项高可用特性,用于将主库的数据同步到从库,在维护主从复制数据库集群的时候,作为专职的MySQL DBA,笔者相信大多数人都会遇到“Got fatal error 1236 from master when reading data from binary log” 这类的报错/报警。
一 介绍 相信许多开发/DBA在使用MySQL的过程中,对于MySQL处理多表关联的方式或者说性能一直不太满意。对于开发提交的含有join的查询,一般比较抗拒,从而建议将join拆分,避免join可能带来的性能问题,同时也增加了程序和DB的网络交互。
前面介绍了BNL算法,相信不少人会认为BNL会有利于数据库性能的提升(我也是这么认为滴),本文讲述一例生产上因为升级使用BNL 算法导致性能下降的案例。一 背景 生产上将一实例MySQL版本从5.
一 概念介绍 Index Condition Pushdown (ICP)是MySQL 5.6 版本中的新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式。
一 介绍 MySQL 5.6版本提供了很多性能优化的特性,其中之一就是 Multi-Range Read 多范围读(MRR) , 它的作用针对基于辅助/第二索引的查询,减少随机IO,并且将随机IO转化为顺序IO,提高查询效率。
一 介绍 上一篇文章介绍了replace into的基本原理。本章内容通过一个例子说明 replace into 带来的潜在的数据质量风险,当涉及replace into操作的表含有自增主键时,主备切换后会造成数据覆盖等不一致的情况发生。