๐️ MySQL / MariaDB Active-Active ้ซๅฏ็จๆถๆง:้ไธปๅๆญฅ + ่ชๅๆ ้ๅๆๅฎๆดๆๅ
็ถ็ถฒ็ซๆ็ณป็ตฑๆ้ทๅฐไธๅฎ่ฆๆจก,「ไธๅฐ่ณๆๅบซ + ไธๅฐๅๆด」็ Active-Passive ๆถๆง,ๅพๅฟซๅฐฑๆ้ๅฐๆฅต้: ่ฎๅฏซ้ฝๆ ๅจๅไธๅฐไธปๆฉ、ๅๆดๅนณๆ้็ฝฎ、ๆ ้ๅๆ้ๅฏ่ฝ้่ฆไบบๅทฅไปๅ ฅ。 ้ๆๅ,「Active-Active ้ไธป+่ชๅๆ ้ๅๆ」ๆๆฏ่ช็ถ็ไธไธๆญฅ。 ๆฌๆไปฅ MySQL / MariaDB ็บไธป,ๅพๆฆๅฟต、ๆถๆง้ธๅ、้จ็ฝฒๅฏฆไฝๅฐๆ ้ๆ ๅข่ๆ้ฏๆด็ไธๅฅๅฎๆดๅฏฆๅๆๅ。
๐ ไธ、Active-Active ๆฏไป้บผ?่ Active-Passive ๆไฝไธๅ?
ๅ ็จๆ็ฐกๅฎ็ๆนๅผ,ๆๅ ฉ็จฎๅธธ่ฆๆถๆงๆ้ไพ็:
- Active-Passive(ไธปๅ):
ไธๅฐไธปๅบซ่็ๆๆ่ฎๅฏซ,ๅฆไธๅฐๅๅบซ้้่คๅฏซ(ๅๆญฅๆ้ๅๆญฅ)่ทไธไธปๅบซ。ๅนณๆๅๅบซไธๅฐๅคๆๅ,ๅชๆไธปๅบซๆๆๆๆๅๆ。 - Active-Active(้ไธป / ๅคไธป):
ๅคๅ็ฏ้ป ๅๆๅฐๅคๆไพๆๅ,ๆต้ๅฏไปฅ่ขซๅๆฃๅฐไธๅ DB,็่ซไธๅฏไปฅๅๆๆๅๅๅ่ๅฏ็จๆง。
ๅ ฉ่ ๆ้้ต็ๅทฎ็ฐๅจๆผ:
- ่ณๆไธ่ดๆง้ฃๅบฆ:Active-Active ๅฟ ้ ่็「ๅคๅ็ฏ้ปๅๆๅฏซๅ ฅๅไธ็ญ่ณๆ」็่ก็ชๅ้ก。
- ๆต้ๅๆฃๆนๅผ:Active-Passive ๅบๆฌไธๆๆๅฏซๅ ฅ้ฝๆๅฐๅไธๅฐ;Active-Active ๅ้่ฆๆญ้ Load Balancer / ไธญไปๅฑค ็ฎกๆต้。
- ๆ ้่ก็บ:Active-Passive ๅชๆไธๅ「ไธป」้่ฆๅๆ;Active-Active ๅ่ฆ่็「ๆๅ็ฏ้ปๆญปๆๅพ,ๅฆไฝๅฟซ้ๆๆต้ๅฐๅๅ ถไปๅฅๅบท็ฏ้ป」。
ๅ ๆญค,Active-Active ไธๆฏๅค้ๅนพๅฐ DB、ไบ็ธๅไธปๅพ ๅฐฑ่ฝๅฎๆ。 ไฝ ้่ฆ็ๆฏ:ๆฏๆดๅคไธปๆถๆง็่คๅฏซๆ่ก+่จญ่จ่ฏๅฅฝ็ๆต้ๅ ฅๅฃ+ๆ ้ๅตๆธฌๆฉๅถ。
๐ ไบ、ๅธธ่ฆ MySQL / MariaDB Active-Active ๆถๆง้ธ้ ็ธฝ่ฆฝ
ๅฏฆๅไธ,ๆณๅจ MySQL / MariaDB ไธ็้ๆ Active-Active,ๅธธ่ฆ้ธ้ ๅคง่ดๅฆไธ:
1. ๅณ็ตฑ้ไธป่คๅฏซ(Master-Master Replication)— ❌ ไธๅปบ่ญฐไฝ็บไธปๅ
้ๆฏๅพๅคไบบๆๅ ๆณๅฐ็ๅๆณ:
- A ไธป <=> B ไธป:ไบ็ธๅไธปๅพ่คๅฏซ,ๅ ฉ้้ฝๅฏไปฅๅฏซ。
- ๅจๆ็จ็จๅผ็ซฏๆ Proxy ็ซฏ,ๅๆๆๆต้้ๅฐๅ ฉ้。
ๅ้กๆฏ:
- ่ก็ช่็ๅพ้บป็ ฉ:ๅๆๅฏซๅไธ็ญ่ณๆ,ๆๅพ่ชฐ็บๆบ?
- Binlog ๅปถ้ฒ / ่ฟดๅ่คๅฏซ:่จญๅฎไธๆ ๆๅบ็พๅฅๆช็ๅพช็ฐ่ๅปถ้ฒ。
- ่ชๅๆ ้ๅๆ็ผบไนๅ ฑ่ญๆฉๅถ:ๅฎนๆๅบ็พ Split Brain,ๅ ฉ้้ฝไปฅ็บ่ชๅทฑๆฏไธป。
ๅ ๆญค,้ไธป่คๅฏซ้ๅธธๅชๅจ「ๆต้ไธๅคง、ๆไฝ่ ๆฅต็ๆ้ขจ้ช」็ๅ ดๆฏไฝฟ็จ,ไธฆไธ้ฉๅไฝ็บๆณ็จ็ Active-Active ๆถๆง。
2. MariaDB Galera / Percona XtraDB Cluster — ✅ ๆๅธธ่ฆ็ Active-Active ๆนๆกไนไธ
Galera Cluster ๆฏไธ็จฎ ๅๆญฅๅคไธป่คๅฏซ ็ๆ่ก,MariaDB / Percona ็ญ้ฝๆไพๆดๅๅฅไปถ。 ๅจ Galera ไธญ,ๆๆ็ฏ้ปๅ ฑไบซๅไธๅ「ๅฏซๅ ฅ่ฆๅ」,้้ไธ่ดๆงๆผ็ฎๆณ,็ขบไฟๆๆ็ฏ้ป็่ฆ็ๅฏซๅ ฅ้ ๅบ็ธๅ。
็นๆง:
- ๆฏๅ็ฏ้ป้ฝๅฏไปฅ่ฎๅฏซ(ๅคไธป)。
- ้้
wsrep_*ๅๆธๆงๅถ่คๅฏซ่ก็บ่ Flow Control。 - ๆฏๆด ๅๆญฅๆ่ 「ๆบๅๆญฅ」 ็ๅฏซๅ ฅ็ขบ่ชๆฉๅถ。
ๅช้ป:
- ๅ็ๆฏๆดๅคไธปๅฏซๅ ฅ,่จญ่จๅฐฑๆฏ็บ Active-Active ่็。
- ๅ งๅปบ Quorum / ไปฒ่ฃ,่ผๅฎนๆ้ฟๅ ่ ฆ่ฃ。
- ๆๅฎๆด็็คพ็พคๅฏฆๅ่ๆไปถ,ๆญ้ HAProxy / ProxySQL ๆ็ๅบฆ้ซ。
3. MySQL Group Replication / InnoDB Cluster — ✅ ๅฎๆนๅคไธปๆนๆก
MySQL ๅฎๆนๅๆไพ Group Replication ๅๅ ถไธๅฑคๅฐ่ฃ InnoDB Cluster, ไธๆจฃๆไพ ๅคไธปๅฏซๅ ฅ + ๅ ฑ่ญๅ่ญฐ + ่ชๅๆ ้่็ ็่ฝๅ。
็นๆง:
- ๆฏๆด Single-Primary ไปฅๅ Multi-Primary ๆจกๅผ。
- ๆญ้ MySQL Router ๅฏๆไพๆบๆ ง่ทฏ็ฑ(่ฎๅฏซๅ้ข、ๆ ้็ฏ้ปๅ้ค)。
- ่ MySQL Shell ๆดๅ,ๅปบ็ซ่็ถญ้็ธๅฐ็ด่ฆบ。
ๅฆๆไฝ ๅๅฅฝ「ๅ จ้จ็จๅฎๆนๅ ไปถ」,InnoDB Cluster + Router ๆๆฏๅพๅฅฝ็้ธๆ。
4. Proxy ๅฑค(ProxySQL / HAProxy)+ VIP(Keepalived)— Active-Active ็「ๅ ฅๅฃๅคง่ ฆ」
็ก่ซๆฏ Galera ๆ InnoDB Cluster,่ฆ่ฎๅค้จๆ็จ็จๅผ「็ฐกๅฎ้ฃไธๅไฝๅๅฐฑๅฅฝ」,ๅนพไน้ฝๆๆญ้ :
- Proxy ๅฑค:ProxySQL ๆ HAProxy,่ฒ ่ฒฌ:
- ๅฅๅบทๆชขๆฅ(Health Check)。
- ๆๆต้ๅ้ ๅฐๅฅๅบท็ฏ้ป。
- ่ฎๅฏซๅ้ข(็ๆถๆง้ๆฑ)。
- ่ๆฌ IP(VIP)ๆ DNS: ้้ Keepalived / LVS / DNS(็ญ TTL)่ฎๆ็จ็ซฏๅช่จไฝๅฎไธ้ฃ็ทไฝๅ。้ไนๆฏๆ ้ๅๆ็ๅ ฅๅฃ。
๐ง ไธ、่จญ่จ Active-Active ๆถๆงๅ,ๅฟ ้ ๅ ๆณๆธ ๆฅ็ๅนพไปถไบ
- ไธ่ดๆงๆจกๅ: ไฝ ็็ณป็ตฑๆฏๅๅ「ๅผทไธ่ด」้ๆฏ「ๅฏๆฅๅ็ญๆซไธไธ่ด」?
- ๅฏซๅ ฅ่ก็ช: ๆๆฒๆๅคง้่ทจ็ฏ้ปๅๆๆดๆฐๅไธ็ญ่ณๆ็ๆ ๆณ?
- ๆ ้ๅๆ็ญ็ฅ: ่ชฐไพๆฑบๅฎ「ๅชๅฐไธ็ท」?ๆฏ ProxySQL / HAProxy / Router / Orchestrator ้ๆฏไบบๆ?
- ็ถญ้่ฝๅ: ๅ้ๆฏๅฆ็ๆ้ไบๅ ไปถ็ๆ้ฏ?(Flow Control、GTID、ไปฒ่ฃ、Split Brain…)
ไปฅไธๆๅ็จๅ ฉๅๅธธ่ฆๅฏฆไฝ็ฏไพ,ๅธถไฝ ๅพ้ถ็ตๅบไธๅฅๅฏไปฅไธ็ท็ๆถๆง。
๐️ ๅ、็ฏไพๆถๆงไธ:MariaDB Galera + HAProxy + Keepalived(ๅธธ่ฆไผๆฅญ็ตๅ)
1. ๆถๆงๆๆจธ็คบๆ
┌─────────────────────────────┐
│ ๆ็จ็จๅผๅฑค(Web / API) │
└─────────────▲──────────────┘
│ ้ฃ็ท(ๅฎไธ VIP)
VIP: 10.0.0.100:3306
│
┌──────────────┴──────────────┐
│ │
HAProxy + Keepalived A HAProxy + Keepalived B
10.0.0.11 10.0.0.12
│ │
┌─────────┴────────┐ ┌────────┴─────────┐
│ │ │ │
DB1 (Galera) DB2 (Galera) DB3 (Galera) (ๅฏ้ธ Arbitrator)
่จญ่จ้้ป:
- 3 ๅ Galera ็ฏ้ป็ถญๆ Quorum,้ฟๅ ้็ฏ้ป่ ฆ่ฃ。
- 2 ๅฐ HAProxy + Keepalived ็ตๆๅ็ซฏ้ๆฉ,ๅฐๅคๅชๆด้ฒ VIP。
- ๆ็จ็จๅผ่จไฝ็ๅชๆ
10.0.0.100:3306,่ๅพๅๆๅฎๅ จ้ๆ。
2. Galera ๅบๆฌๅฎ่ฃ่่จญๅฎ(็คบๆ)
ไปฅไธไปฅ MariaDB + Galera ็บไพ,ๆฏๅฐ DB ็ฏ้ป็ /etc/my.cnf.d/galera.cnf ๅฏ่ฝๅ
ๅซ:
[galera]
wsrep_on = ON
wsrep_provider = /usr/lib64/galera/libgalera_smm.so
# ้็พคๅ็จฑ
wsrep_cluster_name = 'prod-galera-cluster'
# ้็พคๆๅกๆธ
ๅฎ(ๆๆ็ฏ้ปไธ่ด)
wsrep_cluster_address = 'gcomm://10.0.0.21,10.0.0.22,10.0.0.23'
# ๆฌ็ฏ้ปไฝๅ(ๆฏๅฐไธๅ)
wsrep_node_address = '10.0.0.21'
wsrep_node_name = 'db1'
# ่คๅฏซ่จญๅฎ
binlog_format = ROW
default_storage_engine = InnoDB
innodb_autoinc_lock_mode = 2
# ๆต้ๆงๅถ(ไพๅฏฆ้ๆ
ๆณ่ชฟๆด)
wsrep_slave_threads = 8
wsrep_certification_rules= STRICT
ๅๅงๅๆญฅ้ฉ(ๆฆๅฟต็คบๆ):
- ๅจ็ฌฌไธๅฐ DB(db1)ไฝฟ็จ
galera_new_cluster/ bootstrap ๆนๅผๅๅ้็พค。 - ๅจ db2、db3 ็ดๆฅๅๅ MariaDB,ๆ้้
wsrep_cluster_addressๆพๅฐ้็พคไธฆ่ชๅๅๆญฅ。 - ็ขบ่ช
SHOW STATUS LIKE 'wsrep_cluster_size';้กฏ็คบ็ฏ้ปๆธ้ๆญฃ็ขบ。
3. HAProxy ่ๅฅๅบทๆชขๆฅ่จญๅฎ
ๅจ HAProxy ็ฏ้ปไธญ,ๅฏ่จญๅฎไธ็ตๅพ็ซฏๆๅ Galera ็ฏ้ป,ไธฆ้้ mysql-check ๆชขๆฅๅฅๅบท็ๆ
:
frontend mysql_front
bind *:3306
mode tcp
default_backend galera_back
backend galera_back
mode tcp
balance roundrobin
option mysql-check user haproxy_check
server db1 10.0.0.21:3306 check
server db2 10.0.0.22:3306 check
server db3 10.0.0.23:3306 check backup
ๅฏฆๅไธๅฏไปฅไพ้ๆฑๆๆไบ็ฏ้ปๆจ็บ backup,ๆ้ฒไธๆญฅๅฉ็จ ProxySQL ๅ「ๅฏซๅ
ฅ้ไธญ / ่ฎๅๅๆฃ」,
ไพๅฆ:ไธๅฐ็ฏ้ปไธป่ฒ ่ฒฌๅฏซๅ
ฅ,ๅ
ถ้คๆพ่ฎๅ็บไธป。
4. Keepalived ่ๆฌ IP ่จญๅฎ
ไปฅ A ็ฏ้ป็บไธป、B ็ฏ้ป็บๅ็ Keepalived ่จญๅฎ็คบๆ:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass ha-vip-pass
}
virtual_ipaddress {
10.0.0.100/24 dev eth0
}
}
ๅจ B ็ฏ้ปๅๅฐ state ่จญ็บ BACKUP,priority ่จญไฝไธไบ,ไพๅฆ 100。็ถ A ็ฏ้ปๅคฑๆๆ,VIP ๆ้ฃๅฐ B ็ฏ้ป。
5. ๆ ้ๆ ๅข็ฐกๅฎ้ฉ่ญ
- ้้ๅ ถไธญไธๅ DB ็ฏ้ป:็ขบ่ช HAProxy ๆชขๆธฌๅฐๅพ,ๅพๅพ็ซฏๆฑ ไธญ็งป้ค่ฉฒ็ฏ้ป。
- ้้ A ็ฏ้ปๆดๆฉ:็ขบ่ช VIP ้ฃ็งปๅฐ B ็ฏ้ป,ๆ็จ็จๅผ้ฃ็ทไธไธญๆท(ๆ็ญๆซไธญๆทๅพๆขๅพฉ)。
- ๅปๆ่ฃฝ้ ็ถฒ่ทฏ้้ข:็ขบ่ช Galera ็ Quorum ่ก็บ,้ฟๅ ้้้ฝๅฐๅคๆไพๆๅ。
๐️ ไบ、็ฏไพๆถๆงไบ:MySQL InnoDB Cluster + MySQL Router + Keepalived
่ฅๅๅฅฝ MySQL ๅฎๆนๆ่กๅ ็,ๅฏไปฅๆน็จ:
- InnoDB Cluster:ๅบๅฑคไฝฟ็จ Group Replication ๅฎๆๅคไธป่คๅฏซ。
- MySQL Router:ๆไพๆบๆ ง่ทฏ็ฑ็ซฏ้ป(่ฎ / ๅฏซไธๅๅ 、ๆ ้็ฏ้ปๅ้ค)。
1. ๅปบ็ซ InnoDB Cluster(็คบๆๆต็จ)
้้ MySQL Shell ๅปบ็ซ้็พค็ๆฆๅฟต็คบๆ:
# ๅจ mysqlsh ไธญ
dba.createCluster("prodCluster", {multiPrimary: true})
# ๅ ๅ
ฅ็ฏ้ป
cluster = dba.getCluster()
cluster.addInstance("root@10.0.0.31:3306")
cluster.addInstance("root@10.0.0.32:3306")
cluster.addInstance("root@10.0.0.33:3306")
# ๆฅ็็ๆ
cluster.status()
่จญๅฎ multiPrimary: true ๅพ,้็พคไธญ็็ฏ้ป้ฝๅฏไปฅๅฏซๅ
ฅ,InnoDB Cluster ๆ่็ๅฏซๅ
ฅๆๅบ่ๅ
ฑ่ญ。
2. ้จ็ฝฒ MySQL Router
ๅจ Router ็ฏ้ปไธ,ไฝฟ็จ MySQL Shell ็บ Router ๅธถๅบ่จญๅฎ:
# ็ขๅบ Router ่จญๅฎ
dba.configureRouterInstance("router@10.0.0.41:6446", {
clusterName: "prodCluster"
})
Router ๅๅๅพๆๆด้ฒ้กไผผ:
6446:่ฎๅฏซ็ซฏ้ป。6447:ๅฏ่ฎ็ซฏ้ป。
ๅๆญ้ Keepalived ๅฐ Router ็ฏ้ปๅๆ้ๆฉ,ๅฐๅคไธๆจฃๅชๆไพไธๅ VIP。
⏱ ๅ ญ、่ชๅๆ ้ๅตๆธฌ่ Failover ๆต็จ่จญ่จ
Active-Active ๆถๆง็้้ป,ไธๅชๆฏ「ๅคๅฐ้ฝๅจ่ท」,่ๆฏๆๅฐๆไบไนๅพ่ฝไธ่ฝ่ชๅๅๆไธไธๅฏซๅฃ่ณๆ。
ไธ่ฌๆๆๆไธๅๅฑคๆฌก:
- ่ณๆๅบซๅฑค: Galera / Group Replication ้้ๆ็ฅจๆฉๅถๆฑบๅฎ่ชฐ้ๅจ้็พคๅ ง。
- Proxy / Router ๅฑค: HAProxy / ProxySQL / MySQL Router ้้ๅฅๅบทๆชขๆฅ,ๆ「ๆฒ้」ๆ「ไธๅจ้็พคๅ ง」็็ฏ้ป่ธขๆ。
- VIP / DNS ๅฑค: Keepalived ๆ็ญ TTL DNS ๆงๅถ「ๅ ฅๅฃๅจๅชไธๅฐ Proxy」。
่จญ่จๅๅ:
- ไปปไธๅฑค้ฝไธ่ฆๅฎ้ป(Single Point of Failure)。
- 「่ชฐๆๆฌๆฑบๅฎๆ็ฏ้ป่ธขๅบๆๅ」ไธๅฎ่ฆๆธ ๆฅ(้ฟๅ ๅค้ ญๆฑบ็ญ)。
- ๆ ้ๅตๆธฌ่ฆๆ grace period,้ฟๅ ็ญๆซ็ถฒ่ทฏๆๅๅธถไพ้ๅบฆๅๆ。
๐ฉน ไธ、ๅธธ่ฆ้ท้ฑ่ๆ้ฏๆธ ๅฎ
- ่ ฆ่ฃ(Split Brain): ็ถฒ่ทฏๅๅฒๅพ,ๅ ฉ้้ฝไปฅ็บ่ชๅทฑๆฏไธป,็ตๆๅๆๆฅๅๅฏซๅ ฅ。
- Flow Control ้ ๆๅปถ้ฒ: Galera / Group Replication ไธญ,่ฝๅพๅคชๅค็็ฏ้ปๅฏ่ฝๆๆ ขๆด้ซๆไบค้ๅบฆ。
- ไธ็ถ่ฎๅฏซๅ้ : ๆ「ๅผทไธ่ด่ฆๆฑ」็ๅฏซๅ ฅๅๆฃๅฐๅคๅ็ฏ้ป,้ ๆๅคง้้็ซถ็ญ。
- ๅฅๅบทๆชขๆฅ้ๆผๅฎ็ด: ๅชๆชขๆฅ 3306 ๆดป่ๅฐฑ็ถๆญฃๅธธ,ๆฒๆๆชขๆฅ「ๆฏๅฆไปๅจ้็พคๅ ง」。
- ๅไปฝ่ๅฟซ็ งไธไธ่ด: ๆฒๆๆ่ญๅฐๅคไธปๆถๆงไธๅไปฝ้ป็้ธๆ่ไธ่ดๆงๅ้ก。
ๅปบ่ญฐๆ้ฏๆนๅ:
- ๅ
็ DB ๅฑค้็พค็ๆ
(
wsrep_cluster_status、cluster.status())。 - ๅ็ Proxy ๅฑคๅพ็ซฏๆฑ ็ๆ
(
show servers state/ HAProxy stats)。 - ๆๅพ็ VIP / DNS ็ๆๅ่ ARP ่งฃๆๆฏๅฆๆญฃ็ขบ。
๐พ ๅ ซ、ๅไปฝ、็ถญ่ญท่ Schema ่ฎๆด็ญ็ฅ
Active-Active ๆถๆงไธ,ๅไปฝ่็ถญ่ญท่ฆ็นๅฅๅฐๅฟ:
- ๅไปฝ: ๅปบ่ญฐ็ตฑไธ็ฑ「ๆๅฎ็ฏ้ป」ๅท่ก,ไธฆ็ขบ่ช่ฉฒ็ฏ้ปๅจๅไปฝๆ้ไธ่ขซ Proxy ็ถๆไธป่ฆๅฏซๅ ฅ็ฏ้ป。
- Schema ่ฎๆด: ๅ้ๆธๅฐๅคง่ฆๆจก ALTER,ๆน็จ Online DDL ๆๅๆน่ฎๆด。
- ็ถญ่ญท็ชๅฃ: ๅปบ่ญฐ้ ๅ่ฒ ่ผไฝ่ฐท,ไธไบๅ ๆจกๆฌ「็ฏ้ปไธ็ท / ้ๆฐๅ ๅ ฅ」ๆต็จ。
ๅฆๆไฝ ๅทฒ็ถๆ PostgreSQL 50 ่ฌ็ญ่ณๆๅฏฆ้ฉ ้ฃ้กๅบๆบ็ฐๅข,ๅฏไปฅๆฏ็ งๆนๅผ็บ Active-Active ๆถๆงๅปบ็ซๅฃๆธฌ่ ณๆฌ,ๆธฌ่ฉฆ:
- ๅฎ็ฏ้ปๆ ้ๆ็ๅๅ็ฉฉๅฎๅบฆ。
- ็ฏ้ป้ๆฐๅ ๅ ฅๆๅธถไพ็ๅๆญฅ่ฒ ่ผ。
- ๅจๅคง้ DML / DDL ๆไฝไธ,Flow Control ็ๅฝฑ้ฟ็จๅบฆ。
๐ฏ ไน、ไป้บผๆ ๅข้ฉๅ Active-Active?ไป้บผๆ ๅขไธ้ฉๅ?
้ฉๅๆก็จ Active-Active ็ๆ ๅข:
- ่ฎๅฏซๆต้้ฝๅ้ซ,้่ฆๅๆๆๅ ๅๅ่ๅฏ็จๆง。
- ๆๅ ไธ่ฝๆฅๅ้ทๆ้็ไธปๅๅๆ็ชๅฃ,ไพๅฆ้่ไบคๆ、ๅณๆ่จๅฎ็ณป็ตฑ。
- ๅ้ๆไธๅฎ็ DBA / SRE ่ฝ้,้กๆๆ่ณๅจ็ฃๆง่ๆ้ฏๆต็จไธ。
ๆซๆไธๅปบ่ญฐๆก็จ Active-Active ็ๆ ๅข:
- ่ณๆๆจกๅ้ซๅบฆ้ไธญๆผๅฎไธๅนพๅผต่กจ,ๆฏๆฌกไบคๆ้ฝๆไฟฎๆนๅไธๆน row,้็ซถ็ญๆฅตๅด้。
- ๅ้็ผบไน DBA ็ถ้ฉ,ไปฅๅพ้ฃๅฎไธป่คๅฏซ้ฝๅธธๅบๅ 。
- ็ณป็ตฑ่ฆๆจกๅฐๅฐ,ไธๅฐไธปๆฉ + ไธๅฐๅๆดๅฐฑ่ถณไปฅๆฏๆๆต้。
้ๆๅ,ๅ่ๅปบ่ญฐๅ ๆๅบ็คๆๅฅฝ,ไพๅฆ:
- ่จญ่จๅ็็ Active-Passive + ่ชๅ Failover。
- ๅ ๅ ่ฎๅฏซๅ้ข,ๆ่ฎๆต้ๅๅฐๅฏๆฌไธ。
- ๅ้ๆญฅๆผ้ฒๅฐๅคไธปๆถๆง。
๐งญ ๅ、ๅฏฆไฝ่กๅๆธ ๅฎ(ๅฏ็ถๅฐๆก Checklist)
✅ ๆ็ขบๅฎ็พฉ็ณป็ตฑไธ่ดๆง้ๆฑ(ๅผทไธ่ด / ๆ็ตไธ่ด)
✅ ้ธๅฎๅคไธป่คๅฏซๆนๆก(Galera / InnoDB Cluster / ๅ
ถไป)
✅ ่ฆๅ็ฏ้ปๆธ้:่ณๅฐ 3 DB ็ฏ้ปๆ 2 DB + 1 Arbitrator
✅ ้จ็ฝฒ Proxy ๅฑค(HAProxy / ProxySQL / MySQL Router)
✅ ้จ็ฝฒ VIP / DNS ๅๆๆฉๅถ(Keepalived / ็ญ TTL DNS)
✅ ๅปบ็ซๆ
้ๆ
ๅขๆธฌ่ฉฆ่
ณๆฌ(็ฏ้ป็ถๆฉ、็ถฒ่ทฏไธญๆท、้ๅ)
✅ ๅปบ็ซๅไปฝ่้ๅ้ฉ่ญๆต็จ(ๅฎๆๆผ็ทด)
✅ ้ๅฐ Flow Control / Quorum / Split Brain ๅปบ็ซ SOP
✅ ๅฐๆๆๆญฅ้ฉๆไปถๅ,็ดๅ
ฅ็ถญ้ Runbook
๐ฌ ไบๅ็่จๅผๅฐ(Active-Active ๅฏฆๆฐๅไบซๅ)
ๅฆๆไฝ ๅจๅฏฆไฝ MySQL / MariaDB Active-Active ้ซๅฏ็จๆถๆง ็้็จไธญ:
- ้ๅฐ Flow Control、ๅปถ้ฒๆ้็ซถ็ญๅ้ก
- ๅฐ Galera / InnoDB Cluster / ProxySQL ่จญ่จๆ็ๅ
- ๆๆณๅไบซไฝ ๅฏฆ้่ธฉๅฐ็ๅ、ๆถๆงๆๆจธ
ๆญก่ฟ็ดๆฅๅจไธๆน็่จ ๐ ็ฐกๅฎๆ่ฟฐไฝ ็ ็ฏ้ปๆธ้、็ๆฌ、ๆถๆงๅ,ๆๆๆๅธธ่ฆๅ้กๆด็ๆๅพ็บ่ฃๅ ็ฏๆ FAQ ๆดๆฐๅจๆฌๆ。
๐ ๅปถไผธ้ฑ่ฎ
- ๐ Linux RAID ๅฎๆดๆๅ:RAID0/1/5/10 ๅฏฆไฝ่็ถญ่ญทๅ จๆป็ฅ
- ๐ Proxmox VE ไผๆฅญ้จ็ฝฒ่ๅ:ๅข้、Ceph、ZFS、ๅไปฝ่็ถฒ่ทฏๅ จๆนไฝๆๅ
- ๐ก Linux Fail2Ban ้ฒ้ๅฏฆๆฐ:SSH / Web ้ฒๆดๅ็ ด่งฃๅฎๆด่จญๅฎ
- ๐ PostgreSQL ๅคงๅ่ณๆๅบซๅฏฆไฝ:50 ่ฌ็ญ่ณๆๅปบ็ซ、ๆฅ่ฉข่ๅไปฝ้ๅๆ่ฝๅฏฆ้ฉ
- ๐️ MariaDB Galera Cluster Active-Active ้ซๅฏ็จๆถๆง:ไธ็ฏ้ป้็พค + Proxy ๅฏฆไฝๅ จๆต็จ
๐ ็ต่ช:ๅพ「ๅ ฉๅฐ DB」ๅฐ「ไธๆดๅๆๅ็ณป็ตฑ」็ๆ็ถญ
ๅพๅคไบบๅจ่ซ Active-Active ๆถๆงๆ,็ด่ฆบๆณๅฐ็ๆฏ「ๆๅ ฉๅฐ่ณๆๅบซๅๆไธปไธป่คๅฏซ」; ไฝ็ถไฝ ๅฏฆ้้จ็ฝฒ้ Galera、InnoDB Cluster、ProxySQL、HAProxy、Keepalived ็ญ็ตๅไนๅพ, ๆ็ผ็พๅฎ็ๆญฃๆน่ฎ็ๆฏ:ไฝ ้ๅง็จ「ๆดๅๆๅ็ณป็ตฑ」่ไธๆฏ「ๅฎไธ่ณๆๅบซ」็่งๅบฆๅจ่จญ่จๆถๆง。
ๅฆๆไฝ ็ฎๅๆญฃๅจ่ฆๅ่ณๆๅบซ้ซๅฏ็จๅ็ด、ๆ่ ๆญฃ่ฆๅพ Active-Passive ้ๆธกๅฐ Active-Active, ๅพๆจ่ฆๆๆฌๆ็ถๆ ๅฐๆก Checklist ่ๅญธ็ฟๅฐๅ, ๆญ้ ไธ้ขๅปถไผธ้ฑ่ฎไธญ็ Proxmox、Linux ๅฎๅ จ่ PostgreSQL ๅฏฆ้ฉ็ณปๅ,ไธๆญฅไธๆญฅๆๆด้ซๅบ็คๆ็ฉฉ。
— WWFandy・MySQL / MariaDB HA ็ญ่จ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