插件窝 干货文章 如何在Linux上配置高可用的数据库主从复制监控

如何在Linux上配置高可用的数据库主从复制监控

配置 主从 Prometheus Orchestrator 917    来源:    2025-04-16

Linux高可用数据库主从复制监控方案

一、方案概述

本方案提供在Linux环境下配置高可用数据库主从复制监控的完整解决方案,适用于MySQL、PostgreSQL等主流数据库系统。

二、核心组件

  1. 数据库主从复制配置
  2. 监控系统部署
  3. 告警机制
  4. 自动故障处理

三、详细配置步骤

1. 数据库主从复制配置

MySQL主从配置示例

主库配置(my.cnf):

[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
binlog_do_db = your_database
sync_binlog = 1

从库配置(my.cnf):

[mysqld]
server-id = 2
relay_log = mysql-relay-bin
log_bin = mysql-bin
binlog_format = ROW
read_only = 1

配置复制用户并启动复制:

-- 在主库执行
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

-- 在从库执行
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 107;
START SLAVE;

2. 监控系统部署

使用Prometheus + Grafana监控方案

安装Prometheus:

wget https://github.com/prometheus/prometheus/releases/download/v2.30.0/prometheus-2.30.0.linux-amd64.tar.gz
tar xvfz prometheus-*.tar.gz
cd prometheus-*

配置Prometheus(prometheus.yml):

scrape_configs:
  - job_name: 'mysql'
    static_configs:
      - targets: ['mysql-master:9104', 'mysql-slave:9104']
        labels:
          group: 'database'

安装MySQL Exporter(在主从服务器上):

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz
tar xvfz mysqld_exporter-*.tar.gz
cd mysqld_exporter-*
./mysqld_exporter --config.my-cnf=".my.cnf"

安装Grafana:

wget https://dl.grafana.com/oss/release/grafana-8.1.5.linux-amd64.tar.gz
tar xvfz grafana-*.tar.gz
cd grafana-*
./bin/grafana-server

3. 告警机制配置

使用Alertmanager

配置Alertmanager(alertmanager.yml):

route:
  group_by: ['alertname', 'cluster', 'service']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 3h
  receiver: 'team-db-pager'
receivers:
- name: 'team-db-pager'
  webhook_configs:
  - url: 'http://alert-receiver/api/v1/alerts'
    send_resolved: true

配置Prometheus告警规则(rules.yml):

groups:
- name: mysql.rules
  rules:
  - alert: MySQLReplicationLag
    expr: mysql_slave_status_seconds_behind_master > 30
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "MySQL replication lag on {{ $labels.instance }}"
      description: "MySQL slave is {{ $value }} seconds behind master"

4. 自动故障处理

使用Orchestrator实现自动故障转移

安装Orchestrator:

wget https://github.com/openark/orchestrator/releases/download/v3.2.3/orchestrator-3.2.3-linux-amd64.tar.gz
tar xvfz orchestrator-*.tar.gz
cd orchestrator-*

配置Orchestrator(config.json):

{
  "Debug": true,
  "ListenAddress": ":3000",
  "MySQLTopologyUser": "orchestrator",
  "MySQLTopologyPassword": "orchestrator_password",
  "MySQLReplicaUser": "repl",
  "MySQLReplicaPassword": "password",
  "RaftEnabled": true,
  "RaftBind": "127.0.0.1",
  "RaftDataDir": "/var/lib/orchestrator"
}

四、监控指标清单

  1. 复制状态监控:

    • Slave_IO_Running
    • Slave_SQL_Running
    • Seconds_Behind_Master
  2. 性能监控:

    • 复制延迟时间
    • 主从服务器负载
    • 网络延迟
  3. 资源监控:

    • CPU使用率
    • 内存使用情况
    • 磁盘I/O

五、高可用保障措施

  1. VIP漂移: 使用Keepalived实现虚拟IP自动切换
  2. 双主配置: 配置双主复制模式提高可用性
  3. 中间件方案: 使用ProxySQL或HAProxy实现读写分离和故障转移
  4. 定期备份验证: 定期验证备份可用性

六、维护建议

  1. 定期检查监控系统是否正常运行
  2. 定期测试故障转移流程
  3. 保持监控指标和告警阈值的更新
  4. 定期审查日志分析潜在问题

通过以上配置,您可以建立一个高可用的数据库主从复制监控系统,确保数据库服务的稳定性和可靠性。