31

MySql注入科普

sql注入中的宽字节国内最常使用的gbk编码,这种方式主要是绕过addslashes等对特殊字符进行转移的绕过。反斜杠()的十六进制为%5c,在你输入%bf%27时,函数遇到单引号自动转移加入\,此时变为%bf%5c%27,%bf%5c在gbk中变为一个宽字符“縗”。%bf那个位置可以是%81-%fe中间的任何字符。不止在sql注入中,宽字符注入在很多地方都可以应用。

继续阅读全文

20

MySQL5.6复制之Binary Log Group Commit

Binlog是server层记录数据改变的日志,存储引擎层是最终记录数据变化的地方,为了保证复制架构中,主从数据保持一致,就需要做到主库上binlog中的更新也一定在存储引擎层被记录(redo log),同时还需要保证存储引擎层上的提交顺序与binlog中记录更新的顺序保持一致,所以就需要这么一种提交机制two-phrase commit protocol(2PC)。

在2PC中,通过binlog中是否存在更新的事务来判断,存储引擎层的更新是全部提交还是全部回滚;通过prepare_commit_mutex使得事务顺序化提交,保证存储引擎端的commit顺序与binlog的写入顺序一致。

继续阅读全文

15

MySQL5.6主键的在线DDL变更测试

导读:本文主要详细测试online DDL中的删除,添加主键操作。
测试目的主要有以下几点:
(1):以alter table的方式新增主键,MySQL需要做什么
(2):ALGORITHM=inplace与ALGORITHM=copy 增删主键的不同之处,和适用于怎么的环境
(3):inplace与copy对于重建主键的效率,考虑哪些元素
(4):online DDL是如何控制DML,查询的并发

继续阅读全文

08

MySQL主从服务器数据一致性的核对与修复

我上一次遇到MySQL主从服务器数据一致性问题,想想是几年前的事情了,还依稀记得当时惊慌失措的情景,好在最后借助Maatkit解决了问题。几年后,当我再次面对同样的问题时,Maatkit已经不复存在,转而成为了Percona Toolkit的一部分,不变的是我依旧手忙脚乱,所以还是记录一下吧,保不准啥时候又会遇到这个问题。

继续阅读全文

01

MYSQL数据丢失讨论

很多企业选择MySQL都会担心它的数据丢失问题,从而选择Oracle,但是其实并不十分清楚什么情况下,各种原因导致MySQL会丢失部分数据。本文不讨论Oracle和MySQL的优劣,仅仅关注MySQL丢失数据的几种情况。希望能够抛砖引玉,让各位MySQL大牛们梳理出MySQL最安全或者性价比合适的适合各种应用场景的方案。

继续阅读全文