MySQL Binlog Server

作者:吴炳锡 来源:http://wubx.net/ 联系方式: wubingxi#163.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.

MySQL Binlog Server:是利用某个工具,把线上活跃的库的日志拉取到本地进行备份。在MySQL 5.6以后,可以利用mysqlbinlog这个命令去把远程机器的日志备份到本地目录,从而达到增量或是日志安全方面的备份。

做好MySQL日志的备份,是数据安全的一个重要保证。以前通过写程序来实现,从MySQL 5.6出现以后,DBA同步有福了,不用写程序了。
下面说一下binlog Server怎么构建。
利用mysql 5.6的mysqlbinlog命令,可以把远程的binlog完全镜象一份放到本地,方法如下:

解释一下:
-R –read-from-remote-server 表示从远程机器上读取binlog,要确保远程mysql存储,需要提供–host, –user, –password参数
–raw 以binlog格式存储日志,方便后期使用
–stop-never 一直连接到远程的server上读取日志,直接到远程的server关闭后才会退出。或是被pkill掉
mysql-bin.0000001 这个日志名表示从那个日志开始读取

如果需要启动多个binlog server,需要给binlog server指定server-id(默认是65535),可以利用 –stop-never-slave-server-id变更

启动一个server-id为1的binlog server:

启动一个server-id为2的binlog server:

思考:
这种binlog server怎么关闭才算安全呢?

我的现状说明-MySQL DBA周末班招生

作者:吴炳锡 来源:http://wubx.net/ 联系方式: wubingxi#163.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.

我在现就职于神州泰岳集团下子公司: 北京新媒传信, 目前我们公司在教育方向进行大量的投入,创建了:泰岳教育: http://www.ultraedu.com.cn/   套用官方的话介绍一下:

北京神州泰岳教育科技有限公司(以下简称:泰岳教育)隶属于上市公司神州泰岳(股票代码300002),定位于以在线方式或实训基地模式为在校大学生和职业人士提供互联网+行业的职业能力培训服务,致力于打造国内首家互联网+职业技能的专业学习平台。

因为公司转型,我们内部也有了一次新的机会,所以我和几个同事,一块拉起一个内部叫: 泰岳学院 组织: 定位几个方向: 数据库, 大数据, 测试 三个方向。 每个方向展开后还会有一些小课,这里不细说了。

做为创业项目,我也需要历练一下。所以准备先开一期周末班试运行一下,在次宣传一下:

泰岳学院 北京MySQL DBA周末实体班开班了

  • 计划6月6日开课
  • 开课周期: 6月到10月初,每周六全天实体,周四晚上在线交流
  • 授课老师: 吴炳锡 blog: http://www.mysqlsupport.cn/   http://wubx.net
  • 大纲: http://pan.baidu.com/s/12ip1k
  • 上课地点: 北京地铁5号钱北苑路北站 向北100米 泰岳大厦19层
  • 第一期是VIP小班优惠进行中,最多15人,现在仅剩7个名额 (以交费为准)
  • 有兴趣私聊吴老师,QQ: 82565387, Tel: 13501245755

更多详情直接和我联系吧。 第一期做的信任,做的是口碑。 相互加油:)

目前已经有多家互联网公司向我预定毕业的学生,如果你想提升一下,或是想找一个进行互联网的机会,就行动吧。 以后更多想法,等我一期运行起来在公布。

备注:

 

 20150524   感谢各位支持,第一期VIP小班招生完毕。第二期估计到9月开始招生 期待大家的加入。

 

美的招聘-MySQL DBA

美的现在也想走开源路线,所以大量需要开源相关的人才,MySQL DBA也成了招聘中的重中之重。

该公司强烈推荐,二线城市,一线的待遇,舒适的生活:) 

具体信息如下:

高级MySQL数据库架构师
职位描述:
1.负责数据库架构规划、设计及技术指导;
2.负责关键技术研究及实现,提供满足产品设计规划的数据库领域设计方案;
3.及时解决项目开发或产品研发中的技术难题,对设计平台的最终性能和稳定性负责;
4.负责mysql数据库技术规范建设;
5.培训软件工程师,指导复杂模块的开发;

