ืืกืืืืืืืื ืื ื ืืฉืชืืฉืื ืืืกื ื ืชืื ืื MySQL ืืืืกืื ืื ืชืื ืื ืืงืืืข ืืขืืงืจื ืฉืื ื. ืืฉ ืื ื ืืกืคืจ ืืฉืืืืืช ืืกืื ื ืชืื ืื ืืฉืืจืืชืื ืืืืืจืืช ืฉืื ืืช.
ืืืืื ืืช ืืืชืืืช ืฉื ืืืืกืืจ ืืื ืืื ืืืงืืืจ ืงืจืืื ืืืืฆืืขืื ืฉื ืืืขืจืืช ืืืื ืืืืงืื ืืืืฉืืื. ืฉืืืืจ ืืงืืฅ ืืืืืืื ืืืงืจื ืฉื ืืฉื ืืืกืืจ ืืคืืืช ืืืื ืืช ืืื ืืชืืืื ืืืืจืืขืื ืืืช ืืื ืืฉืืชืช ืืืขืจืืช. ืืืืืจ ืื, ืืกืชืื ืขื ืขืืฆืื ืืืื ืืช ืืืืื (HA) ืขืืืจ ืืฉืืื MySQL ืืืืืกืก ืขื
ืคืชืจืื HA ืืืืกืก ืขื VIP
ืจืืฉืืช, ืืกืคืจ ืื ืืงืฆืจื ืืื ืืขืจืืช ืืืกืื ืื ืชืื ืื ืฉืื ื.
ืื ื ืืฉืชืืฉืื ืืกืืืืช ืฉืืคืื ืงืืืกืืช ืขื ืืืกืืจ ืืื ื ืืืฉ ืืืชืืื ืืืกืคืจ ืืขืชืงืื ืืงืจืืื ืืืื. ืืฉืืื ืืืื ืืืืื ืืืกืืจ ืืื ืืื - ืฆืืืช ืฉืืื ืื ืืขืชืง ืืื ืืืกืืจ ืขืืืจ ืืืจืื. ืืงืืืืช ื ืืืฉืื ืืืขืชืงืื ืืจื HAProxy, ืืืืคืฉืจืช ืคืืืืจ ืขืืืก ืฉืืื ืืฉืื ืื ืงื ื ืืืื ืงื. ืืฉืืืืฉ ื- HAProxy ื ืืืข ืืกืืืืช ืืืกืืืจืืืช, ืืืจืืข ืื ื ื ืืฆืืื ืืชืืืื ืฉื ืืืืจื ื- ProxySQL.
ืฉืืคืื ืืืืฆืข ืืืฆื ืืฆื ืกืื ืืจืื ื ืืืืกืก ืขื GTID
. ืืืฉืืขืืช ืืื ืฉืืคืืืช ืขืืชืง ืืื ืืืื ืืจืฉืื ืขืกืงื ืืคื ื ืฉืืื ืชืืืฉื ืืืฆืืืช. ืืฆื ืฉืืคืื ืื ืืกืคืง ืืืืื ืืืคืืืืื ืืื ืืืฆืืขืื ืืืืืืืช ื ืชืื ืื ืืืงืจื ืฉื ืืฉื ืืฆืืืช ืืืกืืจ. ืืขืฆื ืื ืืฉืื ืืืื ืืืขืืจืื ืืืืืกืืจ ืืขืืชืงืื ืืขืชืงืื ืืืืฆืขืืช Row Based Replication (RBR)
, ืื ืืืชืื ืฉืืฉ ืฆืืชืื ืืกืืืืื mixed binlog format
.
ืืืชืืืจ ืืขืืื ืืขืช ืืขืช ืืช ืืฆื ืืืคืืืืืืืช ืืืฉืืืืืช, ืื ืชื ืืช ืืืืืข ืืืชืงืื, ืืื ืืชืขืืจืจืืช ืืขืืืช, ืืื ืืืื ืืืคืขืื ืืืื ืฉืืืืจ ืืืืืืื. ืืืื ืืืจืื ืขื ืืืืื ืขืฆืื, ืฉืื ื ืืชื ืืืืฉื ืืืชื ืืืจืืื ืฉืื ืืช: ืขื ืืกืืก VIP, DNS, ืืืืฆืขืืช ืฉืืจืืชื ืืืืื ืฉืืจืืช ืื ืื ืื ืื ืื ืืืชื ืขืฆืื.
ืืจื ืคืฉืืื ืืืช ืืฉืืืจ ืืืกืืจ ืื ืืื ื ืืฉื ืืื ืืืฉืชืืฉ ืืืชืืืืช VIP ืฆืคืืช.
ืื ืฉืืชื ืฆืจืื ืืืขืช ืขื ืืคืชืจืื ืืื ืืคื ื ืฉืืชืงืืืื ืงืืืื:
- VIP ืืื ืืชืืืช IP ืฉืืื ื ืืฉืืืืช ืืืืฉืง ืจืฉืช ืคืืื ืกืคืฆืืคื. ืื ืฆืืืช ื ืืฉื ืื ืืืืื ืชืืืืงื ืืชืืืื ืช, ื ืืื ืืืขืืืจ ืืช ื-VIP ืืืฉืื ืืืจ ืขื ืืื ืืฉืืชื ืืื ืืืื.
- ืฉืืจืืจ ืืื ืคืงืช ืืชืืืช IP ืืืจืืืืืืช ืืื ืคืขืืื ืืืื ืืืืืจื.
- ืืื ืืขืืื ืขื VIP, ืืชื ืฆืจืื ืืืฉื ืืฉืจืช ืืืืฆืขืืช SSH, ืื ืฉืืืืฉ ืืืื ืฉืืจืืช ืืืืืืื, ืืืฉื,
keepalived
.
ืืืื ื ืกืชืื ืขื ืืขืืืช ืืคืฉืจืืืช ืขื ืืืฉืฃ ืฉืื ื ืื ืืืืื ืืื ืื ืื ืื ืืฉืืืืจ ืืืืืืืื ืืืืจ ืืขืืื.
ืงืืฉืืจืืืช ืืจืฉืช ืืืืกืืจ ื ืขืืื, ืื ืฉื ืืฆืจื ืืขืื ืืจืืช ืืืืืจื, ืืืฉืจืช ืืื ื ืืืื
- ืืืชืืืจ ืืขืืื ืืช ืืืคืืืืืืืช ืืืฉืืืืืช, ืื ืืขืชืง ืืืืื ืฉืืืืกืืจ ืืื ื ืืืื. ืืืชืืืจ ืืชืืื ืืชืืืื ืืืืจืช ืืขืชืง ืืืชืืื ืืชืคืงืื ืืืืกืืจ ืืืืฉ ืืืชืืื ืืชืืืฉืฉืืช.
- ืื ืื ื ืื ืกืื ืืืกืืจ ืืช ื-VIP ืืืืืกืืจ ืืืฉื - ืืื ืืฆืืื.
- ืืขืชืง ืขืืืจ ืืชืคืงืื ืืืืกืืจ. ืืืืคืืืืืื ื ืื ืืช ืืืืฉ.
- ืืืกืคืช ืืืฉืง ืจืฉืช ืืืฉ ืขื VIP. ืืืืืื ืฉืื ื ืืชื ืืื ืืืกืืจ ืืช ื-VIP, ืื ื ืืชืืืืื ืืฉืืื ืืงืฉื ืืขืช ืืขืช ืืจืงืข ARP ืืื ืชืฉืืื. ืกืื ืื ืฉื ืืงืฉื/ืชืฉืืื ืืืคืฉืจ ืื ืืขืืื ืืช ืืืืช ืืืคืื ืืชืืืืช ื-IP ืื-MAC ืืืชืืื ืืืืืืจืื, ืืืื ืืืืืืข โโืื ืฉื-VIP ืฉืื ื ืขืืจ. ืื ืืืืขืจ ืืช ืืกืืืจืืช
split brain
ืืืฉืจ ืืืืืจืื ืืช ืืืืกืืจ ืืืฉื. - ืื ืืืืืืจืื ืืืืฉืื ืื ืืชืืื ืืื ืืืืกืืจ ืืืืฉ. ืืืืืจืื ืืฉื ืื ื ืืฉืืื ืืงืจืืืืช ืืืืจืืช ืืืกื ืื ืชืื ืื ืืชืืฆืขืืช ืืจืืช ืืืคืืืงืฆืื.
ืืฉืจืช ืคืืขื ืืืฆื ืจืืื, ืืืจืขื ืืฉื ืืจืืช DBMS
ืืืืืืจืืชื ืืืื ืืืงืจื ืืงืืื: ืขืืืื ืืืืคืืืืืื ืืืชืืืช ืชืืืื ืืฉืืืืจ. ืืืืืื ืฉืืฉืจืช ืืืื, ืื ื ืืฉืืจืจืื ืืืฆืืื ืืช ื-VIP ืืืืกืืจ ืืืฉื, ืืขืืืจืื ืืืชื ืืืืฉ ืืฉืืืืื ืืกืคืจ ืืงืฉืืช ARP. ืืืืจื ืืคืฉืจืืช ืฉื ืืืืกืืจ ืืืฉื ืื ืืืืจื ืืืฉืคืืข ืขื ืืืฉืืื ืฉื ืื ื ืืืืฉ ืืขื ืคืขืืืช ืืืคืืืงืฆืื.
ืืขืืืช ืืืจืืช
ืืฉื ืฉื ืืขืชืงืื ืื ืืืกืืจืื ืืื ืืื ืื ืืืืื ืืคืขืืืืช ืืืืืืืืืช ืืืืจืฉ ืืชืขืจืืืช ืืื ืืช.
ืืืฉืง ืจืฉืช ืืืจืืืืื ืืชืืืกืฃ ืชืืื ืืืืคื ืืื ื, ืืืืืจ, ืืืืจ ืืชืืื ืืืืฉ ืฉื ืืฉืจืช, ื-VIP ืื ืืืงืฆื ืืืืืืืืช. ืื ืืืคืข ืืกื ื ืชืื ืื ืืชืืื ืืืฆื ืงืจืืื ืืืื ืืืจืืจืช ืืืื, ืืืชืืืจ ืืืืืฃ ืืืืืืืืช ืืช ืืืืกืืจ ืืืืฉ ืืืชืื ืืื ืกื ืืืชืงืื read only
ืขื ืืืืกืืจ ืืืงื. ืคืขืืืืช ืืื ืืืืื ืืช ืืฆืืฆื ืืช ืืกืืืจืืช split brain
.
ืืขืืืช ืขืืืืืช ืืืชืขืืจืจ ืืืืื ืชืืืื ืืฉืืืืจ, ืฉืขืืื ืืฉ ืืืืืืข โโืื ืืจื ืืืฉืง ืืืฉืชืืฉ ืฉื ืืชืืืจ ืื ืืกืฃ ืืืื ื ืืืืจ ืกืื ืืจืืืื. ืืจืืื ื ืืช REST API ืขื ืืื ืืืกืคืช ืชืืื ื ืื (
ืืชืจืฉืื ืืืืื ืฉื ืคืชืจืื HA ืืืฆื ืืืื.
ืืืืจืช ืืืกืืจ ืืืฉ
ืืืชืืืจ ืืกืคืืง ืืื ืืื ืกื ืืืืืจ
- ืืขืชืง ืืฉืชืจื ืืืืืจื ืืืืกืืจ;
- ืืจืกืช MySQL ืฉื โโืืืกืืจ ืืืขืชืง;
- ืกืื ืฉืืคืื (RBR, SBR ืื ืืขืืจื);
- ืืืงืื ืืืจืืื ื ืชืื ืื ืืืื ืื ืฉืื ืื;
- ืืืืื ืืช
errant GTID
- ืขืกืงืืืช ืฉืืืฆืขื ืขื ืืขืชืง ืืืื ื ืขื ืืืืกืืจ; - ืื ืืืื ืืืืจื ืืืชืืืื ืืืฉืืช ื ืืงืืื ืืืฉืืื.
ืื ืื ืจืื ืืื ืืืขืื ืืืืืืื ืืืืกืืจ. ืืืืืื, ื ืืชื ืืืฉืชืืฉ ืืฉืืคืื ืืืืืื ื ืชืื ืื, ืื ืฉืืฉืจืช ืืฉ ืชืฆืืจืช ืืืืจื ืืืฉื ืืืชืจ. ืชืืืืจืช
ืืื ืชืืืื ืืืื ืืืืื
ืืืงืจื ืฉื ืชืงืจืืช, ืืฉืื ืืืืขืจ ืืช ืืื ืืืฉืืชื ืฉื ืืืขืจืืช, ืื ืืืื ื ืืงื ืืืฉืืื ืืช ืืคืจืืืจืื ืฉื MySQL ืืืฉืคืืขืื ืขื ืืืฆืืจื ืืืขืืืื ืฉื ืืืคืืืืืืืช ืืืฉืืืืืช ืขื ืืื ืืืชืืืจ:
- ืืกืคืจ ืืฉื ืืืช ืฉืืืืืื ืืขืชืง ืืืชืื ืื ืชืื ืื ืืืฉืื ืื ืืืช ืคืขืืืืช ืื ืฉืืืืขื ืืืืืกืืจ ืืคื ื ืฉืืืืืืจ ืืืืื ืืืื ืืืชืืืจ ืืืืฉ. ืืื ืฉืืขืจื ื ืืื ืืืชืจ, ืื ืืืขืชืง ืืืื ืืงืืืข ืืืจ ืืืชืจ ืฉืืชืงืฉืืจืช ืขื ืืืืกืืจ ื ืฉืืจืช. ืืืืจื ื ืืช ืืขืจื ืืื ื-5 ืฉื ืืืช.slave_net_timeout
- ืืกืคืจ ืฉื ืืืช ืืื ื ืืกืืื ืืช ืืืืืจ ืืืืฉ. ืืืงืจื ืฉื ืืขืืืช ืจืฉืช, ืขืจื ื ืืื ืืคืจืืืจ ืื ืืืคืฉืจ ืืืืืจ ืืืืจ ืืืืฉ ืืืื ืข ืืช ืชืืืืช ืชืืืื ืฉืืืืจ ืืืฉืืืืืช. ืืขืจื ืืืืืืฅ ืืื ืฉื ืืื ืืืช.MASTER_CONNECT_RETRY
MASTER_RETRY_COUNT
- ืืืกืคืจ ืืืจืื ืฉื ื ืืกืืื ืืช ืืืืืจ ืืืืฉ.MASTER_HEARTBEAT_PERIOD
- ืืจืืื ืืฉื ืืืช ืฉืืืืจืื ืืืืกืืจ ืฉืืื ืืืช ืืืคืง. ืืจืืจืช ืืืืื ืืื ืืืฆืืช ืืืขืจืslave_net_timeout
.
ืืคืฉืจืืืืช ืชืืืืจืช:
DelayMasterPromotionIfSQLThreadNotUpToDate
- ืื ืฉืืืtrue
, ืื ืชืคืงืื ืืืืกืืจ ืื ืืืื ืขื ืืขืชืง ืืืืขืื ืขื ืฉืืฉืจืฉืืจ SQL ืฉื โโืืขืชืง ืืฉืืื ืืช ืื ืืขืกืงืืืช ืฉืื ืืืฉืื ืืืืื ืืืืกืจ. ืื ื ืืฉืชืืฉืื ืืืคืฉืจืืช ืื ืืื ืืื ืืข ืืืืื ืขืกืงืืืช ืืืฉืจ ืื ืืืขืชืงืื ืืืืขืืืื ืืคืืจืื.InstancePollSeconds
- ืชืืืจืืช ืื ืืื ืืขืืืื ืฉื ืืืืคืืืืืื.RecoveryPollSeconds
- ืชืืืจืืช ื ืืชืื ืืืคืืืืืื. ืื ืืืืื ืืขืื, ืฉืืืืจ ืืืคืืืืืื ืืชืืื. ืึถืืงืืืข , ืฉืืื ืืฉื ืืื ืืืช.
ืื ืฆืืืช ืืฉืืื ื ืฉืื ืขื ืืื ืืืชืืืจ ืคืขื ืืืช InstancePollSeconds
ืฉื ืืืช ืืืฉืจ ืืชืืื ืืขืื, ืืฆื ืืืฉืืื ื ืืืฅ
ืขืืืช ืืืื
ืืชืืื ื ืืืืืง ืืช ืขืจืืช ื-HA ืขื ืคืืชืื ืฉื ืืงืืื
ืืืืื ืืชืจืืืืื, ืื ื ืืืืจืื ืืืืช ืืฉืืืืช ืืืืืืช ืืืขืื: ืฆืื ืืืืคื ืืืืื ืืช ืืืืกืืจ ืืืืฆืขืืช kill -9
, ืกืืื ืืขืืื ืืช ืืช ืืชืืืื ืืขืฆืืจ ืืช ืืฉืจืช (docker-compose stop
), ืืืืืช ืืขืืืช ืจืฉืช ืืืืฆืขืืช iptables -j REJECT
ืื iptables -j DROP
. ืื ื ืืฆืคืื ืืชืืฆืืืช ืืืืืช:
- ืืืชืืืจ ืืืื ืืขืืืช ืขื ืืืืกืืจ ืืืขืืื ืืช ืืืืคืืืืืื ืชืื ืื ืืืชืจ ื-10 ืฉื ืืืช;
- ืืืื ืืฉืืืืจ ืืชืืื ืืืืืืืืช: ืชืฆืืจืช ืืจืฉืช ืชืฉืชื ื, ืชืคืงืืื ืฉื ืืืืกืืจ ืืขืืืจ ืืขืชืง, ืืืืคืืืืืื ืชืืื ื ืืืืฉ;
- ืืืืกืืจ ืืืืฉ ืืืคืื ืืืชืืื, ืืขืชืงืื ืืืื ืื ืืืืื ืืืืื ืชืืืื ืืื ืืื ืืืืฉ;
- ื ืชืื ืื ืืชืืืื ืืืืืชื ืืืืกืืจ ืืืืฉ ืืืฉืืืคื;
- ืืื ืืืืืื ืืืืื ืื ืืขืื ืขื 30 ืฉื ืืืช.
ืืืืืข, ืืืขืจืืช ืขืฉืืื ืืืชื ืื ืืืจืช ืืกืืืืืช ืืืืงื ืืืืฆืืจ ืขืงื ืชืฆืืจืืช ืืืืจื ืืจืฉืช ืฉืื ืืช, ืืืืืื ืืขืืืก ืกืื ืืื ืืืืืชื ืืื'. ืืื, ืื ื ืขืืจืืื ืืื ืคืขื ืชืจืืืืื ืืชื ืืื ืืืืชืืื, ืืืืงืื ืืืฆื ืืืขืจืืช ืืชื ืืืช ืืืฉืจ ืืงืืฉืืจืืืช ืืจืฉืช ืืืืืช ืื ืืืงืื ืืืืืืื ืืชืืจืืจืื. ืืขืชืื, ืื ื ืจืืฆืื ืืื ืืช ืชืฉืชืืช ืืื ืืืืืืื ืืฉืชื ืืกืืืืืช ืืืืคืื ืืช ืืืืืงืืช ืฉืื ืืืืืืืืืืช.
ืืืฆืืื
ืชืงืื ืืชื ืฉื ืฆืืืช ืืขืจืืช ืืืืกืื ืืจืืฉืืช ืืื ืืืช ืืืฉืืืืช ืืขืืงืจืืืช ืฉื ืฆืืืช SRE ืืืืฆืขืื. ืืืืขืช ืคืชืจืื ืืชืืืืจืช ืื-HA ืืืืืกืก ืขื VIP ืืคืฉืจื ืื ื ืืืฉืื ืืช ืืชืืฆืืืช ืืืืืช:
- ืืืืื ืืืื ืฉื ืืขืืืช ืืืืคืืืืืื ืฉื ืืฉืืื ืืกื ืื ืชืื ืื;
- ืชืืืื ืืืืืืืืช ืืืืืจื ืืชืงืจืืืช ืืงืฉืืจืืช ืืืืกืืจ, ืืคืืชืช ืืื ืืืฉืืชื ืฉื ืืืขืจืืช.
ืขื ืืืช, ืืคืชืจืื ืืฉ ืืืืืืช ืืืกืจืื ืืช:
- ืงื ื ืืืืื ืฉื ืกืืืืช ื-HA ืืืกืคืจ ืืจืืื ื ืชืื ืื ืืืจืืฉ ืจืฉืช L2 ืืืช ืืื ืืื;
- ืืคื ื ืฉืืงืฆืื VIP ืขื ืืืืกืืจ ืืืืฉ, ืขืืื ื ืืฉืืจืจ ืืืชื ืขื ืืืฉื. ืืชืืืื ืืื ืจืฆืืฃ, ืื ืฉืืืืื ืืช ืืื ืืืืืื;
- ืฉืืจืืจ ื-VIP ืืืจืฉ ืืืฉืช SSH ืืฉืจืช, ืื ืื ืฉืืื ืืืจืช ืฉื ืงืจืืื ืืคืจืืฆืืืจืืช ืืจืืืงืืช. ืืืืืื ืฉืืฉืจืช ืื ืืกื ืื ืชืื ืื ื ืชืงืืื ืืืขืืืช ืฉืืจืื ืืชืืืื ืืฉืืืืจ, ืืื ื ื ืืืืืื ืืืืืช ืืืืืื ืฉืืกืจืช ื-VIP ืชืกืชืืื ืืืฆืืื. ืืื ืืืื ืืืืืื ืืืืคืขื ืฉื ืฉื ื ืฉืจืชืื ืขื ืืืชื ืืชืืืช IP ืืืจืืืืืืช ืืืขืื
split brain
.
ืืืชืืืง split brain
, ืืชื ืืืื ืืืฉืชืืฉ ืืฉืืื
ืืืืจืชื ืขื ืืืืฉื ืฉืื ื ืืืฆืืจืช ืืฉืืื MySQL failover. ืื ืงื ืืืืฉืื ืืืกืคืง ืจืืช ืืืื ืืช ืืงืืืืช ืืชื ืืื ืื ืืืืืื. ืืื ืฉืืืขืจืืช ืืืื ืืืื ืืืชืฉืชืืช ืืคืจื ืชืชืคืชื, ืืืฉื ืื ืืื ืกืคืง ืชืชืคืชื.
ืืงืืจ: www.habr.com