关于吴 炳锡

数据库架构师 熟悉MySQL架构设计及数据库架构优化。 丰富的MySQL优化及高可用架构经验。

2017.4.6发车 |《MySQL 5.7高可用新玩法》

写在开始之前:

这次技术分享,在选择上面监很多犹豫。 原因如下: 最近在做企业服务过程中发现很多朋友对于MySQL知识还在停留在MySQL 5.1 或是 MySQL 5.5的状态。很多公司的开发规范也是针对5.5或是5.1编写。 而MySQL 5.7可以说是一个变化比较大的版本。 这次分享可以讲的话题有很多,如:

如果选择复制: MySQL 5.7 为止复制结构差不多组合出来有7-9种结构,对于每一种业务场景或是运维场景都有灵活的选择。

但最终定位在MySQL 5.7的高可用。从实际观查这个对于生产帮助更大。  希在本次分享中能对大家有帮助。

1、主题

《MySQL 5.7高可用新玩法》

2、嘉宾介绍

吴炳锡 知数堂培训联合创始人,前新媒传信首席DBA,吴炳锡老师具有多年MySQL及系统架构设计及培训教学经验,擅长MySQL大规模运维管理优化、高可用方案、多IDC架构设计,以及企业应用数据库设计等经验。

3、课程简介

MySQL 5.7版本中新增了真正意义上的多线程复制、多源复制、增强半同步复制,以及Group Replication,众多新特性让人眼前一亮。随着这些新特性的日益成熟,在MySQL 5.7上的高可用架构也可以有了新玩法。

在本次分享中,先介绍Group Replicaiton的实现原理,重点介绍MySQL 5.7下利用多源复制实现的高可用架构方案。

内容大纲:

1、MySQL 5.7在复制方面的几个新特性;

2、MySQL 5.7 Group Replication实现原理;

3、利用多源复制,实现新的高可用架构;

4、基于多源复制及Group Replication限制。

分享方

分享时间:2017.4.6(周四) 晚上20:30 – 21:30

分享方式:通过YY语音同步直播,以及在QQ&微信群发送PPT等图文内容

YY频道:53695719(需提前安装YY客户端,支持windows/ios/andriod多平台)

请提前加入知数堂技术交流QQ群:579036588,或扫描识别下面二维码加入。(已经在知数堂一群、二群的无需再加入三群,分享时三群联动)

关于知数堂

“知数堂培训”是由资深MySQL专家叶金荣、吴炳锡联合推出专业优质在线培训课程,主要有MySQL DBA实战优化、Python运维开发和 SQL开发优化三个课程,是业内最有良心、最有品质的培训品牌。

目前MySQL DBA实战优化班以及Python运维开发班均在招生中。学员已超600多人,众多优秀学员在腾讯、淘宝、支付宝、百度、网易、京东、乐视、去哪儿、滴滴、猎豹、58、微博、金山云、聚美、顺丰、德邦、韵达、苏宁、恩墨、沃趣、爱可生、37玩、宝存、人人贷、美的、新东方、平安金融等众多知名公司担任DBA等职位,在获得更好的职业发展机遇同时薪资也得到了大幅提升。

有兴趣的同学请关注 知数堂 官方公众号”izhishuedu” 后发送 “开班”、“招生”、“大纲” 等关键字即可获得课程详细信息。

知数堂my.cnf生成器

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

MySQL的默认配置比较保守。 有好的硬件还是需要有好的配置才可以发可以发挥MySQL的性能。
如果你是开发人员,为MySQL配置发愁时,可以来用一下 http://zhishutech.net/my-cnf-wizard.html
如果你是DBA初级人员,为MySQL配置纠时,可以来用一下: http://zhishutech.net/my-cnf-wizard.html
如果你是DBA高级人员,来一块优化http://zhishutech.net/my-cnf-wizard.html 这个吧。

让我们听到你的声音。

Innodb表select查询顺序不对?

今天知数堂一个学生反馈说在优化课中老师讲Innodb是以主键排序存储,读取的时间以主键为顺序读取,但发现个例外,如下:

CREATE TABLE zst_t1 (

uid int(10) NOT NULL AUTO_INCREMENT,

id int(11) NOT NULL,

PRIMARY KEY (uid),

KEY idx_id (id)

) ENGINE=InnoDB;’

写入数据:

INSERT INTO zst_t1 VALUES (1,1),(12,1),(22,1),(23,1),(33,1),(2,2),(3,2),(10,2),(11,2),(4,4),(13,4),(14,4);

执行查询:

select * from zst_t1;

为什么这个顺序是乱的,不按顺序排列呢?难道Innodb表并不是全按主键存储?

使用innodb_ruby这个工具查看一下存储结构什么样

看样子存储还是按主键排序存储的。没毛病。

再来看一下该表的索引:

看到这里应该明白了怎么会事了吧,原来这个查询是走的索引覆盖,没有在进行回表读取原数据。另外,也在此说明,Innodb二索索引包含了主键存储。

来继续证明一下:

看到using index 吧,表示这个查询利用索引查询出来结果,不用读取原表。

那么我们给造一个通过主键读取数据操作:

select * from zst_t1 use index(primary);

select * from zst_t1 use index(primary);  #确认一下。

总结:

这个其实就是一个索引包含的查询案例。 如果静下来思考一下,也许很快就明白了。也不用这样去查问题。

技术在于折腾,多搞搞就明白了:)。

centos 6下innodb_ruby安装

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

innodb_ruby是jeremycole的一个用于分析Innodb相关结构的一个程序,也是非常方便我们研究Innodb的结构工具。所以这里做一个介绍。

jeremycole github里的分享的项目都很优秀,这里就直接推荐一下他的github: https://github.com/jeremycole