职位要求:
1.具备5年以上大型Mysql数据库开发设计经验;
2.具备MySQL,ORACLE,SQLserver等数据库的一种或多种的运行机制和体系架构经验;
3.精通sql语句,熟悉数据库的备份恢复及数据迁移等策略,熟练为数据库打补丁,版本升级等;
4.熟悉分布式数据库设计和建设方案,海量数据库分库分表策略以及高并发OLTP、OLAP系统的设计和维护;
5.精通数据库产品性能分析和测试,对数据库的优化,存储性能有较深的研究和操作经验;
6.精通Linux系统,熟练各种命令;
7.了解mogondB等NOSQL、的数据存储产品,熟悉不同类型和数据库的底层运行原理和优缺点;
8.了解Hadoop集群的搭建、配置与管理,对Hadoop源码有深入研究,有对Hadoop优化方面的经验优先;
9.善于处理数据库运行故障和安全加固;
10.熟悉建立数据库仓库及有数据分析与挖掘基础优先。

高级MySQL数据库管理工程师
职位描述:
1.负责Mysql数据库日常运维及故障解决,备份恢复维护;
2.负责Mysql数据库性能调优及数据安全,并负责补丁升级;
3.负责MySQL数据库集群、分库/分表和高可用方案实施等;
4.处理日常事务性数据库操作,提供业务和公司决策支持;
5.协助开发完成数据库表的设计及SQL调优;

职位要求:
1.三年以上DBA相关管理经验,具备大型互联网高并发下Mysql数据库管理经验;
2.精通/熟悉MySQL数据库的运行机制和体系架构,深入理解InnoDB引擎,熟悉MySQL数据库应用运行体系及高可用解决方案;
3.精通/熟悉Mysql数据库的管理,具备批量化数据库运维经验;
4.精通/熟悉MySQL数据库性能调优,SQL优化,服务器优化;
5.熟悉Linux操作系统管理与维护;
6.熟悉shell/perl/python等脚本编写;
7.有MongoDB、Redis、HBase等维护经验优先;
高级MySQL数据库开发工程师
职位描述:
1.负责数据库设计及代码开发;
2.配合产品部门制定数据库技术方案,分库分表策略,数据迁移方案;
3.参与数据库查询分析和性能优化,参与制定SQL编写规范、代码开发和SQL审查;

职位要求:
1.三年以上数据库开发经验;
2.精通数据库基本原理,熟悉SQL语言,精通掌握存储过程等技术;
3.熟悉数据仓库的ETL开发和主题数据建模;
4.熟悉Linux操作系统,具有Shell, C或Java编程经验;
5.熟悉基于MySQL的大规模分布式系统,具有基于MySQL的大规模分布式系统设计/开发经验者优先;
6.熟悉MySQL内核,具有分析其代码实现和具有修改、编写经验者优先;

工作地点:广东顺德
简历邮箱:pirate@linuxboy.cn
待遇从优,欢迎各方人才加入!!!

2014.12.11 MySQL技术分享之:《深入浅出MySQL GTID》

2014.12.11 MySQL技术分享之:《深入浅出MySQL GTID》

分享时间:2014年12月11日20:30

分享嘉宾:冯浩|ISADBA

现chinaunix.net MySQL版主,原51CTO.com Linux版主

6年互联网工作经验,关注数据库,自动化运维,电子商务.

BLOG:http://isadba.com

新浪微薄:@ISADBA

在如今的互联网行业里,数据库可用性、扩展性、性能都非常重要。

MySQL数据库很多的高可用及scale out方案都是基于replication实现的,相对其他方案整体性价比会高出很多。

从MySQL 5.6.2新增GTID特性,利用GTID以让我们更加容易的管理MySQL复制,并有效提高数据库一致性。

这次的分享主要针对MySQL GTID展开,主要的分享内容如下:

1、MySQL集群方案

2、MySQL Classic Replication

3、MySQL GTID Replication

4、Oracle MySQL GTID

5、MariaDB GTID

6、Oracle MySQL GTID VS MariaDB GTID

通过这次分享,大家可以GET到如下技能:

1、GTID和原来的复制有什么区别.

