Oracle ACE,《Oracle DBA工作笔记》作者 现就职于国内某互联网公司,擅长数据管理,数据迁移,性能优化,目前专注于开源技术,运维自动化和性能优化。
在Linux下经常要安装部署一些软件包或者工具,拿到安装包之后一看,简单,configure,make, make install即可搞定。 有时候我就在想,这个congigure,make ,make install是什么意思呢,configure是测试存在的特性,然后make开始编译,make install生成相应的可执行文件。
在我从事DBA工作的这些年,经常会有网友会问我,数据库有什么好的工具可以使用,让我给推荐几个,数据库的工具还少吗,Oracle阵营: Toad(付费),SQL Developer(免费),PLSQL dev(付费),squirrel(免费) MySQL阵营: SQLyog(付费),Navicat(付费) 当然很多工具和产品对于我们很多码农来说,至少目前,付费和免费,我们对待的态度是一样的。
之前也列举了几期的MySQL死锁问题,光有操作演练,还缺少一些自己的分析,所以我就打算补充一下。 首先对于死锁问题,我们分析的背景是基于MySQL事务隔离级别为RR,存储引擎为InnoDB,在MySQL 5.6,5.7版本均可复现问题。
做了十多年的学生,听老师的话听了不少,有些我到现在都分不清真假。当然反过来说,你青春萌动的年代,老师的青春年华也陪伴了我们的成长,当我们离开校园,随着时间的流逝,老师也老了,他们也有家庭,也有老人孩子需要照顾,这个时候我愿意坐下来倾听老师的声音,哪怕是那些听起来的气话。
最近花了些时间分析MySQL锁的内容,觉得越看越有意思。 我有个学习的习惯,有时候也不知道好还是不好,那就是喜欢直接上手练习,然后反过来练习理论。
说实话,我在大学的时候用了下SQL Server,自从工作以来一直没有接触过SQL Sever,越是不接触越是排斥,也是不了解越是排斥,所以花点时间了解下自己不熟悉的技术,可能也会有一番收获。
MySQL的使用场景中,读写分离只是方案中的一部分,想要扩展,势必会用到分库分表,可喜的是Mycat里已经做到了,今天花时间测试了一下,感觉还不错。 关于分库分表 当然自己也理了一下,分库分表的这些内容,如果分成几个策略或者阶段,大概有下面的几种。
工作这些年来,也去了一些地方,有了一些见闻,隐隐感觉很多文化和猫有着千丝万缕的联系。就拿IT行业来说吧,猫有着很高的曝光率,比如大名鼎鼎的 tomcat,是由SUN的软件构架师詹姆斯·邓肯·戴维森开发,并由Sun贡献给Apache软件基金会,他希望这种动物能够自己照顾自己,将其命名为 Tomcat,于是乎这个名字就留下来了。
最近看了下《吐槽大会》,看起来很带感,地铁上看得不亦乐乎,但是看完之后,好像还是会有一些空虚的感觉,毕竟是娱乐,看完以后还得过自己的生活。而身边有一些朋友已经开始策划财务自由了,这条路看似是一劳永逸,但是不适合绝大多数有这类想法的人。
今天写了一个快速搭建MySQL主从环境的脚本,思路和前几天发布的MGR快速搭建的有一点像,但是最根本的差别就是这个脚本支持5.6,5.7版本。其实sandbox本身也能够做这些事情,自己写这个只是想把这个过程自己记录下来,明白可能在哪些地方有一些注意的细节。
今天在测试MySQL事务隔离级别的时候,发现了一个有趣的问题,也参考了杨一之前总结的一篇。http://blog.itpub.net/22664653/viewspace-1612574/ 问题的背景是在MySQL隔离级别为RR(Repeatable Read)时,唯一性约束没有失效,多并发的场景下能够复现出下面的问题。
之前写了一版简单的shell脚本,能够实现简单的MySQL Group Replication环境的测试快速部署,大概就1分多钟的时间就快速创建多个实例节点,如果要学习尝鲜MGR的话还是推荐试试的。
很久之前有一个同事问我一个关于死锁的问题,一直在拖这个事情,总算找了空来看看。 这个环境的事务隔离级别是RR,仔细看了下问题描述和背景,发现还真不是一块好啃的骨头。
在MySQL中对于并发,锁问题总是会有很多值得讨论的地方,但是通常来说,要模拟这些锁或者一些锁的问题需要花点功夫,比如创建多个表,创建大量的数据,然后像调试钟表的秒针一样,让问题刚好复现在哪个时间点上。
之前看老杨写了篇爆文,《DBA要失业了?看ML如何自动优化数据库》,当时猛一看很有革命性,但是在看了这篇文章之后,有了两点想法,第一是,目前的自动化优化方式还在探索当中,并不是一个革命性的颠覆研究结果,但是很有潜力,因为数据库和机器学习联系在一起,如果继续往下走,还是有无限可能的,第二是,DBA现有的工作还是有很多的改进之处,也给追求稳定安逸功能我们敲响了警钟。
今天周五了,思来想去,好久没有写点女儿的故事了。索性再来一篇。 - 孩子对爸的态度 - 我如果平时上班早一些,她要么还在睡觉,要不就在玩自己的,在我出门前抬头看看我,冲我摆摆手说,”爸爸再见“,然后继续玩。
首先数据库技术发展的基础还是在业务推动的背景下,能够实现相关的技术保障。业务需求的提升必然会在数据量,访问量等方面有更高的要求,而映射到数据库层面就不是简单的扩容和添加资源了,我们有时候更需要弹性,需要快速实现,需要更高的性能。
今天帮同事看了一个MySQL的连接问题,蛮有意思,有两个用户,一个用户连接正常,另外一个连接抛错。 开发同学提供的错误日志如下: {resin-33} java.net.SocketException {resin-33} MESSAGE: java.net.ConnectException: Connection timed out 。
今天在梳理一套环境的时候,发现了一个奇怪的问题,应用端连接正常,但是服务端却有些问题。 假设服务端的IP地址为10.129.128.57 使用tnsping本机的服务,竟然抛出了监听的问题。
自从注册了github,在上面花的功夫很少,很早之前开源了一个MySQL Group Replication快速测试的小脚本。之后就鲜有更新了。 而我自己其实很早就写了一套脚本,我起名叫dbm_lite,其实就是想让DB的维护工作更简单一些...
InnoDB Cluster初印象 记得MySQL Group Replicatioin 刚开始的时候,MySQL界很是轰动,等待了多年,终于有了官方的这个高可用解决方案。
最近实在太累了,直到周末搭建好最后一套灾备环境,我悬着的心才终于放下来,总算是给这段时间的忙碌画上了一个句号,随后的几天里就是些修修补补的事情了。 所以周末忙完这波,我好好睡了一觉,一下子闲下来,一下子轻松下来,有一种考完试后的迷茫感。
MySQL中的mysqldump,真是一个经典而有效的工具,经常用,但是不知道后台运行的过程中到底在干些什么,其实如果想得到这些基本的信息不一定要去看代码,我们通过日志的方式就能一窥其中的奥妙。
今天看了下《摔跤吧爸爸》这部电影,总结了一些想法,可以一起讨论下,不对的地方也欢迎抛砖讨论。 一 说说豆瓣评分 首先,这部片子豆瓣评分竟然达到了9.2,能够达到这样一个分数的电影真是少之又少。
最近在做一次MySQL数据迁移的时候,突然发现自己遗漏了一个地方,那就是权限信息没有导出,如果我们使用mysqldump --all-databases的时候没有添加--flush-privileges的时候,导出的数据中是不会包含mysql数据库的。
在《唱脸谱》中,第一句便是: 外国人把那京戏叫做“Beijing Opera ” 我记得之前在一次技术峰会的自我介绍ppt中,为了显示出自己是中国的,还特意放了个京剧脸谱上去,但是扪心自问,我懂京剧吗?完全不懂,感兴趣吗?不知道感不感兴趣,目前来看还没有找到一个和自己契合的点。
之前分析过一篇《通过SQL解读财富的分配》,当时还不过瘾,其实是我还没看到很多自己期望看到的数据,于是后面又做了一些测试,先测试了一版2000万的数据,得到的结果和100的差别不大,本来想来一个全球70亿人的游戏大联欢,但是确实蛮有挑战。
最近天气热了,加上身上的一堆事情,胃口都不大好。老爸看我胃口不好,早上就刻意少留了些饭。 而早上吃饭的时候,我总是喜欢听听歌曲,无意点开了一首收藏的歌曲,是于霞和李小龙唱的《侠客行》,突然让我回到了10年前,想起了风靡一时的情景喜剧《武林外传》,这么多年过去了,我突然想看看那些给我们带来欢乐的人现在怎么样了? 我没有刻意去搜索,而是根据我近年来在脑海中的一些印象来拼接这些琐碎的记忆片段。
因为服务器迁移,目前一套硬件老化的MySQL主从服务器都需要替换为新服务器,总体评估了一下,在不改变版本的情况下,采用了较新的5.6子版本。就是如下图所示的左边和右边。
记得在我初中高中的时候,中午还能回家吃饭,每天12:38左右的《今日说法》就是我们必看的节目,看完节目,一点刚过点,稍微睡一会就开始下午的课了。所以法制节目伴随了我的很多时光。
今天在搭建DG的时候碰到了一个蛮有意思的问题,耗费了不少脑细胞,简单记录一下。 首先主库是Queuedb,备库是s2queuedb,使用RMAN的duplicate来搭建,主备库的网络配置listener.ora,tnsnames.ora都没有问题。
我们知道Oracle在启动的时,fork进程会根据ORACLE_SID来创建相关后台进程,而在Unix和Linux系统中,ORACLE SID和ORACLE_HOME在一起哈希后会得到一个唯一的值作为SGA的key。
还是继续昨天的问题,知乎上一个蛮有意思的问题,数据分析师做了一个很有意思的解读。 题目是:房间里有100个人,每人都有100元钱,他们在玩一个游戏。
不知道大家在工作中的表空间管理情况如何,大体会分为两派。以前的公司我们更喜欢直接把空间都分配好,比如500G的容量规划,那就提前准备500G,另外一类是我先给定200G,后续的空间就自动增长,反正容量还是500G。
已经很多次收到后台网友的留言或者私信了,对于学习Oracle和MySQL,他们都有类似的疑问,我就索性放在一起来回答下。 简单来说,官方文档是最好的学习资料,在这个基础上去阅读更多的书籍会起到融会贯通的作用,而相比Oracle和MySQL,Oracle的文档要更细更全,如果你去官网下载完整的文档,会被里面的文档淹没。
如果对MySQL的性能测试工具,比如sysbench做压力测试就可以看到我们关注的性能指标QPS,TPS,压测过程中的性能变化一目了然。 而在平时的工作中,如果也想看这个指标的值,使用sysbench就不合适了。
服务器搬迁后不是简单能连接上服务器就可以了,还有许多的事情需要考虑,否则服务器不可用还是白搭。 我大体碰到了如下的一些问题,也能够反应出来对于系统的各种潜在隐患。
总结一下昨晚在数据迁移前线奋战碰到的一些问题,虽然总体来说是按照预定的计划完成,并且提前完成,但是哪怕一丁点儿的操作都会导致一些严重的影响。 总体来说,需要做的事情就是把核心业务服务器从一个机房迁移到另外一个机房,这个过程中因为环境的重要性和硬件软件的情况,大体分为了下面三个方向的技术方案。
技术之外你能够做什么?这是我经常自己问自己的一句话。 不能说卖老,自己也参与了很多大型项目的数据迁移,数据升级和维护工作,从参与进来到主导迁移维护,从技术方案的敲定到最后落地,中间还是有很多的事情和经验需要总结。
自从使用了Orabbix监控Oracle以来,很多工作都能够通过这种配置可控的方式处理,有些问题是潜在问题,有些是遗留问题,多多少少还是提高了效率。 最近涉及机房搬迁,我们的Zabbix服务器也在迁移计划中,而因为部署的规模也不大,所以O...
最近几天实在忙得厉害,处理了各种数据需求,有种顾及不来,而其中有一部分问题是和数据访问相关的,问题的原因很简单,但是分析问题的过程就需要很多的经验,推导,比如下面的两个案例。
关于SQL,我们总是会有无穷无尽相关的话题,有时候碰到了一些觉得不错的SQL功能会标记下来,好记性不烂烂笔头,回头来看,自己也收集了不少的点子,但是从整体来看,可能仅仅是一瓢水而已。
假设一台服务器要从一个机房迁移到另外一个机房,这个过程就好比你去出差,从北京到上海,怎么准备才是最方便,安全,快捷的。 如果出去时间不长,有了银行卡,这些都不是问题,很多小件的东西都可以通过买买买来解决,这里的银行卡就好比服务器的iDRAC模块一样(也常叫ILO),而你的出行又不可避免需要使用有效证件,交通如此,住酒店如此,这里的身份证就好比系统的root密码一样重要。
在数据迁移中,除了跨平台,全量,增量数据迁移之外,还有一类会把已有的难度升级,那就是整合式迁移,比如原来有两个数据,迁移后是一个,类似这样的需求,如果再加上平滑升级数据库版本,那就值得我们好好想想方案了。
今天同事问了一个问题,是关于MySQL大小写敏感的。 如果根据关键字case来搜索,会发现有两个参数。 mysql> show variables like '%case%'; +------------------------+---...
MySQL里的explain命令内容还是很丰富的,值得好好的挖掘出不少东西来。 本身来说explain就是生成执行计划的内容,如果细看,这个内容和Oracle explain plan for的结果相比还是有差距的。
突然发现自己已经写了很多的生活随笔,我的公众号粉丝中有不少就是因为这些文字而结识的。 其实我的很多生活随笔如果涉及到人生都是感慨和感悟。
对于事务的隔离级别,MySQL中默认是RR, Oracle中默认是RC,两个事务隔离级别存在着很大的差别,而换句话说,就算是RR的事务隔离级别级别,同是关系型数据库MySQL,SQLServer,postgreSQL也会有一些差别。
MySQL的自增列问题其实很有意思,在重启数据库之后,会按照max(id)+1的方式来计算,这样一个看起来有些别扭的实现方式在早期版本就饱受诟病,在MySQL 5.7都没有解决掉,终于在8.0松口了,计划在这个版本中修复。
今天根据同事的反馈,处理了一个分区表的问题,也让我对Oracle的分区表功能有了进一步的理解。 首先根据开发同事的反馈,他们在程序批量插入一部分数据的时候,总是会有一部分请求执行失败,而查看日志就是ORA-14400的错误,对于这类问题,我有一个很直观的感觉,分区有问题。