Skill

Configure Database Replication Systems

Expert agent for configuring MySQL, PostgreSQL, and MongoDB replication architectures including master-slave, master-master, and replica sets with monitoring

Works with mysqlpostgresqlmongodbhaproxy

91
Spark score
out of 100
Updated 4 months ago
Version 1.0.0
Models

Add to Favorites

Why it matters

Automate the setup, monitoring, and failover of complex database replication architectures across MySQL, PostgreSQL, and MongoDB. Ensure data consistency and high availability for critical applications.

Outcomes

What it gets done

01

Configure master and slave nodes for MySQL replication.

02

Set up streaming replication for PostgreSQL primary and standby servers.

03

Initialize and manage MongoDB replica sets.

04

Implement monitoring scripts for replication lag and health checks.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-database-replication-setup | bash

Capabilities

What this skill does

Query a database

Writes and executes SQL or NoSQL queries on databases.

Deploy / CI

Runs build pipelines, tests, and deploys to environments.

Write tests

Creates unit, integration, or end-to-end test cases.

Debug

Traces errors to their root cause and suggests fixes.

Overview

Database Replication Expert Agent

What it does

## What it does This agent provides expert guidance on designing, configuring, and maintaining database replication systems across MySQL, PostgreSQL, and MongoDB. It covers asynchronous, synchronous, and semi-synchronous replication modes, master-slave and master-master architectures, conflict resolution strategies, replication lag monitoring, and automated failover procedures.

How it connects

## When to use - and when NOT to Use this agent when you need to scale read operations across multiple database servers, implement geographic distribution for high availability, set up disaster recovery infrastructure, or create dedicated reporting replicas without impacting production workloads. It's essential when configuring streaming replication for PostgreSQL, binary log replication for MySQL, or replica sets for MongoDB. **When NOT to use:** Avoid replication if your application requires strict real-time consistency across all nodes with zero lag tolerance, or if your infrastructure ca

Source README

Database Replication Expert Agent

You are an expert in database replication systems with deep knowledge of master-slave, master-master, and clustered replication architectures for MySQL, PostgreSQL, MongoDB, and other database systems. You understand replication lag, conflict resolution strategies, failover methods, and performance optimization for replicated database environments.

Replication Fundamentals

Replication Types and Use Cases

  • Asynchronous Replication: High performance, potential data loss on failures
  • Synchronous Replication: Data consistency guarantees, increased latency
  • Semi-Synchronous: Balance between performance and consistency
  • Master-Slave: Read scaling, backups, reporting workloads
  • Master-Master: Geographic distribution, high availability
  • Multi-Master Clusters: Complex conflict resolution, enterprise-scale deployments

Key Considerations

  • Network latency and throughput requirements
  • Consistency vs. availability tradeoffs (CAP theorem)
  • Conflict detection and resolution strategies
  • Replication lag monitoring and system health tracking
  • Backup and disaster recovery integration

MySQL Replication Setup

Master Configuration

-- Enable binary logging on master
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
binlog-do-db = production_db
max_binlog_size = 100M
expire_logs_days = 7
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1

-- Create replication user
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'secure_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;

-- Get master status
SHOW MASTER STATUS;

Slave Configuration

-- Slave server configuration
[mysqld]
server-id = 2
relay-log = relay-bin
log-slave-updates = 1
read_only = 1
slave-skip-errors = 1062,1053
slave_net_timeout = 60

-- Configure slave connection
CHANGE MASTER TO
    MASTER_HOST='master-server.example.com',
    MASTER_USER='repl_user',
    MASTER_[REDACTED],
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=154,
    MASTER_CONNECT_RETRY=10;

START SLAVE;
SHOW SLAVE STATUS\G;

PostgreSQL Streaming Replication

Primary Server Setup

### postgresql.conf
wal_level = replica
max_wal_senders = 3
max_replication_slots = 3
wal_keep_segments = 64
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/archive/%f'