2、如何从原来的复制切换到GTID复制.

3、GTID复制的使用限制.

4、选择那个数据库版本或者分支开始使用GTID复制.

 

建议听众:

DBA,SA、程序员,架构师等MySQL相关从业人员

感兴趣的同学请提前加入QQ群:125572178,更多精彩分享等着你 :)

[技术分享] MySQL线上SQL捕获及分析

作者:吴炳锡 来源:http://wubx.net/ 联系方式: wubingxi#163.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.

分享题目:MySQL线上SQL捕获及分析

分享者: 吴炳锡

时间: 2014年11月21日, 20:30-10:30
分享方式: 在线分享,利用QQ+YY,参加同学,提前加入QQ群:373900864 (暗号: 群主是帅哥)

该PPT是在2014 Oracle技术嘉年华上的一个分享,分享后,很多同学在QQ找我聊,怎么做线上SQL的分析之类。当然也有很多同学没能参加,我就是借着网络在此做一次分享,利用网络和大家做一个交流。分享的方式: QQ+YY (没有YY的同学需要注册一个)

优化是DBA或是架构师们在不断追求的方向,也是大家热忠追求的技术,如果说优化是技术里面的屠龙技术,要想去屠龙很重要的技术是要学会寻龙,在分本享中,通过线上SQL捕获,和大家一块讨论一下如何寻找SQL优化中的大龙。

分享内容:

  • 线上捕获SQL方法
  • 基于tcpdump线上SQL抓取
  • 基于查询日志记录
  • 基于慢日志记录全量日志
  • 捕获的SQL分析方法
  • 线上SQL抓取及分析平台化实现

感兴趣的同学请提前加入QQ群: 373900864 更多精彩分享等着你。

redis-oom-command-not-allowed报错

作者:吴炳锡 来源:http://wubx.net/ 联系方式: wubingxi#163.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.

OOM command not allowed when used memory > ‘maxmemory’ 报错排查

grep “OOM command not allowed when used memory > ‘maxmemory'” * -r
src/redis.c: “-OOM command not allowed when used memory > ‘maxmemory’.\r\n”));

查看src/redis.c

从代码确认报这个错,大概是内存达到最大限时不能释放出来内存报的错。

做一个简单的验证:

配置一个10M大小的Redis,利用一个python程序往里面写数据,很快得到报错:

结论:

  1. Redis运行中监控内存的使用情况.
  2. 如果只做缓存使用,需要配置上lru策略,如

    如果做持久化存储说明,内存也不够用了。需要考虑增加内存。
  3. 故障现场要看一下Redis的info输出,看看内存配是否达到了上限。

varchar和text说不清的那些事

作者:吴炳锡 来源:http://wubx.net/ 联系方式: wubingxi#163.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.

最近有几个同学问我varchar和text有啥别吗,这个问题,以前说真的也没太多的整理,以前遇到text在设计中就是尽可能的拆到另一个表中,保持主表尽量的瘦小,可以让innodb bp缓存更多的数据。

今天借次机会系统整理一下,主要从存储上,最大值,默认值几个方面进行比较。

BTW: 从ISO SQL:2003上讲VARCHAR是一个标准型,但TEXT不是(包括tinytext).varchar在MySQL 5.0.3之前只支持0-255byte, 在5.0.3之后才支持到0-65535byte.

从存储上讲:

说完存储后,说一下使用这些大的变长字段的缺点:

那问题来了? 为什么varchar(255+)存储上和text很相似了,但为什么还要有varchar, mediumtext, text这些类型?
(从存储上来讲大于255的varchar可以说是转换成了text.这也是为什么varchar大于65535了会转成mediumtext)

我理解:这块是一方面的兼容,另一方面在非空的默认值上varchar和text有区别。从整体上看功能上还是差别的。

这里还涉及到字段额外开销的:

备注 overhead是指需要几个字节用于记录该字段的实际长度。

从处理形态上来讲varchar 大于768字节后,实质上存储和text差别不是太大了。 基本认为是一样的。
另外从8000byte这个点说明一下: 对于varcahr, text如果行不超过8000byte(大约的数,innodb data page的一半) ,overflow不会存到别的page中。基于上面的特性可以总结为text只是一个MySQL扩展出来的特殊语法有兼容的感觉。