innodb_ruby依赖ruby>=1.9.3的版本。 Centos默认yum版本比较低。需要手工编译,建议从ruby-china的镜象(https://ruby-china.org/wiki/ruby-mirror)上下载:

#wget https://cache.ruby-china.org/pub/ruby/ruby-1.9.3-p551.tar.gz

安装前需要把依赖包先安装上:

#yum -y install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel

如果系统里没装mysql请把mysql-devel这个包也装一下。

 

tar zxvf ruby-1.9.3-p551.tar.gz

cd ruby-1.9.3-p551

./configure

make

make install

 

完成Ruby安装后,就可以安装innodb_ruby

gem install innodb_ruby

等待提示成功后,就可以开始innodb_ruby之旅。

参考帮助: https://github.com/jeremycole/innodb_ruby/wiki

Innodb好玩的开始了。

特别提示: 注意上面的命令需要在datadir下执行。玩的开心。

定制Linux使用的提示符

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

本文发在fireflyclub.org 和 wubx.net 上

用于记录一下提示符:
添加到/etc/profile

zst_ps1()
{
    Date=$(date +%F)
    Time=$(date +%H:%M:%S)

    PS1="\\n\[\e[1;37m[\e[m\]\[\e[1;32m\u\e[m\]\[\e[1;33m@\e[m\]\[\e[1;35m\h $Time \e[m\]\e[1;36m\`pwd\`\e[m\e[1;37m]\e[m\n\\$"
}

PROMPT_COMMAND=zst_ps1

执行:
source /etc/profile

后补知识:

prompt 参数含义:

\d :#代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :#完整的主机名称
\h :#仅取主机的第一个名字
\t :#显示时间为24小时格式,如:HH:MM:SS
\T :#显示时间为12小时格式
\A :#显示时间为24小时格式:HH:MM
\u :#当前用户的账号名称
\v :#BASH的版本信息
\w :#完整的工作目录名称
\W :#利用basename取得工作目录名称,所以只会列出最后一个目录
# :#下达的第几个命令
\$ :#提示字符,如果是root时,提示符为:# ,普通用户则为:$

终端下色彩:

前景    背景
30      40      黑色
31      41      红色
32      42      绿色
33      43      黄色
34      44      蓝色
35      45      紫红色
36      46      青蓝色
37      47      白色

效果控制

代码              意义   
-------------------------   
0                 OFF   
1                 高亮显示   
4                 underline   
5                 闪烁   
7                 反白显示   
8                 不可见

定义色的开始及结束:
开始: [\e[N;Mm     # 其中N可以指效果或是背景色, M是前景色
结束: [\e[m             #终止特效

练习:

echo -e "\e[1;34m 蓝色字 fireflyclub.org  \e[m"
echo -e "\e[1;35m 紫色字 fireflyclub.org  \e[m"
echo -e "\e[1;36m 天蓝字 fireflyclub.org  \e[m"
echo -e "\e[1;37m 白色字 fireflyclub.org  \e[m"

玩的开心:) 去定制你自已喜欢的提示符吧。

MySQL Beginer 开篇

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

公众号出现已经快4年多了, 做为一名技术人员,还是喜欢RSS订阅, 虽然自已也订阅了一些公众号,如: 老叶茶馆(imysql_wx), 运维帮,Docker社区等等,可是说真的看的真不多。平时看还是RSS订阅及朋友圈转来的文章,也感受公众号挺方便的,但看看微信的公众号的产品经理的设计,我觉的是一种产品的倒退,一直没行动。
今天在三在朋友的鼓励下也注册了一个公众号,起名: MySQLBeginer 。用这个公众号,我有两个原因,一是做知数堂快2年了,接触这个方向学习的人比较多,也了解各位的需求,所以想写点入门方面的文章,给大家推荐一下MySQL方面的优秀工具,或是SQL的功能实现,低调做事开始,解决实际问题。
那么如果你是小白用户,这个公众号,你要关注一下,如果你是大牛用户,我建议你也关注一下,看到感兴趣的方向,大家一块来投个稿。送人玫瑰手有余香。如果你有更多的想法,或是平时也想聊聊,可以考虑加入我为这个微信群群:MySQLBeginer。第一时间获取到近期的写作方向。请关注我.

mysqlbeginer%e4%ba%8c%e7%bb%b4%e7%a0%81

知数堂公课-第22次-数据库中间件在业务系统中的作用

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

本次知数堂有兴邀请到杭州平民软件资深MySQL开发人员人王广友,给大家带来一个关于数据库中间件在业务系统中的作用。

关于分享者

  • 4年专职MySQL DBA,丰富的数据库与应用性能优化经验
  • 个人博客 http://www.cnblogs.com/youge-OneSQL/
  • 个人网站(时效性、准确性) http://www.yougemysqldba.com/
  • MySQL源码相关 mysqlbinlog flashback for 5.6
  • http://www.cnblogs.com/youge-OneSQL/p/5249736.html l 长期活跃于itpub
  • ID: wgy20051896
  • 微信 onesoft007

通过本次分享,让我们看到MySQL在现有业务使用中的一些软肋:

  • 连接数支持不够友好,(官方推出一个thread-pool,但是企业版中的需要收获)
  • 读写开离,在实现上还需要程序层支撑
  • 数据库里执行过什么样的SQL及分布情况不好统计
  • 负载方案少

使用中间件可以到的改善

  • 连接池功能
  • 支持带权重的负载均衡
  • 主从延迟检测的负载均衡
    >从库延迟自动下线,恢复后上线
  • 基于查询代价的负载均稀
    >把一些复制的SQL做读写分离,不复杂的还是直接去主库查询
  • 通过SQL语句中加入HINT来做到实时非实时查询混合
  • 自动实现负载中的数据库故障下线,主库故障自动选主,从库故障下线,恢复后自动加入
  • 支持透明的分库分表
  • 在中间件上实现防火墙功能,把危险SQL过滤掉
  • 在Proxy上实现全局Sequence分配,多Proxy之间实现协同
  • 支持Proxy之间做故障切换

通过该分享觉的这个Proxy是业务中的绝对利器,可以帮着开发省不少开发业务的时间。更多信息请参考:传送门http://pan.baidu.com/s/1i4ZOfop (含PPT和当晚分享视频)

关于知数堂

http://zhishuedu.com

“知数堂培训”是由资深MySQL专家叶金荣、吴炳锡联合推出专业优质在线培训课程,当前主要有MySQL DBA实战优化和Python运维开发两个课程,是业内最有良心、最有品质的培训课程。

目前MySQL DBA实战优化班第八期以及Python运维开发班第二期均已火热开班。学员已有400多人,超过40%的优秀学员进入腾讯、淘宝、京东、乐视、去哪儿、滴滴、猎豹、58、微博、金山云、聚美、苏宁、恩墨、沃趣、爱可生、37玩、宝存、人人贷、美的、新东方、平安金融等众多知名公司,在获得更好的职业发展机遇同时薪资也得到了大幅提升。

MySQL DBA实战优化班课程从第八期起全新升级,除了将MySQL教学版本升级到5.7外,还加入Percona、MariaDB的使用实践经验,以及更多实战案例,课程内容精彩纷呈不容错过。

Python运维开发课程第二期课程内容会进行大幅更新,除了增加了基础知识的扩充,还加入Django讲解和Docker基础运维内容,实实在在帮助学员提高综合能力,求职跳槽加薪不再难,O(∩_∩)O哈哈~

知数堂MySQL DBA在线培训招生中

知数堂MySQL DBA在线培训班值得信赖吗?

知数堂培训是由资深MySQL专家叶金荣、吴炳锡联合推出专业优质在线培训课程,目前主要有MySQL DBA实战优化和Python运维开发两个课程,是业内最有良心、最有品质的培训课程。

其中MySQL DBA实战优化班已开班2年多,有将近500位学员,随到随学。我们还将继续专注MySQL DBA培训服务,为这个行业挖掘出更多优秀的MySQL DBA人才。

参加完培训好跳槽/转岗吗?

知数堂MySQL DBA班级的数位早期学员参加完培训后,其职业生涯都获得了很大程度提升,无论加薪还是晋升。不少同学终于实现了从非专职MySQL DBA到专职MySQL DBA的华丽转身。
大湿胸、大师姐、刚架构、神医、达梦哥、猪肉哥、心灵哥、波波等人,都是这些故事的主人公。
超过40%的优秀学员进入腾讯、淘宝、京东、乐视、去哪儿、滴滴、猎豹、58、微博、金山云、聚美、苏宁、恩墨、沃趣、爱可生、37玩、宝存、人人贷、美的、新东方、平安金融等众多知名公司。
学员中,甚至也有其他培训机构的讲师(是否讲授MySQL课程我们不得而知)。
我们还和众多一线互联网公司建立密切合作关系,优秀学员有机会获得内推直达“服务”,进一步帮助学员获得更好的起点。当然了,这个不作为我们的承诺,只能看猿粪了。

在线网络培训可靠吗?

我们的班级学员来自全球各地五湖四海,其中北京、上海、深圳、广州最多,约一半以上,其余来自杭州、南京、西安、福州、厦门、成都、重庆IT行业二线发达城市,更有数位海外学员,他们来自韩国首尔、泰国曼谷,美国等地。
有这么多学员的选择,您完全可以放心。无论是教学质量还是课程的持久性。

在网络教学中通过平台老师和学校直播授课,有问题及时解答,互动非常强。

零基础可以参加培训吗?

当然可以。
但我们仍然建议最好要先自学一些基础知识,包括Linux的基本管理、MySQL基本使用(安装配置、日常管理、SQL用法等)。可以关注本公众号:imysql_wx,发送关键字“新手”,获得相应学习资料推荐。
此外,我们的课程一大优势是:一次交费,可反复听课一年(约4期,每期3个月,事实上肯定超过一年),这么长时间,相信聪明伶俐、勤奋好学的您肯定早已掌握MySQL DBA的心法秘诀了吧。

我觉得学费挺贵的,怎么破?

亲,一年才7000啊,折算下来一个月还不到500,一天不到20块,每天省出一顿饭钱而已。
最重要的是,学成之后,您所获得的晋升、加薪,可能只要1个月就可以回本了,天底下哪里还有这么高回报率的投资?
事实上,这个价格相比其他机构动辄9800, 16980之类的已经便宜很多了。因为我们的市场营销成本为0,主要靠学员间口碑效应做大,且当前处于创业初期阶段,公司运营成本也比较低,并不是为了打价格战。
心动不如行动,快点加入吧。

好吧,被你忽悠成功了,怎么付款

访问 http://zhishuedu.com 知数堂 即可直接跳转到我们的官方淘宝店 传送门

我还有疑问的话,怎么联系你们

有兴趣参加知数堂培训请加入QQ群:529671799、373900864,欢迎前来垂询具体事宜。

扫描下面二维码加入QQ群
QQ群1:529671799

QQ群2:373900864

关于知数堂

“知数堂培训”是由资深MySQL专家叶金荣、吴炳锡联合推出专业优质在线培训课程,目前主要有MySQL DBA实战优化和Python运维开发两个课程,是业内最有良心、最有品质的培训课程。
其中MySQL DBA实战优化班已开班2年多,有将近400位学员,目前第8期即将开班。我们还将继续专注MySQL DBA培训服务,为这个行业挖掘出更多优秀的MySQL DBA人才。

超过40%的优秀学员进入腾讯、淘宝、京东、乐视、去哪儿、滴滴、猎豹、58、微博、金山云、聚美、苏宁、恩墨、沃趣、爱可生、37玩、宝存、人人贷、美的、新东方、平安金融等众多知名公司。学员中,甚至也有其他培训机构的讲师(是否讲授MySQL课程我们不得而知)。

我们还和众多一线互联网公司建立密切合作关系,优秀学员有机会获得内推直达“服务”,进一步帮助学员获得更好的起点。当然了,这个不作为我们的承诺,只能看猿粪了。

MySQL DBA实战优化课程总耗时约90学时,每周一至周四晚上20:30 – 22:30上课,前后历时约3个月,由叶、吴两位大师倾心亲授,毫无保留,该课程特别适合运维工程师、开发工程师、架构师、ORACLE DBA、SQL Server DBA来参加,愿我们的课程能为您的职业发展道路助力腾飞。

Python运维开发班课程总耗时约60学时,每周六全天上课6个学时,共10个周末,由张增老师(曾就职于360、乐视,主要负责云平台后端服务开发)授课。该课程特别适合SA、DBA、在校生学习,参加完本课程学习后,基本可胜任 Python 开发工程师、Python 后台开发工程师、运维开发及 运维等相关工作 。

MySQL_5.7-innodb-buffer-pool-size新特性

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

MySQL 5.7.5后Innodb_buffer_pool_size一方面可以动态分配。但另一方面也引入了一个新特性。 bp分配必须是innodb_buffer_pool_chunk_size的倍数。同时最好是:innodb_buffer_pool_chunk_size*innodb_buffer_pool_instances.

innodb_buffer_pool_chunk_size默认是128M.

当Innodb_buffer_pool_size分配小于innodb_buffer_pool_chunk_size时,innodb_buffer_pool_chunk_size收缩到等于innodb_buffer_pool_size/innodb_buffer_pool_instances.
当于innodb_buffer_pool_size 大于innodb_buffer_pool_chunk_size时,innodb_buffer_pool_chunk_size自动取innodb_buffer_pool_chunk_size的倍数从而获取更好的性能。

所以于MySQL5.7.5对于Buffer的分配需要提前计算一下。 尽量让innodb_buffer_pool_size = innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances 从而获取一个较佳的性能。

mysqld_multi关闭不了MySQL处理Tips

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

在启用MySQL多实例中,很多环境会选择使用mysqld_multi管理多实例,但不幸的是从MySQL 5.6 后,
mysqld_mutli不能把MySQL关掉了。

对于这个问题的处理办法,首先确认:

mysqladmin -h127.0.0.1 -P3307 -umdev -p shutdown
or
mysqladmin -S /tmp/mysql3307.sock -umdev -p shutdown

工作没问题。

创建用户:

create user ‘mdev’@’localhost’ identified by ‘mdev4admin’;
grant shutdown on *.* to ‘mdev’@’localhost’;

很幸运mysqld_multi是一个Perl脚本,找原因也方便,有兴趣参考后面的文档。
处理办法:

  1. 修改mysqld_mutli 把
    my $com= join ' ', 'my_print_defaults ', @defaults_options, $group;
    替换为:
    my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;
  2. 调用mysqld_multi传入password
    mysqld_multi stop 3307 --password=mdev4admin

如果需要更多信息,可以加入QQ群:529671799  下载。