mcpField
D
database-replication-setup

database-replication-setup

github.com/dengineproblem数据与数据库61 次安装
代码仓库

关于 database-replication-setup

用于规划和配置数据库复制的 Skill,提供 MySQL、PostgreSQL 和 MongoDB 示例,也涵盖复制监控与故障切换实践,适合数据库运维人员参考。

主要功能

  1. 01复制模式概览
  2. 02MySQL 复制配置
  3. 03PostgreSQL 流复制
  4. 04MongoDB 副本集示例
  5. 05延迟监控与故障切换指南

适用场景

  1. 01规划复制拓扑
  2. 02配置备用数据库
  3. 03检查复制延迟
  4. 04编写故障切换流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dengineproblem/agents-monorepo --skill database-replication-setup

安装后在 Claude Code 中输入/database-replication-setup确认已加载。

README 原文English

来自项目 README

README 暂无中文译文,以下为英文原文;中文介绍见上方。

Database Replication Expert

Эксперт по системам репликации баз данных с глубокими знаниями архитектур репликации master-slave, master-master и кластерных решений.

Основные принципы репликации

Типы репликации
  • Асинхронная: Высокая производительность, возможная потеря данных при сбоях
  • Синхронная: Гарантия консистентности данных, повышенная задержка
  • Полусинхронная: Баланс между производительностью и консистентностью
  • Master-Slave: Масштабирование чтения, резервное копирование
  • Master-Master: Географическое распределение, высокая доступность

Настройка репликации MySQL

Конфигурация Master
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
sync_binlog = 1

CREATE USER 'repl_user'@'%' IDENTIFIED BY 'secure_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
Конфигурация Slave
[mysqld]
server-id = 2
relay-log = relay-bin
read_only = 1

CHANGE MASTER TO
    MASTER_HOST='master-server',
    MASTER_USER='repl_user',
    MASTER_PASSWORD='secure_password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=154;

START SLAVE;

Потоковая репликация PostgreSQL

Основной сервер
# postgresql.conf
wal_level = replica
max_wal_senders = 3
max_replication_slots = 3
CREATE USER repl_user REPLICATION LOGIN PASSWORD 'secure_password';
Резервный сервер
pg_basebackup -h primary-server -D /var/lib/postgresql/main -U repl_user -v -P

# postgresql.conf
primary_conninfo = 'host=primary-server port=5432 user=repl_user password=secure_password'

MongoDB Replica Set

rs.initiate({
  _id: "myReplicaSet",
  members: [
    { _id: 0, host: "mongo1:27017", priority: 2 },
    { _id: 1, host: "mongo2:27017", priority: 1 },
    { _id: 2, host: "mongo3:27017", arbiterOnly: true }
  ]
});

Мониторинг репликации

MySQL
SHOW SLAVE STATUS\G;
# Проверка: Slave_IO_Running, Slave_SQL_Running, Seconds_Behind_Master
PostgreSQL
SELECT client_addr, state, sent_lsn, replay_lsn,
       pg_wal_lsn_diff(sent_lsn, replay_lsn) AS lag_bytes
FROM pg_stat_replication;

Стратегии Failover

Автоматическое переключение с HAProxy
listen mysql-cluster
    bind *:3306
    option mysql-check user haproxy_check
    server mysql-1 mysql1:3306 check weight 1
    server mysql-2 mysql2:3306 check weight 1 backup

Лучшие практики

  • Используйте SSL/TLS для трафика репликации
  • Мониторьте задержку репликации
  • Тестируйте процедуры failover регулярно
  • Документируйте процедуры восстановления

评论

支持 Markdown