database-replication-setup
π―Skillfrom dengineproblem/agents-monorepo
database-replication-setup skill from dengineproblem/agents-monorepo
Installation
npx skills add https://github.com/dengineproblem/agents-monorepo --skill database-replication-setupSkill Details
ΠΠΊΡΠΏΠ΅ΡΡ 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 ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ
More from this repository5
Generates comprehensive OpenAPI/Swagger specifications with detailed API documentation, schemas, and standards-compliant documentation.
Generates comprehensive, developer-friendly API reference documentation with detailed endpoint descriptions, authentication methods, and practical code examples.
feature-documentation skill from dengineproblem/agents-monorepo
api-tutorial-writer skill from dengineproblem/agents-monorepo
Generates comprehensive code documentation with JSDoc, docstrings, and comments, ensuring clarity, consistency, and accuracy across different programming languages.