默认值问题:

总结:

源码中类型:

(末完待续,也希望大家一块讨论一下)

参考:
http://yoshinorimatsunobu.blogspot.com/2010/11/handling-long-textsblobs-in-innodb-1-to.html
http://nicj.net/mysql-text-vs-varchar-performance/
http://www.pythian.com/blog/text-vs-varchar/

 

测试SQL及方法

 

MySQL 二进制日志格式基础(一)

作者:吴炳锡 来源:http://wubx.net/ 联系方式: wubingxi#163.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.
MySQL二制进日志用于记录数据库的变更记录,这里从结构上讨论一下日志的格式。

每个日志都包含4个字节的magic number 和event的描述包

  1. 日志有前四个字节是magic number: oxfe ox62 0x69 0x6e = 0xfe ‘b”i”n’ 转成整数:1852400382  用处就是读4个字节对比不是这个数,说明就不是二进制日志,就不用处理了。
  2. 每个event的header大概如下:
  3. 第一个event称为:format descriptor event(Event描述结构:FDE) 用于说明日志的格式
  4. 其它event就是依赖于描述结构不同,用不同的结构记录数据
  5. 最后一个event是: 日志切换事件(log-rotation event)用于指点定下个日志的文件名

每个event的结构大概如下:

现在大多使用的V4结构,从MySQL 5.0起,具体如下:

第一个event是FDE结构没有extra_headers部分,所以固定为19个字节。

FDE的event_data中定长部分为:

  • 2字节的的日志格式版本,从MySQL 5.0后都是4
  • 50字节 用于记录MySQL的版本号 如:5.6.16-64.2-rel64.2-log 不够50字节用0x00填充
  • 4字节 日志产生的时间
  • 1字节 header长度。一般是19,如果大于19,则下面的event都有extra_header字段
    对于FDE变长部分一般为空

其它Event计算

  • header length = x byte
  • data length = (event_lenth -x )byte
  • 数据区里定长部分长度

如果给定的X不是19,则存extra_header里面有内存
Y依赖于event_type有不同的大小,需要参考不同的event进行特别处理
参考:http://dev.mysql.com/doc/internals/en/event-data-for-specific-event-types.html

MySQL免费技术分享《百万级在线MySQL架构分享》

作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#163.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.

随着传统企业去IOE的声音越来越大,也有很多朋友来咨询MySQL的架构设计问题,所以决定做这个分享让决定或是想使用MySQL的朋友能从整体上了解一下如何利用MySQL构建一个百万级在线(或是百万并发的架构)
分享时间:2014年8月14日 20:30  在线技术分享

参加朋友加QQ群:159636401 
分享者介绍
吴炳锡 新媒传信 数据库架构师
Blog: http://mysqlsupport.cn

公司数据库托管平台设计及核心开发者
公司海量数据平台设计及开发人员
熟悉MySQL高可用原理及技术实现
丰富的基于MySQL架构设计及规划经验
MySQL中国用户组核心人员 (http://acmug.com/)

建议听众:
面向DBA人员,架构师,基于MySQL开发人员

分享目标:
让大家深入了解MySQL的特性
供基于MySQL开发的同学们做出最佳实践
全面整体上认识MySQL在架构设计中如何进行拆分
了解NoSQL和MySQL是如何结合使用优化架构

想参加分享的同学请提前加入Q群: 159636401  更多精彩分享等着你 :)

这只是一个开始,更多分享,一块来交流。

[TIPS]安装数据库提示无法解析机器名处理

作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#163.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.

在做MySQL初始化时,如果机器的名不能进行反解会出现以下错误:

/usr/local/mysql/bin/resolveip: Unable to find hostid for ‘node2′: host not found

处理过程如下

1. 查看机器的名

node2

2. 查看/etc/hosts文件

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

可见/etc/hosts中无相应的机器名

添ip(本机的ip) 到机器的对应到/etc/hosts中:

最终/etc/hosts内容如下:

3.使用resolveip确认是否ok

IP address of node2 is 10.10.60.148

4. 在次运行初始化程序

Good luck!