本方案提供在Linux环境下配置高可用数据库主从复制监控的完整解决方案,适用于MySQL、PostgreSQL等主流数据库系统。
主库配置(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;
安装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
配置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"
安装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"
}
复制状态监控:
性能监控:
资源监控:
通过以上配置,您可以建立一个高可用的数据库主从复制监控系统,确保数据库服务的稳定性和可靠性。