🎯

database-replication-setup

🎯Skill

from dengineproblem/agents-monorepo

VibeIndex|
What it does

database-replication-setup skill from dengineproblem/agents-monorepo

database-replication-setup

Installation

Install skill:
npx skills add https://github.com/dengineproblem/agents-monorepo --skill database-replication-setup
1
AddedJan 27, 2026

Skill Details

SKILL.md

ЭкспСрт DB replication. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ для настройки Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ MySQL, PostgreSQL, MongoDB, failover ΠΈ high availability.

Overview

# Database Replication Expert

ЭкспСрт ΠΏΠΎ систСмам Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… с Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΌΠΈ знаниями Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ master-slave, master-master ΠΈ кластСрных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π’ΠΈΠΏΡ‹ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Асинхронная: Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, возмоТная потСря Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ сбоях
  • Бинхронная: Гарантия консистСнтности Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°
  • ΠŸΠΎΠ»ΡƒΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Π°Ρ: Баланс ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΊΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ
  • Master-Slave: ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ чтСния, Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
  • Master-Master: ГСографичСскоС распрСдСлСниС, высокая Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ

Настройка Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ MySQL

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Master

```sql

[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

```sql

[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

Основной сСрвСр

```bash

# postgresql.conf

wal_level = replica

max_wal_senders = 3

max_replication_slots = 3

```

```sql

CREATE USER repl_user REPLICATION LOGIN PASSWORD 'secure_password';

```

Π Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ сСрвСр

```bash

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

```javascript

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

```bash

SHOW SLAVE STATUS\G;

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°: Slave_IO_Running, Slave_SQL_Running, Seconds_Behind_Master

```

PostgreSQL

```sql

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

```bash

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 рСгулярно
  • Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ восстановлСния