Relational Database Systems Concepts, Design, SQL, PostgreSQL, MySQL, and Applications

Appendices

Appendix J. Database Administration Commands

The administration command file: Chapter 21's (and 14's, 20's, 21's) operational commands organized by task, both platforms side by side. See Appendix B and C for each platform's fuller references.

Server and service

TaskPostgreSQLMySQL
Statussystemctl status postgresqlsystemctl status mysql / mysqld
Start / stop / restartsystemctl start/stop/restart postgresqlsame, mysql
Reload configSELECT pg_reload_conf(); or pg_ctl reloadSET PERSIST survives; some need restart
VersionSELECT version();SELECT VERSION(), @@version_comment;
Uptime / activitySELECT * FROM pg_stat_activity;SHOW PROCESSLIST; / sys.session_view

Users, roles, privileges (see Chapter 20)

-- PostgreSQL
CREATE ROLE app LOGIN PASSWORD '...';
GRANT SELECT, INSERT ON enrollment TO app;
GRANT EXECUTE ON FUNCTION enroll_student TO app;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO report;
\du                          -- inventory

-- MySQL
CREATE USER 'app'@'host' IDENTIFIED BY '...';
GRANT SELECT, INSERT ON university.enrollment TO 'app'@'host';
SHOW GRANTS FOR 'app'@'host';
ALTER USER 'app'@'host' PASSWORD EXPIRE INTERVAL 90 DAY;

Backup and restore (see Chapter 21)

TaskPostgreSQLMySQL
Logical dumppg_dump -Fc db > f.dumpmysqldump --single-transaction --routines --triggers db > f.sql
Parallel dumppg_dump -Fd -j 4 -f dir/mysqlsh util.dumpInstance
Restorepg_restore -d db -j 4 f.dumpmysql db < f.sql
Globalspg_dumpall --globals-only(roles are in mysql schema dumps)
Physical basepg_basebackup -D dir/clone plugin / XtraBackup
PITR tapeWAL archive + recovery.signalbinary log + mysqlbinlog replay

Maintenance

TaskPostgreSQLMySQL
StatisticsANALYZE [table];ANALYZE TABLE t;
Reclaim / rebuildVACUUM / VACUUM FULL [table]purge (auto) / OPTIMIZE TABLE t
Rebuild indexesREINDEX TABLE t;(OPTIMIZE / force rebuild)
Autopilotautovacuum (tune thresholds)purge threads (automatic)
Table check(no direct analog; use pgcheck-class tooling)CHECK TABLE t;

Monitoring (see Sections 21.9 and 19.11)

WhatPostgreSQLMySQL
Running queriespg_stat_activitySHOW PROCESSLIST / sys.processlist
Top statementspg_stat_statementssys.statements_with_runtimes_in_95th_percentile
Cache hit ratiopg_stat_database (blks_*)SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read%'
Locks / deadlockspg_locks, pg_stat_database.deadlocksperformance_schema.data_locks, SHOW ENGINE INNODB STATUS
Table bloat / churnpg_stat_user_tables.n_dead_tupinformation_schema.INNODB metrics
Sizespg_database_size(), pg_total_relation_size()information_schema.TABLES sums
Replicationpg_stat_replication (lag)SHOW REPLICA STATUS

Configuration quick reference

SettingPostgreSQLMySQL
Memory cacheshared_buffers (~25% RAM), work_meminnodb_buffer_pool_size (~50–70% dedicated)
Connectionsmax_connectionsmax_connections
Slow query loglog_min_duration_statementslow_query_log, long_query_time
Logginglogging_collector, log_destinationerror / general / slow logs
Auth policypg_hba.conf methodsuser@host + plugin
TLS requiredhostssl linesrequire_secure_transport

The routine calendar (Chapter 21.11)

Daily: backup verified (restore-to-scratch + counts), log scan, disk/lag alerts. Weekly: bloat review, top-query review, capacity trend. Monthly: restore drill, security checklist (Chapter 20), patch review. Quarterly: PITR/restore rehearsal, configuration review. Each item is a script with a schedule — never a memory.