UNPKG

major-ai-skills

Version:

Installable agentic skills / AI agent skills (SKILL.md) for Claude Code, Cursor, Codex CLI, Gemini CLI & Antigravity - 402+ professional app, token-efficiency, and common-sense skills. SEO/GEO ready.

111 lines (85 loc) 3.66 kB
--- name: mysql description: "Design and administer MySQL or MariaDB schemas, indexes, grants, backups, and migrations; investigate replication basics." category: devops risk: safe source: self source_type: self date_added: "2026-08-26" tags: ["mysql", "mariadb", "sql", "database", "replication", "migrations"] tools: ["claude", "cursor", "gemini", "codex"] --- # MySQL / MariaDB Operations AI Skill Guide ## Overview MySQL (and MariaDB) store relational data with InnoDB as the default OLTP engine. Agents help with schema design, indexing, backup/restore, user grants, and cautious DDL. Production changes should be online-friendly: avoid long table locks, always take backups before destructive SQL, and never run `DELETE`/`UPDATE` without a `WHERE` unless explicitly requested with confirmation. ``` Clients / app pools | v MySQL primary (InnoDB) | +--> replicas (async/semi-sync) +--> backups (mysqldump / XTBackup / snapshots) ``` ## When to use - Writing or reviewing schema migrations and indexes - Diagnosing slow queries and missing indexes - Creating users with least-privilege grants - Dumping/restoring databases in lower environments ## Operational directives 1. Prefer InnoDB; use explicit primary keys on every table. 2. Take a backup or confirm PITR before destructive DDL/DML. 3. Add indexes concurrent to traffic when tools allow; estimate table size first. 4. Use least-privilege users per app (`SELECT/INSERT/UPDATE` only as needed). 5. Never print production passwords; prefer socket auth or secret managers. ## Concrete examples ### Schema + index ```sql CREATE TABLE orders ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, customer_id BIGINT UNSIGNED NOT NULL, status VARCHAR(32) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_orders_customer_created (customer_id, created_at), KEY idx_orders_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` ### Grants ```sql CREATE USER 'api'@'%' IDENTIFIED BY RANDOM PASSWORD; GRANT SELECT, INSERT, UPDATE ON app.orders TO 'api'@'%'; FLUSH PRIVILEGES; ``` ### Dump / restore ```bash mysqldump --single-transaction --routines --triggers -u root -p app > app.sql mysql -u root -p app < app.sql ``` ### Slow query clues ```sql SHOW CREATE TABLE orders\G EXPLAIN ANALYZE SELECT * FROM orders WHERE customer_id = 42 ORDER BY created_at DESC LIMIT 20; SHOW INDEX FROM orders; ``` ## Operations matrix | Task | Safer approach | | :--- | :--- | | Add nullable column | Simple ALTER usually OK; still test on copy | | Add index on large table | Online DDL / pt-online-schema-change | | Delete old rows | Batched deletes with sleep; avoid one huge txn | | Change column type | May rebuild table - schedule maintenance | ## Best practices 1. `utf8mb4` + explicit collations; avoid legacy `utf8` (3-byte) surprises. 2. Monitor replication lag before failing over. 3. Keep migrations idempotent and forward-only in app deploy pipelines. 4. Use connection pooling; set sensible `max_connections` and timeouts. ## Limitations - EXPLAIN plans vary by version/statistics - validate on production-like data. - Group Replication / InnoDB Cluster topologies need specialized runbooks. - Agents must not invent restore success without checksum or smoke tests. ## Related skills - `sqlite` - embedded alternative for local/dev - `vault` - dynamic DB credentials - `docker` - local MySQL via Compose - `opentelemetry` - DB client spans and pool metrics