系統架構圖
-
微服務通過haproxy代理訪問數據庫1,在數據庫1異常時訪問數據庫2
配置如下:
global
maxconn 32000
nbproc 3
daemon
defaults
mode tcp
retries 3
option abortonclose
maxconn 32000
timeout connect 10s
timeout client 10m
timeout server 10m
timeout http-keep-alive 10m
log 127.0.0.1 local0 err
listen win_ss
bind 0.0.0.0:9030
mode tcp
option mysql-check user haproxy#添加mysql無密碼賬號,通過該賬號進行check
#balance source
server s1 127.0.0.1:3306 check rise 1 fall 1#主機,進行check檢查
server s2 127.0.0.1:3306 check rise 1 fall 1 backup#熱備主機(從機)
listen status
bind 0.0.0.0:1188
mode http
stats enable
stats refresh 30s
stats uri /
stats auth admin:admin
stats hide-version
stats admin if TRUE
- 數據庫1與數據庫2進行雙機互備
監控備份情況及異常處理命令如下:
stop slave;//停止從庫同步
set global sql_slave_skip_counter=1;//跳過錯誤
start slave;//開啓同步
show slave status;//顯示同步狀態
同步狀態重點關注字段:
Slave_io_state//狀態
Relay_master_log_file//當前讀取的備份文件名
Slave_io_running//io運行情況
Slave_sql_running//sql運行情況
Seconds_behind_master//落後於主機的時間
- 數據庫配置
#忽略同步的表
replicate-wild-ignore-table
#跳過指定error no類型的錯誤,不是越多越好
slave-skip-errors=1062,1053,1146,1051
- 遺留問題
- 單點問題,需要使用集羣及vip的方式解決
- 讀寫分離問題,需要mycat等中間件解決
- 分區表的問題,需要跟蹤及測試
- 數據庫宕機報警及相關信息監控