数据库和中间件是跑业务的核心,初级运维至少要会:建库授权、看慢查询、备份恢复、看 Redis 内存和持久化。
一、MySQL 建库与用户授权
mysql -u root -p
-- 建库(utf8mb4,支持 emoji)
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4;
-- 建用户
CREATE USER 'app'@'%' IDENTIFIED BY '强密码';
-- 授权:只给 mydb 的权限
GRANT ALL PRIVILEGES ON mydb.* TO 'app'@'%';
-- 生效
FLUSH PRIVILEGES;
'app'@'%'的%表示任意来源;生产建议收紧到具体 IP 或内网网段,别轻易用%。
常用查看:
SHOW DATABASES;
SHOW TABLES;
SELECT user, host FROM mysql.user;
二、慢查询
先开启慢查询日志(/etc/mysql/mysql.conf.d/mysqld.cnf):
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1 # 超过 1 秒记日志
sudo systemctl restart mysql
sudo tail -f /var/log/mysql/slow.log # 实时看
sudo mysqldumpslow -s t -t 10 /var/log/mysql/slow.log # 汇总最慢的 10 条
看到慢 SQL 后,检查是否缺索引(EXPLAIN 分析)、或 SQL 写得太差。
三、MySQL 备份与恢复
# 备份单库
mysqldump -u root -p mydb > mydb.sql
# 备份所有库
mysqldump -u root -p --all-databases --single-transaction > all.sql
# 恢复
mysql -u root -p mydb < mydb.sql
--single-transaction 让 InnoDB 备份时不锁表,生产备份推荐加。
四、Redis 持久化:RDB 与 AOF
Redis 数据在内存里,重启会丢,靠两种机制持久化:
| 机制 | 原理 | 特点 |
|---|---|---|
| RDB | 定时快照存到 dump.rdb | 恢复快、可能丢最后几分钟 |
| AOF | 记录每条写命令 | 更完整、文件更大 |
配置(/etc/redis/redis.conf):
save 900 1 # RDB:900 秒内 1 次写就快照
appendonly yes # 开 AOF
appendfsync everysec # 每秒刷盘,性能与安全平衡
sudo systemctl restart redis
redis-cli config get appendonly
生产建议 RDB + AOF 都开:RDB 用于快速恢复,AOF 保证数据完整。
五、Redis 常用查看
redis-cli
> INFO # 整体信息(内存、连接、持久化)
> INFO memory
> MEMORY STATS
> DBSIZE # key 数量
> KEYS pattern # 慎用,大库会卡
# 看占用内存最大的 key(用 redis-cli --bigkeys)
redis-cli --bigkeys
小结
| 数据库 | 必会操作 |
|---|---|
| MySQL | 建库建用户授权、慢查询、mysqldump 备份恢复 |
| Redis | RDB/AOF 配置、INFO 看内存、bigkeys 找大 key |
数据库操作务必先备份再动手,尤其是 DROP、DELETE、FLUSHALL 这类不可逆命令。