This commit is contained in:
Toby
2026-01-27 17:35:45 -05:00
commit 2639af6531
176 changed files with 27104 additions and 0 deletions
@@ -0,0 +1,70 @@
---
name: database-backups
description: Implement database backup strategies. Configure automated backups, retention, and recovery testing. Use when designing backup and recovery procedures.
license: MIT
metadata:
author: devops-skills
version: "1.0"
---
# Database Backups
Implement comprehensive database backup strategies.
## Backup Types
```yaml
backup_types:
full:
description: Complete database copy
frequency: Weekly
incremental:
description: Changes since last backup
frequency: Daily
transaction_log:
description: Continuous transaction logging
frequency: Continuous
```
## Automated Backup Script
```bash
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backups"
# PostgreSQL
pg_dump -Fc mydb > $BACKUP_DIR/pg_$DATE.dump
# MySQL
mysqldump -u root -p$MYSQL_PWD mydb | gzip > $BACKUP_DIR/mysql_$DATE.sql.gz
# Upload to S3
aws s3 cp $BACKUP_DIR/pg_$DATE.dump s3://backups/postgres/
# Cleanup old backups (keep 7 days)
find $BACKUP_DIR -name "*.dump" -mtime +7 -delete
```
## Recovery Testing
```bash
# Create test environment
docker run -d --name restore-test postgres:15
# Restore backup
pg_restore -d testdb backup.dump
# Verify data integrity
psql testdb -c "SELECT COUNT(*) FROM users;"
```
## Best Practices
- 3-2-1 Rule: 3 copies, 2 media types, 1 offsite
- Regular recovery testing
- Encrypt backups at rest
- Monitor backup success
- Document recovery procedures
+79
View File
@@ -0,0 +1,79 @@
---
name: mongodb
description: Administer MongoDB databases. Configure replica sets, sharding, and backups. Use when managing MongoDB deployments.
license: MIT
metadata:
author: devops-skills
version: "1.0"
---
# MongoDB
Administer MongoDB NoSQL databases.
## Installation & Setup
```bash
# Install
apt install mongodb-org
# Start service
systemctl start mongod
# Connect
mongosh
# Create user
use admin
db.createUser({
user: "admin",
pwd: "secret",
roles: ["root"]
})
```
## Basic Operations
```javascript
// Create database and collection
use mydb
db.users.insertOne({ name: "John", email: "john@example.com" })
// Query
db.users.find({ name: "John" })
db.users.find().sort({ name: 1 }).limit(10)
// Index
db.users.createIndex({ email: 1 }, { unique: true })
```
## Replica Set
```javascript
// Initialize replica set
rs.initiate({
_id: "myReplicaSet",
members: [
{ _id: 0, host: "mongo1:27017" },
{ _id: 1, host: "mongo2:27017" },
{ _id: 2, host: "mongo3:27017" }
]
})
```
## Backup
```bash
# Backup
mongodump --out /backup/
# Restore
mongorestore /backup/
```
## Best Practices
- Use replica sets in production
- Implement proper indexing
- Enable authentication
- Regular backups with mongodump
+78
View File
@@ -0,0 +1,78 @@
---
name: mysql
description: Administer MySQL/MariaDB databases. Configure replication and optimize performance. Use when managing MySQL deployments.
license: MIT
metadata:
author: devops-skills
version: "1.0"
---
# MySQL / MariaDB
Administer MySQL and MariaDB databases.
## Installation & Setup
```bash
# Install
apt install mysql-server
# Secure installation
mysql_secure_installation
# Access
mysql -u root -p
# Create database and user
CREATE DATABASE mydb;
CREATE USER 'myapp'@'%' IDENTIFIED BY 'secret';
GRANT ALL PRIVILEGES ON mydb.* TO 'myapp'@'%';
FLUSH PRIVILEGES;
```
## Configuration
```bash
# /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
innodb_buffer_pool_size = 1G
max_connections = 200
slow_query_log = 1
long_query_time = 2
```
## Backup & Restore
```bash
# Backup
mysqldump -u root -p mydb > backup.sql
mysqldump -u root -p --all-databases > full_backup.sql
# Restore
mysql -u root -p mydb < backup.sql
```
## Replication
```bash
# Primary
[mysqld]
server-id = 1
log_bin = mysql-bin
# Replica
CHANGE MASTER TO
MASTER_HOST='primary',
MASTER_USER='replicator',
MASTER_PASSWORD='secret',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;
START SLAVE;
```
## Best Practices
- Enable slow query logging
- Use InnoDB storage engine
- Regular backups with mysqldump
- Monitor with SHOW PROCESSLIST
@@ -0,0 +1,68 @@
---
name: postgresql
description: Administer PostgreSQL databases. Configure replication, backups, and performance tuning. Use when managing PostgreSQL deployments.
license: MIT
metadata:
author: devops-skills
version: "1.0"
---
# PostgreSQL
Administer and optimize PostgreSQL databases.
## Installation & Setup
```bash
# Install
apt install postgresql postgresql-contrib
# Access
sudo -u postgres psql
# Create database and user
CREATE USER myapp WITH PASSWORD 'secret';
CREATE DATABASE mydb OWNER myapp;
GRANT ALL PRIVILEGES ON DATABASE mydb TO myapp;
```
## Configuration
```bash
# /etc/postgresql/15/main/postgresql.conf
max_connections = 200
shared_buffers = 256MB
effective_cache_size = 768MB
work_mem = 4MB
maintenance_work_mem = 64MB
```
## Backup & Restore
```bash
# Backup
pg_dump mydb > backup.sql
pg_dump -Fc mydb > backup.dump # Custom format
# Restore
psql mydb < backup.sql
pg_restore -d mydb backup.dump
```
## Replication
```bash
# Primary
ALTER SYSTEM SET wal_level = replica;
CREATE USER replicator REPLICATION LOGIN PASSWORD 'secret';
# Replica
pg_basebackup -h primary -U replicator -D /var/lib/postgresql/15/main -P
```
## Best Practices
- Regular VACUUM and ANALYZE
- Monitor slow queries
- Implement connection pooling (PgBouncer)
- Regular backups with pg_dump or pg_basebackup
+74
View File
@@ -0,0 +1,74 @@
---
name: redis
description: Configure Redis for caching and data storage. Set up clustering, persistence, and Sentinel. Use when implementing Redis caching or queues.
license: MIT
metadata:
author: devops-skills
version: "1.0"
---
# Redis
Configure Redis for caching and data storage.
## Installation & Setup
```bash
# Install
apt install redis-server
# Configuration
# /etc/redis/redis.conf
bind 0.0.0.0
protected-mode yes
requirepass yourpassword
maxmemory 256mb
maxmemory-policy allkeys-lru
```
## Basic Operations
```bash
redis-cli -a yourpassword
# String operations
SET key "value"
GET key
SETEX key 3600 "value" # With TTL
# Hash
HSET user:1 name "John" email "john@example.com"
HGETALL user:1
# List
LPUSH queue "task1"
RPOP queue
```
## Persistence
```bash
# RDB (snapshot)
save 900 1
save 300 10
# AOF (append-only file)
appendonly yes
appendfsync everysec
```
## Sentinel (HA)
```bash
# sentinel.conf
sentinel monitor mymaster 10.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 180000
```
## Best Practices
- Set maxmemory and eviction policy
- Use persistence for critical data
- Implement Sentinel for HA
- Monitor memory usage