αα Citymobil ααΎαααααΎααΌαααααΆααα·αααααα MySQL ααΆααΆααααα»ααα·ααααααααααΆααααααααΎαα ααΎαααΆααααα»αααΌαααααΆααα·ααααααααΆα αααΎααααααΆααααααΆαααα αα·ααααααααααααααα
ααΆαα’αΆα
ααααΆααααααααααΊααΆααΌα
ααΆααααααΆααααααααΎαααΆαααααααααααααΆααααΌααα·ααααααααΈαα½ααααααααΆα ααΆαααΎαα‘αΎααα·αα
ααααααααααααααααααααα·αα
αααα»αααααΉαααα·ααΆαααααααΆααααΆαααααααΆααααααααααααααΆααααΎαααα§ααααααα·α ααα»αα·ααααααααΆαα·αααααΎαααΆααααααααααααααααΆαααααΆααα αα
αααα»αα’αααααααα αααα»αααΉαααΎαααΆααα
ααΆαααα’αΆα
ααααΆαααααα (HA) αααααΆααα
ααααα MySQL αααααα’ααααΎ
αααααααααΆα HA ααα’ααααΎααΈα’αΆαααΈ
ααΆααααΌα αααα»αααΉαααααΆααα’ααααααααααααααΆ ααΎαααααααααααα»ααα·ααααααααααααΎαααΆα’αααΈα
ααΎαααααΎαααααααΆαααα αααααα»ααΆαααΆαα½αααΉααααααα’αΆα αααααααΆααααα½α αα·αα ααααααΆαααα’αΆαα αααΎαα α αααααα’αΆα ααΆαααααααα·αααααα - ααααΆαααααα αααα αα·ααααααααΆααα’ααααααα α’αα·αα·ααα αΌαααααΎααΆαα ααααααΆαααα HAProxy αααα’αα»ααααΆαα±ααααΆαααΆαα ααα αΆαααααα»α αα·αααΆαααααΎααΆαααααααΆααααΆαααΆααααα½αα ααΆαααααΎααααΆαα HAProxy ααΊαααααΆαα ααα»αααααααααα·ααΆααααα α αΎααα αα α»ααααααααΎααααα»ααααα·ααααα»αααααΎαααΆαααααΆααααααΌααα ProxySQL α
ααΆαα
ααααααααΌαααΆαα’αα»αααααα
αααα»αααααααΆαααααααΆαααααΆααααααααααα’ααααΎ GTID
. αααααΆααααααΆ αααΆαα αα
ααΆααααΆαα
αααααα½αααααΌααααααααααΆααααα·ααααα·ααΆα αα»ααααααΆααααΌαααΆαα
αΆαααα»αααΆααααααα ααααα
ααααααααααααααΌααααα»αααααααα’αααααΎααααΆαααΆαα’αα»αααα αα·ααα»ααααα·ααΆααα·αααααα αα
αααα»αααααΉαααα·ααΆαααααααΆααααΆαααααααα ααΆααΌαα
ααΆαααααΆααααααΌαααΆααα’ααααααΌαααΆααααααααΈαααα
ααΆαα
αααααααααααΎ Row Based Replication (RBR)
ααα»ααααααααΆαααα½αα
ααα½αα’αΆα
ααΆα mixed binlog format
.
α’ααααααα αααααΎαα αα α»ααααααααΆαααΆαααα αΆαααΌαααααΆαααΆααααα ααΆααααααααα ααααα αα·ααΆαααααααΆααααααα½αααΆα α αΎαααααα·αααΎααΆααααα αΆααΎαα‘αΎα ααΆα’αΆα ααααΎαααΆαααΈαα·αα·ααΈαααααααααααααααααααααααα·α α’αααα’αα·ααααααααααΌαααα½ααα»αααααΌαα ααααααΈαα·αα·ααΈααααααα½αα―α αααααααΆα’αΆα ααααΌαααΆαα’αα»ααααααΆααα·ααΈααααααααααΆα ααα’ααααΎ VIP, DNS αααααααΎααααΆαααααααααααααααΆαααα α¬ααααααΆααααααααααααα½αα―αα
αα·ααΈααΆαααααα½αααΎααααΈααααΆαααααααα·αααΎααΆαααΆαααααΊααααΌαααααΎα’αΆααααααΆα VIP α’αααααα
α’αααΈαααα’αααααααΌαααΉαα’αααΈαααααααααΆαααα αα»αααΉαααΆααα αα»αα
- VIP ααΊααΆα’αΆααααααΆα IP ααααα·αααααΌαααΆαααααΆααααΆαα½αα ααα»α αααααΆαααααααΆαααΆαααααααα ααααα·αααΎααααΆαααα½ααααΆααα α¬ααα‘α»ααααααααΆαααΆαααΆααα·ααΆα ααΎαα’αΆα ααααΌαααΈα’αΆαααΈαα ααααΆααααααααααααααααΎαααααααΆααα αΆααα·α αααα»αα
- ααΆααααααα αα·αα ααα’αΆααααααΆα IP αα·αααα·α ααΊααΆααααα·ααααα·ααΆαααα αα·ααα ααα
- ααΎααααΈααααΎααΆαααΆαα½αααΈα’αΆαααΈ α’αααααααΌαα
αΌαααααΎαααΆαααΈαααααΆαααα SSH α¬ααΆαααααΎααααΆααα§αααααααααΎααααΆαααα·ααα α§ααΆα αααα
keepalived
.
ααΌααααα‘ααααΎααααα αΆαααα’αΆα ααΎαααΆαααΆαα½αα’ααααααα½αααΆαααααααΎα α αΎααααααααΎαααΈαααααααααααααΆααααααααααααααααααααααααα·αα½αααααααΎαααΆαα
ααΆαααααΆαααααααΆααα ααααΆαααΆαα α¬ααΆααααα αΆααΎαα‘αΎααα ααααα·ααααααααΉα α αΎααααΆαααΈααααα·αα’αΆα ααααΎααΆααα
- α’αααβαααα αβααααΎβαα αα α»ααααααααΆαβααααααβα ααααα αααβααΆαβα ααααβααΈαα½ααβααΆαααΆαααβααΆβααβαα·αβα’αΆα βααααΎβααΆαβααα α’αααααααα»ααααααααΈα αΆααααααΎαααααΎαααΆαααααΎαααΎαααΆαα ααααααααααααααααααΆαααα½ααΆααΈααααααααααΈ α αΎαα αΆααααααΎαααΆαααααΆαα‘αΎααα·αα
- ααΎααααα»αααααΆααΆααα VIP α ααααΈααα αΆαα - ααααα·αααααααα
- α ααααβαα βαα½ααΆααΈβααα topology αααα»αααααΌαααΆαααΆααααα‘αΎααα·αα
- ααΆαααααααα
ααα»α
αααααΆαααααααΆαααααΈααΆαα½αααΈα’αΆαααΈα αααααΆαααΆαα·αα’αΆα
αα VIP α
ααααΆα ααΎαα
αΆααααααΎαααααΎααααΎααΆαααΆαααααααααα»αααααααΆαααααα ARP α₯ααα·ααααα. ααααααααααααΎ/ααΆαααααΎααααααα’αα»ααααΆαα±ααα’αααααααΎαα
αα
α»ααααααααΆαααΆααΆααααααΈα’αΆααααααΆα IP αα·α MAC αα
ααΎαα»αααΆαααααααΆαααααΆαα αααα ααα»αααααΌαααααΉααααα’αααααΆααΈα’αΆαααΈααααααΎαααΆαααααΆααααααΌαα αααααΆαααααααααααααΆα
split brain
αα αααααααααα α α αααΆαα αΆααα - ααΆαααααΆααααααΈααΆααα’ααααααΌαααΆααααααΌααααααα ααααααΈααααΆααα ααΆαααααΆααα αΆαααααΆααα α αΎαααΆαα α ααααα αΎαααααααααα ααΆααααΌαααααΆααα·ααααααααααΌαααΆαααααΎα‘αΎααα ααααα·ααααααα·ααΈα
αααΆαααΈααααααα»αααααΎαααΆααααα»αααααααααααΆ ααΆααααΆαααααΆαααΎαα‘αΎααα ααααα·α DBMS
αααα½ααααααααΆαααΊααααααααααΆαα ααΉαααααΈαα»αα ααΆαααααΎαα αα α»ααααααααΆα topology αα·αα αΆααααααΎαααααΎαααΆαααΎαα‘αΎααα·αα αααααΆααααΆαααΈαααα’αΆα ααααΎααΆα ααΎαααΆαα ααααααΆα VIP ααααααααααα ααΎααα αΆαα αααααααΆαα αααΆαααΈαααααΈ αα·αααααΎααααΎ ARP ααΆα αααΎαα ααΆααααα‘αααααα·ααααα’αΆα ααααΎααΆαααααααα αΆαααα·ααα½ααααααΆαααααα ααααααααααΆαααΆααααα‘αΎααα·α αα·αααααα·ααααα·ααΆααααααααα·ααΈαααααα
αααα αΆαααααα
ααΆααααΆαααααααΆαα ααααα¬α α α αααΆαααΆαααααα·αααααα αα·αααΉαααΆα αααααααΆααααααααααααααααα· αα·αααΆαααΆαα±ααααΆαα’αααααΆαααααααααα
α
ααα»α
αααααΆαααααααΆααα·αααα·ααααααααααΌαααΆαααααααααΆααααααα’αΆαααα αααααΊαααααΆααααΈαααΆαααΈαααα‘αΎααα·α ααΈα’αΆαααΈαα·αααααΌαααΆαααααααααααααααααααααα·ααα ααΌαααααΆααα·ααααααααΈαα½ααα
αΆααααααΎααααα»αααααααΆαααα’αΆαααΆαααααΆαααΎα α’ααααααα
αααααΌαααααααΈαααααααααααααααα·ααΎααααΈααααα α αΎαααααΆααΆαααα‘αΎα read only
αα
ααΎααα
αΆααα αααααααΆαααΆαααααααΆααααααααααΆαααααααααααααΆα split brain
.
αααα αΆα’αΆα
ααΎαα‘αΎααααα»αα’αα‘α»ααααααααΎαααΆαααααΆαα‘αΎααα·α ααααα½αααααααΌαααΆαααΌαααααΉαααΆαααα Orchestrator UI ααααααααΈααΎα§ααααααααα½ααα·αα·ααααααααααΆαα ααΎαααΆααααααΈα REST API ααααααααααα»αααΆαααα (
ααααΆααααΆαααΌαα αααααααααααΆα HA ααααΌαααΆααααα αΆαααΆααααααα
ααΆαααααΎαααΎαααααααΈα
α’αααααααα»ααααααααΈααΊααααΆααααα α αΎαααααΆααΆαααααΎαααΎα
- ααΆαα ααααααααα ααΆααααααααα
- αααα MySQL αααα αα·αα αααα;
- ααααααα αααα (RBR, SBR α¬α αααα»α);
- ααΈααΆαααα αααα»αααααααααααα·ααααααααΌα ααααΆ α¬αααααααααΆ;
- ααΆαα’αΆα
ααααΆα
errant GTID
- ααααα·ααααα·ααΆααααααααΌαααΆαααααα·ααααα·ααΎααΆαα αααα αα·ααα·αααΆααα ααΎααα - α αααΆααααααΎαααΎαααααΆαααααα½αααααααΌααααααα·α αΆαααΆαααααα
αα·ααααααααααααααΊααα»αααααααΆαααααααααααα’αααααΆαααααααααα α§ααΆα ααα ααΆαα
ααααα’αΆα
ααααΌαααΆαααααΎααααΆααααΎααααΈααααα»ααα»ααα·αααααα α¬αααΆαααΈαααααΆαααΆαααααααα
ααΆαααααααααααααααΉααααααααΆαα α’αααααααα
αααααααΆααααΎααα αα·αααααΆαα‘αΎααα·α
αα αααα»αααααΉαααα·ααΆαααααα§ααααααα·α ααα»αα½α ααΆααΆααΏαααααΆαααααα»αααΆαααΆααααααααααααααΆαα·αααααΎαααΆααααααααααααα ααΌα ααααααΌααα·α αΆαααΆα’αααΈαααΆαααΆαααααα MySQL ααααααααΆαααααααΆααααααΎα αα·αααΆαααααΎαα αα α»ααααααααΆααααααα»ααααααααΈαααα’ααααααα ααααααα·ααΈα
- α ααα½ααα·ααΆααΈαααα αααααααα αΆααα·ααααααααααΈ α¬αααααΆα ααααΆαααααααΌααααααααΈαα αα»ααααααΆααααααΆααααααΌαααΆαααα½αααααΆααααΆααΆααααα αα·αααααΆααα‘αΎααα·αα αααααααΆααααααΆα ααΆαα ααααααΆααααααΏαα’αΆα αααααααΆααΆαααααΆααααααααΆαα½αααααααΌαααΌα α ααΎαααααααααααααααα 5 αα·ααΆααΈαslave_net_timeout
- α ααα½ααα·ααΆααΈαααΆαααΆαααααΆααΆαααααΆααα‘αΎααα·αα αα αααα»αααααΉαααα·ααΆααααααααα αΆαααααΆα αααααααΆααααααΆαααααΆαααΆαααααααααααΉαα’αα»ααααΆαα±ααααΆαααΆααααααΆααα‘αΎααα·ααααΆαααΆαααα αα αα·αααΆααΆααααααΎαααΆαααααΆαα αααααααΈααΆαα αΆααααααΎαα ααααααααααΆαααααΆαααΊ 1 αα·ααΆααΈαMASTER_CONNECT_RETRY
MASTER_RETRY_COUNT
- α ααα½αα’αα·ααααΆααααΆαααααΆααΆαααααΆααα‘αΎααα·ααMASTER_HEARTBEAT_PERIOD
- α ααααααααααΆαα·ααΆααΈαααααΆααααΈαααααααΌααααααΆα ααααΆαααααααΌαα ααααΆαααΎααααααΆαααααααΆααααααslave_net_timeout
.
αααΆαααΆααααααβα’αααβαααα αα
DelayMasterPromotionIfSQLThreadNotUpToDate
- ααΎααααΎααααΆtrue
αααααΆαααα αα½ααΆααΈααααΉααα·αααααΌαααΆαα’αα»ααααααΎααΆαα ααααααααααααα αα αΌαααΆαααααααααααααΆα SQL ααααα ααααααΆααααα ααααααα·ααααα·ααΆαααααα·αααΆαα’αα»ααααααΆααα’ααααΈαααααα ααα»αααααΌαααααα ααΎαααααΎαααααΎααααααΎααααΈαααααΆαααΆαααΆαααααααααα·ααααα·ααΆα αα ααααααααΆαα αααααααααααααΆααα’ααααααΆααααΈααααααInstancePollSeconds
- ααΆαααΉαααΆααααααΆαααΆαααα αα·αααΆαααααΎαα αα α»ααααααααΆα topology αRecoveryPollSeconds
- ααΆαααΉαααΆααααααΆααα·ααΆα topology α ααααα·αααΎαααα αΆααααΌαααΆαααααΎα ααΆααααααααα topology ααααΌαααΆααααα½α ααααΎαα ααααααα ααααΎααΉα 1 αα·ααΆααΈα
ααααΆααα
αααααααΈαα½ααααααΌαααΆααααααααα·αααα’ααααααα
ααααααααααααα InstancePollSeconds
αα·ααΆααΈ αα
αααααααΎααααα αΆ ααααΆαααΆαα
αααααααααΌαααΆαααααα
ααααΆααααα
ααΎαααΆαα
αΆααααααΎαααΆααααααααααααΆααα HA ααΆαα½αααΉαααΆαα’αα·αααααααααα»ααααα»α
αααα»αα’αα‘α»ααααααααα αΆαα ααΎαααααΎαααΎααα·ααΈααΆαααααααααΆααααΆααααα αΆαα½αα ααΆαααααααααααΎααααΆαα kill -9
αααα
ααααααΎαααΆαααααααααααα αα·ααααααααααΆαααΈααα (docker-compose stop
) αααααααααΎαααα αΆαααααΆααααααααΎ iptables -j REJECT
α¬ iptables -j DROP
. ααΎαααααΉαααΆααΉαααΆαααααααααΌα
ααΆααααααα
- ααααααααααΉαααααΎααααα αΆααΆαα½ααα αα·αααααΎαα αα α»ααααααααΆα topology αααα»ααααααααα·αααΎαααΈ 10 αα·ααΆααΈα
- ααΈαα·αα·ααΈααααΆαααααΆαα‘αΎααα·αααΉαα αΆααααααΎααααααααααααααααα·α ααΆαααααααα ααΆαααααααααααααΆαααΉαααααΆααααααΌα αα½ααΆααΈααααααααΉααααααα ααΆαα αααα ααΌαααΌα‘αΌαααΉαααααΌαααΆαααΆααααα‘αΎααα·αα
- ααααααΈααΉαα’αΆα αααααααΆα ααΆαα ααααααααααααΆααααΉααα·αααααΌαααΆαααΆααααααααα»αα’αα‘α»ααααααααΎαααΆαααΆααααα‘αΎααα·αα
- αα·ααααααααΉαα αΆααααααΎαααααααα ααααααΈ α αΎαα ααααα
- ααααααααααΆαααααΆαα‘αΎααα·αααα»αααΉααα·αααΎαααΈ 30 αα·ααΆααΈα
ααΌα αααα’αααααΆαααΉαα αΎαααΆ ααααααααα’αΆα ααΆαα₯αα·ααΆαααα»αααααΆαα αααα»αααα·ααΆααΆαααΆααααα αα·αααα·ααααα αααααΆαααΆαααααααα ααΆαααααααααααααααΉα αα·ααααααΆααα»ααααααΆ ααΆααα»αααααΆααααααα»αααααα αα·ααα·αααααΆααααα ααΌα αααα ααΎαααααΎααα αΆααααΆαααααΆαααααα»αααααΆαααΆαααΆααααααα ααααα·αα·αααααΎααααααααααααααααααααΎαααΆααα ααααααααΆαααααΆαααααααΆαααααΌαααΆαααΆααααα α¬αααααααΈαα½ααααααααΆααααΌαααΆαααααααΆαα αα αααα’ααΆαα ααΎαα αααααααΎαα αααααΆαα ααΆααααααααααΌα ααααΆααααα·αααΆαααααα»ααααααΆααααα·ααααΆαααΆααααΈα αα·αααααΎα±ααααΆαααααΎαααααααααααΆαααααααααααααααα·α
ααΆαααααΎα
αα»αααΆαααααααααΆαααααααααααααα»αααααΆαα ααΊααΆααΆααα·α αα α αααααα½ααααα SRE αα·ααααα»αααααα·ααααα·ααΆαα ααΆαα’αα»αααααααααα·ααΈ Orchestrator αα·ααααααααααΆα HA αααααα’ααααΎ VIP ααΆαα’αα»ααααΆαα±ααααΎααααααα ααΆαααΌαααααααααΌα ααΆααααααα
- ααΆαααααΎααααα’αΆα αα»αα α·αααααΆααααααα αΆααΆαα½α topology αα cluster database;
- ααΆαααααΎααααααααααααααααααα· αα·ααα ααα ααααα§ααααααα·α ααα»αααααΆααααααΉααα ααΆααααααααααααααΆααα αΆαααααααααα
ααααααΆαααΆααααα αααααααααΆαααΆααααααααα αα·ααα»ααα·ααααα·ααααααΆα
- ααΆαααααΎααΆαααααααΆααααααααΆααα HA αα ααααααααααα·ααααααααΆα αααΎαααΉααααααΌαα±ααααΆααααααΆα L2 αααα½ααααΆααα½αααΆα
- αα»ααααααααα VIP ααΎααααααΈ ααΎαααααΌααααα ααααΆαα ααΎααα αΆααα ααααΎαααΆαααΊαααααααααΆααααααΆ ααααααααΎααααααααΆααααΆαααΎαα‘αΎααα·αα
- ααΆααααα
ααααΈα’αΆαααΈαααααΌαα±ααααΆαααΆαα
αΌαααααΎ SSH αα
ααΆαααααΆαααΈααα α¬αα·ααΈααΆαααααααααααααααααΆαα α
ααααΎαααΆαααΈα
ααααΆαα αααααΆααααΆαααΈααα α¬ααΌαααααΆααα·αααααααααα»ααα½αααααααααα αΆααααααααΆαα±ααααααΎαααΆαααααΆαα‘αΎααα·α ααΎααα·αα’αΆα
ααααΆααααΆααΆαααα
αα VIP ααΉααααα
ααααααααααααααααα α αΎααααα’αΆα
ααΆαα±ααααΆαααΌαααΆααααααΆαααΈαααααΈααααααΆαα’αΆααααααΆα IP αα·αααα·αααΌα
ααααΆ αα·αααΆααααα αΆ
split brain
.
ααΎααααΈαααααΆα split brain
α’αααα’αΆα
ααααΎαα·ααΈααΆααααα
αααα»αααΆααα·ααΆαα’αααΈαα·ααΈααΆαααααααααααΎααααα»αααΆααααααΎα MySQL failover cluster α ααΆααΆαααΆαααΆααααα½ααααα»αααΆαα’αα»αααα αα·ααααααααΌαααααα·ααααα’αΆα
ααα½αααααΆαααααΆαααΏααΆααααααααααααααααα
αα
α»ααααααα αα
ααααααααααααααααΆααααΌαααΆααΌαα
αα·αα αααααΆαα
ααΆααααααααααΆαα·αααααΆαααΆαα’αα·αααααα αα·ααΈααΆααααααααααΉααα·ααααααααα·αααααααα
ααααα: www.habr.com