MySQL核心代码开发经验与贡献分享.ppt
《MySQL核心代码开发经验与贡献分享.ppt》由会员分享,可在线阅读,更多相关《MySQL核心代码开发经验与贡献分享.ppt(46页珍藏版)》请在三一办公上搜索。
1、,北京万里开源软件有限公司,MySQL核心代码开发经验与贡献分享,何振兴 技术副总经理,DTCC2012,Copyright 2012 Great OpenSource Inc.,自我介绍,2004 年加入北京万里开源软件有限公司,负责,Turbolinux企业级服务器产品的研发 2007 年负责MySQL中国研发中心,2009年开始负责万里开源公司MySQL研发团队,分布,式数据库系统、Turbolinux操作系统、云计算平台等产品的研发工作,DTCC2012,Copyright 2012 Great OpenSource Inc.,内容,公司介绍,MySQL推广,MySQL Bug 修复,
2、MySQL核心代码贡献,数据库产品研发,DTCC2012,Copyright 2012 Great OpenSource Inc.,北京万里开源软件有限公司,公司介绍,DTCC2012,Copyright 2012 Great OpenSource Inc.,北京万里开源软件有限公司 北京万里开源软件有限公司是一家立足于中国的开源软件产品、解决方案和技术服务提供商 致力于在中国推广LAMP架构的企业级应用Turbolinux开 放 源 代 码 的 LAMP 架 构(即,ApacheMySQL,Linux、Apache、MySQL、Perl/Python/PHP编程语言)已经与J2EE和.Net
3、形成三足鼎立之势,成为目前最受欢迎的,Web应用和开发环境的组合PHPDTCC2012Copyright 2012 Great OpenSource Inc.,万里开源与拓林思,(国内厂商),(JP),控股北京拓林思软件公司(中外合资)拓林思与万里开源共享所有产品以及产品著作权DTCC2012Copyright 2012 Great OpenSource Inc.,中国最早的MySQL合作伙伴 2005年开始与MySQL AB合作,作为当时中国唯一的认证白金合作伙伴,在全国范围提供MySQL产品销售、咨询与支持服务,为关键的企业级数据库应用提供技术支持及数据保障 拥有多位MySQL认证的专业工
4、程师 2006年与MySQL AB共同建立了中国研发中心,Oracle的金牌合作伙伴,“MySQL一直非常关注中国市场的,发展,希望与我们的合作伙伴一起为中国的开源事业作出更多的贡献。”MySQL创始人David AxmarkDTCC2012Copyright 2012 Great OpenSource Inc.,MySQL代码贡献最大的中国研发团体,万里开源MySQL中国研发团队,2006年8月29日,MySQL AB与万里开源共同组建,MySQL中国研发中心,参与NDB Cluster 的开发 2007年10月,开始参与 Replication 的开发,2008年1月,Sun收购MySQL
5、之后,MySQL中国研发,中心也随之终止,但保留研发团队,继续MySQL的研发合作,2009年4月Oracle收购Sun之后仍继续研发合作,同时,开始万里开源自己的数据库相关产品的研发,2011年年底,万里开源终止与Oracle在MySQL上的研,发合作,DTCC2012,Copyright 2012 Great OpenSource Inc.,万里开源致力于中国企业级市场的MySQL推广,MYSQL推广,DTCC2012,Copyright 2012 Great OpenSource Inc.,MySQL推广案例,国家突发公共事件预警信息发布系统,国家突发公共事件应急体系的重要组成部分,自然
6、灾害 事故灾害,公共卫生事件 社会安全事件,整个系统基于B/S架构,国家、省、地市三级部署,1 个国家级突发公共事件预警信息管理发布平台 31 个省级突发公共事件预警信息管理发布平台 342 个地市级突发公共事件预警信息管理发布平台 2379 个县级突发公共事件预警信息管理终端,DTCC2012,Copyright 2012 Great OpenSource Inc.,MySQL推广案例,国家突发公共事件预警信息发布系统总体布局,DTCC2012,Copyright 2012 Great OpenSource Inc.,MySQL推广案例,万里开源推动MySQL中标国家突发公共事件预警信息发布
7、系统 国家、省和地市级都包含数据库服务器 数据库服务器软件的采购量在700套以上,几乎国内外各大数据库软件都参与投标,如 MySQL,、Oracle、DB2、Sybase等,万里开源在项目开始之初就积极推动MySQL在该项目,上的应用,为项目承办方提供广泛深入的MySQL 技术和商务咨询,解除他们对MySQL的担忧,并最终促成MySQL中标国家突发公共事件预警信息发布系统项目,的数据库软件,DTCC2012,Copyright 2012 Great OpenSource Inc.,MySQL核心代码开发流程和方法,MYSQL BUG修复,DTCC2012,Copyright 2012 Grea
8、t OpenSource Inc.,MySQL BUG修复流程,QA 验证 Bug,分配开发人员,修复(1人),代码审核(2人)开发人员的工作,编写测试用例,用于重现Bug、代码调试和回归测试 调试和分析问题,提出解决方案 修改代码,运行测试用例,通过后提交patch,审核人员对patch进行审核,提出审核意见 根据审核意见修改patch,审核通过后将patch push到bugfixing分支,合并到Trunk,技术文档人员更新相应的文档,DTCC2012,Copyright 2012 Great OpenSource Inc.,MySQL测试框架简介,MySQL 测试框架的基本思想是比较(
9、diff)运行测试,产生的输出和预先保存好的预期结果,每个测试包含一个测试文件(.test)和一个结果文件,(.result),测试文件中可以使用SQL语句和mysqltest指令,测试用例依照功能分为多个suite,main suite测试文件放在 mysql-test/t,结果文件放在mysql-test/r;其,他suite在mysql-test/suite目录下,如:,mysql-test/suite/rpl/t,r,mysql-test/suite/binlog/t,r,DTCC2012,Copyright 2012 Great OpenSource Inc.,a,1,2,测试用例样
10、本,测试文件 t/sample.test-disable_warningsDROP TABLE IF EXISTS t1;-enable_warningsCREATE TABLE t1(a INT);INSERT INTO t1 VALUES(1);INSERT INTO t1 VALUES(2);,结果文件 r/sample.resultDROP TABLE IF EXISTS t1;CREATE TABLE t1(a INT);INSERT INTO t1 VALUES(1);INSERT INTO t1 VALUES(2);INSERT INTO t1 VALUES(3);SELECT*
11、FROM t1;,INSERT INTO t1 VALUES(3);SELECT*FROM t1;DROP TABLE t1;3DROP TABLE t1;DTCC2012Copyright 2012 Great OpenSource Inc.,运行测试用例,使用mysql-test/mysql-test-run.pl 运行测试用例,$./mysql-test-run.pl sample,如果运行某个suite下的测试,可以使用-suite选项,$./mysql-test-run.pl-suite=binlog binlog_database,可以使用-record选项生成结果文件,结果文件会
12、保存,在测试文件对应的结果文件夹中$./mysql-test-run.pl-record sample,脚本mysql-test-run.pl会自动启动mysqld,并将测试文,件中的语句发送到mysqld执行,并比较结果,使用-gdb 可以自动启动调试器调试mysqld,$./mysql-test-run.pl gdb sample,DTCC2012,Copyright 2012 Great OpenSource Inc.,测试Replication功能,脚本mysql-test-run.pl支持测试Replication功能,自动,启动两个mysqld实例,在测试文件中包含 include
13、/master-slave.inc 可以初始,化一个主从Replication测试环境,通过使用 mysqltest 指令 connect 和 connection 可以,在测试文件中连接到master或slave上执行SQL语句,DTCC2012,Copyright 2012 Great OpenSource Inc.,复制测试实例suite/rpl/t/rpl_drop.test#Testcase for BUG#4552(DROP on two tables,one of which does not#exist,must be binlogged with a non-zero err
14、or code)source include/master-slave.inc;,create table t1(a int);-error 1051drop table t1,t2;-sync_slave_with_master#End of 4.1 tests-source include/rpl_end.inc,指令 source 用于包含给定文件的内容,通常Replication测试用例都会包含 include/master-slave.inc,该包含文件会初始化主从复制环境,并创建名为master和slave的连接,可使用 connection指令转换连接,初始连接的是master,
15、可以使用-connection slave 连接到 slave,之后的语句都将发送到 slave指令 error 指明下一语句期望产生的错误,指令 sync_slave_with_master 等待slave完成同步指令推荐使用-格式,以区别于SQL语句DTCC2012Copyright 2012 Great OpenSource Inc.,MySQL 测试框架参考资源,The MySQL Test Framwork,Version 2.0,http:/,mysqltest Language Reference,http:/,commands.html,How to Create Good T
16、ests,http:/,Test Synchronization,http:/,tion,DTCC2012,Copyright 2012 Great OpenSource Inc.,Bug#32205,Replaying statements from mysqlbinlog failes with a syntax error,replicates fine,现象是使用mysql客户端执行mysqlbinlog dump 出的,语句时产生语法错误,问题的原因是mysqlbinlog在dump 语句时,会在语句,最后添加定界符(/*!*/),但如果原始SQL语句中使用-注释时,就会导致这个定界
17、符也被当成了注释,CREATE TABLE t1(a INT)-create table;INSERT INTO t1 VALUES(1);,CREATE TABLE t1(a INT)-create table/*!*/INSERT INTO t1 VALUES(1)/*!*/,DTCC2012,Copyright 2012 Great OpenSource Inc.,Bug#32205 测试用例,-source include/have_log_bin.inc-disable_warningsDROP TABLE IF EXISTS t1;-enable_warningsCREATE TA
18、BLE t1(a INT)-create table;,MYSQLTEST_VARDIR 测试用的 var 路径,用于日志、临时文件等MYSQL_BINLOG mysqlbinlog 客户端的路径MYSQL mysql 客户端的路径MYSQLD mysqld 服务器的路径MYSQL_TEST mysqltest 客户端的路径MYSQL_TEST_DIR 运行测试的mysql-test路径,INSERT INTO t1 VALUES(1);FLUSH LOGS;let$MYSQLD_DATADIR=select datadir;-exec$MYSQL_BINLOG$MYSQLD_DATADIR/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 核心 代码 开发 经验 贡献 分享
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2281222.html