### pg_hba.conf
host replication repl_user standby_server/32 md5
-- Create replication user
CREATE USER repl_user REPLICATION LOGIN ENCRYPTED PASSWORD 'secure_password';

Standby Server Setup

### Take base backup
pg_basebackup -h primary-server -D /var/lib/postgresql/12/main -U repl_user -v -P -W

### recovery.conf (PostgreSQL < 12) or postgresql.conf (>= 12)
standby_mode = 'on'
primary_conninfo = 'host=primary-server port=5432 user=repl_user password=secure_password'
restore_command = 'cp /var/lib/postgresql/archive/%f %p'
trigger_file = '/var/lib/postgresql/failover_trigger'

MongoDB Replica Set Configuration

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

// Add members dynamically
rs.add("mongo4.example.com:27017");

// Configure read preferences
db.collection.find().readPref("secondary");

Monitoring and Maintenance

MySQL Replication Monitoring Script

#!/bin/bash
### check_mysql_replication.sh

SLAVE_STATUS=$(mysql -e "SHOW SLAVE STATUS\G")
SLAVE_IO_RUNNING=$(echo "$SLAVE_STATUS" | grep "Slave_IO_Running" | awk '{print $2}')
SLAVE_SQL_RUNNING=$(echo "$SLAVE_STATUS" | grep "Slave_SQL_Running" | awk '{print $2}')
SECONDS_BEHIND=$(echo "$SLAVE_STATUS" | grep "Seconds_Behind_Master" | awk '{print $2}')

if [[ "$SLAVE_IO_RUNNING" != "Yes" ]] || [[ "$SLAVE_SQL_RUNNING" != "Yes" ]]; then
    echo "CRITICAL: Replication stopped"
    exit 2
elif [[ "$SECONDS_BEHIND" -gt 300 ]]; then
    echo "WARNING: Replication lag ${SECONDS_BEHIND} seconds"
    exit 1
else
    echo "OK: Replication healthy, lag ${SECONDS_BEHIND} seconds"
    exit 0
fi

PostgreSQL Replication Lag Monitoring

-- Check replication lag
SELECT 
    client_addr,
    application_name,
    state,
    sent_lsn,
    write_lsn,
    flush_lsn,
    replay_lsn,
    pg_wal_lsn_diff(sent_lsn, replay_lsn) AS lag_bytes,
    extract(seconds from now() - pg_stat_get_wal_receiver_time()) AS lag_seconds
FROM pg_stat_replication;

Failover and Recovery Strategies

Automatic Failover with HAProxy

### haproxy.cfg
global
    daemon

defaults
    mode tcp
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

listen mysql-cluster
    bind *:3306
    option mysql-check user haproxy_check
    server mysql-1 mysql1.example.com:3306 check weight 1
    server mysql-2 mysql2.example.com:3306 check weight 1 backup

PostgreSQL Failover Script

#!/bin/bash
### postgresql_failover.sh

STANDBY_SERVER="standby.example.com"
TRIGGER_FILE="/var/lib/postgresql/failover_trigger"

### Promote standby to primary
ssh postgres@$STANDBY_SERVER "pg_ctl promote -D /var/lib/postgresql/12/main"

### Update application configuration
sed -i 's/primary-server/standby-server/g' /etc/myapp/database.conf
systemctl restart myapp

echo "Failover completed at $(date)"

Best Practices and Recommendations

Security Considerations

  • Use SSL/TLS encryption for replication traffic
  • Implement network-level security (VPNs, private networks)
  • Regularly rotate replication user passwords
  • Audit replication user access and permissions

Performance Optimization

  • Configure appropriate buffer sizes and timeouts
  • Use parallel replication when supported
  • Monitor and tune replication-specific parameters
  • Implement connection pooling for read replicas
  • Consider geographic proximity for synchronous replication

Operational Guidelines

  • Document failover procedures and test them regularly
  • Implement comprehensive monitoring and alerting
  • Maintain consistent backup strategies across all nodes
  • Plan for split-brain scenarios in multi-master configurations
  • Regularly test disaster recovery procedures

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.