07

MySQL5.6复制之Replication Event Checksums

binlog-checksum={NONE|CRC32} — NONE表示binlog 中的事件里面不记录checksum值,保持与老版本兼容;而CRC32则在事件中加入用来确认事件是否正常的checksum值。

master-verify-checksum={0|1} – 该参数用来判断​主库写入到binlog中的事件是否正常,Dump Thread用来将主库更新事件读出发给从库的I/O Thread,当它读出事件时会进行checksum校验,对于复制来说这此判断不太需要,只需要在复制端判读出过来的事件事件是否正常即可,默认设置为0关闭checksum检查;另外,当我们执行命令SHOW BINLOG EVENTS的时候也会触发checksum校验。

继续阅读全文

19

MySQL下实现闪回的设计思路 (MySQL Flashback Feature)

用过Oracle数据库的同学都知道,Oracle有一个Flash Recovery Area,可以把变更的块写入这块区域,当数据操作错误,需要恢复的时候,可以利用闪回空间中存储的数据块覆盖回去,也可以重构回滚段,恢复到需要的一致点。
而MySQL/InnoDB暂时没有提供这些功能,但是InnoDB很多设计都参考了Oracle,因此我觉得InnoDB也可以实现Flashback功能。

继续阅读全文

19

为MySQL增加线程内存监控 (MySQL Thread Memory Usage Monitor)

使用MySQL中我经常发现mysqld的内存使用会涨的很快(Buffer Pool是大页分配的),以至于使用SWAP,到底Server层用了​多少内存,没有一个监控机制,所以第一步我编写了个patch(基于5.6.6)来监控每个线程用了多少内存,一旦mysqld进程使用太多内存,就去看哪些线程用的多,杀掉这些线程。

继续阅读全文

十二 18

php与mysql通讯那点事

mysql,mysqli,pdo-mysql、libmysql、mysqlnd之间有什么关系?他们分别是什么?mysql_query之后的结果集是立刻从mysql server发送到客户端的吗?还是mysql_fetch_x函数递归时才获取的?mysql_query跟mysql_unbuffered_query函数那个更好些?我该如何选择mysql的API函数?mysql的客户端驱动用哪个为好?

继续阅读全文

十一 29

面对一个全新的环境,作为一个Mysql DBA,首先应该了解什么?

面对一个全新的环境,作为一个Mysql DBA,首先应该了解什么?文章提到的信息基本上对你新接触的这个系统有了一个大概的了解,接下来你再慢慢的深入分析,然后制订出一套符合实际情况的运维规范来。当然,这只是个人的一些心得和体会,每个人的认识的角度是不一样的,欢迎大家继续补充完善。

继续阅读全文

十一 19

淘宝曹伟分析低成本、高性能MySQL云数据架构

在多个组件的协同作业下,整个系统实现了对用户透明的容灾、读写分离、分库分表功能。系统内部还通过多个小规模用户共享同一个MySQL实例,中等 规模用户独占一个MySQL实例,多个MySQL实例共享同一个物理机的方式实现资源的虚拟化,降低整体成本。在资源隔离方面,通过Cgroup限制 MySQL进程资源,以及在proxy服务器端限制QPS相结合的方法,UMP系统实现了资源虚拟化的同时保障用户的服务质量。此外,UMP系统综合运用 SSL数据库连接、数据访问IP白名单、记录用户操作日志、SQL拦截等技术保护用户的数据安全。

继续阅读全文

十一 19

关于MySQL变量innodb_rollback_on_timeout一些讨论

innodb_rollback_on_timeout为OFF,事务会回滚到上一个保存点,InnoDB在执行每条SQL语句之前,都会创建一个保存点。如果事务因为加锁超时,相当于回滚到上一条语句。但是报错后,事务还没有完成,用户可以选择是继续提交,或者回滚之前的操作,由用户选择是否进一步提交或者回滚事务。innodb_rollback_on_timeout为ON,整个事务都会回滚。这可以从row_mysql_handle_errors函数中得到验证。

继续阅读全文