hotmail
作者hotmail·2015-04-01 17:14
软件开发工程师·hotmail

剖析MySQL与商业数据库的区别及故障诊断的一般思路

字数 2460阅读 1552评论 0赞 0

一、MySQL历史
1979年由芬兰Monty Widenius开发->2000年成立MySQLAB公司->2000年1月开发整合了Berkeley DB引擎开始支持事务处理->2000年4月整合MyISAM存储引擎->2001年整合第三方存储引擎innodb?2005年发布MySQL5.0开始支持游标、存储过程、触发器及视图等功能?2008年被Sun收购->2009年Sun被Oracle收购->2010年之后发布的版本向高性能数据库的方向发展,MySQL5.5之后开始支持分区表和使用裸设备存储数据
目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
二、MySQL特性
1、开源
2、轻量级
3、使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性满足安全运行需求
3、支持AIX、FreeBSD、HP-UX、Linux、MacOS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统
4、为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等
5、支持多线程,充分利用CPU资源
6、优化的SQL查询算法,有效地提高查询速度
7、既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中
8、提供TCP/IP、ODBC和JDBC等多种数据库连接途径
9、提供用于管理、检查、优化数据库操作的管理工具
10、总体拥有成本TCO低
11、可以自定义存储引擎,也可以自己开发存储引擎配置到MySQL使用
12、可以自由裁剪及开发MySQL第三方插件
三、MySQL与DB2、Oracle及SQLserver比较
1、oracle、db2等数据库收费,MySQL免费
2、SQL文写法上有些差异,比如MySQL可以用双引号包起字符串,Oracle只可以用单引号等;
3、字段类型上存在差异,oracle没有区分TIME和Date类型,MySQL区分了这两个字段的使用区别;
4、主键处理不同,MySQL一般使用自增长类型主键;Oracle主键一般使用序列;
5、翻页处理,MySQL处理比较简单使用limit开始位置,记录个数Oracle比较繁琐;
6、MySQL早期版本没有视图、模式、表空间的概念也没有实现上述功能;
7、MySQL没有实例的概念;
8、MySQL建库无法指定目录;
9、MySQL开发不需拿出太多的时间关注锁的问题,DB2在开发时需要关此问题;
10、SQLserver只能运行在Windows平台下,MySQL、DB2、Oracle可以运行在大多数平台之上;
11、Oracle、DB2、SQLserver有丰富的监控工具定位数据库故障,MySQL在监控工具上匮乏,好的工具大多数收费,出现问题需要依靠DBA自身经验解决问题;
12、MySQL没有商业的技术支持,其他数据库有商业技术支持;
13、MySQL独有的架构:存在存储引擎的概念,由存储引擎实现ACID
四、故障诊断
一)MySQL系统级故障诊断
   MySQL的系统级error日志通常位于/var/log/mysqld.log执行,如果MySQL在遭遇严重故障时会在此文件内打印错误,根据错误信息我们可以方便定位故障。与其他数据库不同的是该日志文件的名称及存储路径以及是否开启可以由dba在系统级配置文件my.cnf内自由定义
二)MySQL应用级故障诊端
MySQL应用级故障我们可以开启慢查询并结合MySQL自带的统计分析工具进行定位应用级别的业务响应缓慢等问题。具体设置方法如下:
1、开启慢查询
vi my.cnf
[mysqld]
    log-slow-queries=/var/log/slow.log
long_query_time=2
2、分析慢查询
cd /var/log
mysqldumpslow slow.log
3、详细剖析、向下钻取信息
如果想进一步tuning performance可以使用explain跟踪sql如何进行访问数据的,再通过profile工具详细剖析资源使用情况进行深度挖掘问题。
五、日常运维
MySQL数据库的日常运维
技巧一、MySQL日常运维一般情况下会通过一个简单的shell进行连库,select一个采样表通过返回的数据来判断数据库是否还online,每隔5分钟会发起一次连接,做到5分钟内发现故障并短信告警。
技巧二、定期登录MySQL查看系统级别的日志,重点关注error级别的日志:grep –i error mysqld.log
技巧三、抓取并分析当前正在执行的SQL:show processlist;
技巧四、维护MySQL集群
1.集群的停止
A)登录主库停止主库同步进程stop master;
B)登录备库停止备库同步进程stop slave;
C ) 停止主库服务 service mysql stop
D)停止备份库服务 service mysql stop
2.集群启动
A)登录主库启动服务service mysql start
B)登录备库启动服务 service mysql start
C ) 启动主同步进程start master;
D ) 启动备同步进程start slave;
六、备份恢复
1)备份数据:
a、输入mysqldump -h 参数 -u 用户名 -p 数据库名>目标位置+sql文件名
2)恢复数据:
b、创建数据库 mysqladmin -h 主机ip -u 用户名 -p  create dbname
c、导入数据 mysql -h host -u 用户名 -p dbname <目标位置+sql文件名

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广