- 博客(17)
- 问答 (1)
- 收藏
- 关注
原创 MySQL半同步--after_send_event与after_reset_master
mysql_binlog_send->RUN_HOOK(binlog_transmit, after_send_event, (thd, flags, packet, log_file_name, skip_group ? pos : 0))->repl_semi_after_send_event:int repl_semi_after_send_event(B
2017-12-30 21:33:32 815
原创 MySQL半同步--before_send_event
mysql_binlog_send-->before_send_event --> repl_semi_before_send_event --> repl_semisync.updateSyncHeaderint repl_semi_before_send_event(Binlog_transmit_param *param, un
2017-12-30 12:26:14 580
原创 Aerospike保证不了一致性
介绍Aerospike虽然号称支持事务,但是并不能满足事务的一致性。对于内存+持久化的模式,当事务提交后,事务操作的记录值并没有刷到磁盘上,只是将其存到了swb的缓存中。这个缓存由一个后台线程进行刷写。如果事务提交后,此时所有的值都是看得到的;而其值没有刷到磁盘上,此时宕机重启后是会丢失记录的。至于丢失多少事务的记录,就要看没有刷到磁盘的swb有多少,如果有很多事务的swb没有刷到磁盘上,那么将会
2017-12-28 21:54:55 1376
原创 MySQL半同步复制--reserve_header
mysql_binlog_send->reset_transmit_packet->RUN_HOOK(binlog_transmit, reserve_header, (thd, flags, packet))--repl_semi_reserve_header每次发送event前,如果是半同步都需要添加3个字节。int ReplSemiSyncMaster::reserveSyncHeader(
2017-12-24 16:56:52 624
原创 MySQL半同步复制--transmit_stop
函数调用mysql_binlog_send->(void) RUN_HOOK(binlog_transmit, transmit_stop, (thd, flags))->repl_semi_binlog_dump_end代码分析int repl_semi_binlog_dump_end(Binlog_transmit_param *param){ //至少有一个slave开启了半同步
2017-12-24 10:56:16 580
原创 MySQL半同步复制--transmit_start
介绍半同步复制binlog dump线程需要做的事情。相关结构:Binlog_transmit_observer transmit_observer = { sizeof(Binlog_transmit_observer), // len repl_semi_binlog_dump_start, // start repl_semi_binlog_dump_end, // stop
2017-12-23 20:29:04 713
原创 MySQL半同步复制--after_rollback
调用流程ha_rollback_low->(void) RUN_HOOK(transaction, after_rollback, (thd, all));->repl_semi_report_rollback->repl_semi_report_commit说明该桩设置在数据库回滚后。在binlog中,经常有rollback操作,用来将之前的事务回滚掉。对于回滚操作这里要在binlog中添加一个
2017-12-22 20:13:10 605
原创 MySQL半同步复制--after_commit
1、介绍在分析代码前,先介绍binlog中几个位置关系。2、代码分析MYSQL_BIN_LOG::ordered_commit->finish_commit: ha_commit_low RUN_HOOK(transacti
2017-12-20 19:37:18 895
转载 什么是僵尸进程,如何找到并杀掉僵尸进程?
http://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666541635&idx=1&sn=e3fd3a3982f0aeef58ba8dfa936dac55&chksm=80dcf6e8b7ab7ffe672ea6507bfc2be65f4545e2c5b63b1ddd5d8d48ba6e2b327aeff191e64b&mpshare=1&s
2017-12-17 15:00:19 3807
原创 MySQL半同步--after_flush
简介在主库semisync加载或初始化时,调用函数semi_sync_master_plugin_init,为transaction_delegate、binlog_storage_delegate、binlog_transmit_delegate增加observer,分别对应plugin的变量为trans_observer、storage_observer、transmit_observer。这
2017-12-17 10:33:31 718
原创 mysql 5.7 Transparent PageIO Compression
上接上篇。本篇作为补充:原理innodb的透明页IO压缩,利用punch hole和数据压缩来实现。在内存中是一个正常的页,只有在写到磁盘时,才进行压缩。调用函数os_file_io_complete进行punch hole操作,os_file_io_complete调用的是fallocate()操作系统函数,并且使用 FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_S
2017-12-13 19:56:51 721
原创 MySQL5.7 InnoDB Page Compression
1、介绍mysql5.7中,innodb页结构增加了一个类型FIL_PAGE_COMPRESSED,用来完成Transparent page compression 特性2、说明1)压缩内容包括:除去FIL_PAGE_DATA外所有数据,包括tail2)压缩后的内容+FIL_PAGE_DATA会以block_size对齐,并将空洞清0。意味着将16K压缩到9K,也需要12KB的数据,因此将bloc
2017-12-10 20:50:56 743
原创 Aerospike insert、drop、read和emigrate加锁及引用计数流程
1、insert2、drop3、read 4、emigrate
2017-12-07 21:56:31 656
原创 MySQL的server_uuid获取之uuid()函数和uuid_short()函数
1、uuid()函数mysql> select uuid(),uuid();+--------------------------------------+--------------------------------------+| uuid() | uuid() |+
2017-12-02 22:00:01 3580 1
翻译 Aerospike Has Removed the Large Data Type (LDT) Feature--Aerospike已经不再支持LDT特性
In 2013, Aerospike introduced a new feature known as Large Data Types (LDTs) to enable Aerospike to handle data that exceeded our row size limit. On November 14, 2016, in this blog post, we announced
2017-12-02 17:07:52 602
原创 Aerospike的bin内存管理--即列内存管理
1、内存申请函数调用write_master->write_master_dim->write_master_bin_ops->write_master_bin_ops_loop->as_bin_particle_alloc_from_client:该函数对as_bin_s->particle进行申请内存,并将相关bin属性和值load到申请的内存中。2、内存释放函数调用as_record_don
2017-12-01 20:32:05 1110
空空如也
innodb插入意向锁如何使用
2015-06-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人