MySQL5.5半同步功能的安装步骤
在保证【zài bǎo zhèng】🏨数据库🧓性能的【xìng néng de】📹前提下,怎么保证数据【zhèng shù jù】的一致性呢?
在【zài】MySQL 5.5版本中即支持【jí zhī chí】异步复制🌦又支持半同【bàn tóng】👵步复制🌦。
1、当slave 连接master的时候【de shí hòu】,它会指🕣出它是【chū tā shì】㊙否支持【fǒu zhī chí】半同步复制👜。
2、当【dāng】👞master启用 semisynchronous replication.并且至♍少有一台【tái】🔑slave也启用【yě qǐ yòng】😠了该功【le gāi gōng】能,master端的事🌽务会被阻塞,并且等到该事务会等待其中【dài qí zhōng】任何一【rèn hé yī】♟个slave接受到该事务,或者超🏙过等待时间才【shí jiān cái】会提交。
3、slave端回复给master的信息依据是【yī jù shì】slave事务已经写入🍱到【dào】relay-log并且已经刷写【jīng shuā xiě】🧔到【dào】了磁➿盘【pán】🕥。
4、如果【rú guǒ】master端等待【duān děng dài】📎超时的话,没有任【méi yǒu rèn】🛡何【hé】slave给出该事务已🥓经写入【jīng xiě rù】relay-log的信息🤥,那么他【nà me tā】🙁会自动转到异【zhuǎn dào yì】步复制,当其中一个支🔷持异步复制的slave追赶上了master,那么master会进入到半同【dào bàn tóng】💔步复制状态🆓。
5、半同步复制必须是两端都支持。
当master的线程【de xiàn chéng】处于被阻塞🖖(等待slave端返回的消息🌰时【shí】),并不会【bìng bú huì】给该🛳会话【huì huà】session返回任🚼何消息【hé xiāo xī】🌰。当阻塞🎆结束的时【shí】候🍤,master会返回【huì fǎn huí】给该🛳session消息🌰。
如果一🍺个事务中包含对非事务表的【wù biǎo de】修改【xiū gǎi】,在发生rollback的情况下,master也是会🛸这些信【zhè xiē xìn】息写入😁到【dào】♊binlog上面,并且也🥪会发生【huì fā shēng】阻塞,等待😝slave端写入【duān xiě rù】。
半同步【bàn tóng bù】🙁复制需📅要在数据一致【jù yī zhì】性和性能上作【néng shàng zuò】出权衡🏀。
5.5半同步功能的安装步骤
1、这个首先需要💈5.5支持动态加载【tài jiā zǎi】模块:查看变【chá kàn biàn】量🕶: have_dynamic_loading是否是【shì fǒu shì】🥥yes;
2、基本的【jī běn de】💨复制架构已经🍵搭建【dā jiàn】
3、master端和【duān hé】slave端的模🎶块是随🤲着版本【zhe bǎn běn】发布的,在🍮master端执行【duān zhí háng】:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
在slave端执行:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
如果在安装的📝时候出现如下🎵错误,请下载【qǐng xià zǎi】😑缺失的【quē shī de】组件【zǔ jiàn】:http://dev.mysql.com/downloads/os-linux.html.
ERROR 1126 (HY000): Can't open shared library
'/usr/local/mysql/lib/plugin/semisync_master.so' (errno: 22 libimf.so: cannot open
shared object file: No such file or directory)
安装完【ān zhuāng wán】成后【chéng hòu】,还需要设置变量才能🥢正常启【zhèng cháng qǐ】🎽动🉑:
SET GLOBAL rpl_semi_sync_master_enabled =1;
SET GLOBAL rpl_semi_sync_master_timeout =N 设置好【shè zhì hǎo】超时时间,默认是🕊10s (有点长💑啦【lā】)
在【zài】🥦slave 端执行:
SET GLOBAL rpl_semi_sync_slave_enabled =1
(以上信【yǐ shàng xìn】息都可【xī dōu kě】以写到🛎my.cnf文件中🌬)
这个时候复制【hòu fù zhì】💡还是属于异步复制【fù zhì】🚚,只有重⛪启slave或者 重启【chóng qǐ】😴 slave I/O线程【xiàn chéng】,才能真【cái néng zhēn】😔正使用半同步复制【fù zhì】🚚功能。
stop slave io_thread;start slave io_thread;
监控半【jiān kòng bàn】🗒同步复制状态;
几个重【jǐ gè chóng】要的变🍴量是:
rpl_semi_sync_master_clients 支持和【zhī chí hé】🎞已经注❣册半同步复制【bù fù zhì】的已连【de yǐ lián】🥉接的slave数量。
rpl_semi_sync_master_status Master的半同步复制【bù fù zhì】⏩状态【zhuàng tài】,1是活动【shì huó dòng】状态【zhuàng tài】,0表示非🌔活动【huó dòng】,要么是没有启🍉用该功能【néng】🚫,要么以🌅切换至异步复制【bù fù zhì】⏩状态【zhuàng tài】
rpl_semi_sync_slave_status Slave 上的半同步复制状态【zhì zhuàng tài】,1,表示已🦌经启用【jīng qǐ yòng】📈而且I/O线程正🍹在运行,0表示非【biǎo shì fēi】活动状👩态【tài】。
关键词:MySQL
阅读本文后您有什么感想? 已有 人给出评价!
- 0
- 0
- 0
- 0
- 0
- 0