当前位置: 首页 > news >正文

DBA 命令全面指南:核心操作、语法与最佳实践

DBA 命令全面指南:核心操作、语法与最佳实践

作为数据库管理员(DBA),掌握关键命令对于数据库的运维管理至关重要。下面我将分类介绍核心 DBA 命令,包括语法、使用场景和注意事项。

一、数据库管理命令

1. 数据库创建与删除

-- 创建数据库
CREATE DATABASE db_name
[CHARACTER SET charset_name]
[COLLATE collation_name];-- 删除数据库
DROP DATABASE [IF EXISTS] db_name;

注意事项

  • 删除操作不可逆,务必提前备份
  • 生产环境使用 IF EXISTS 防止错误
  • 示例:CREATE DATABASE fin_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2. 存储引擎管理

-- 查看支持的存储引擎
SHOW ENGINES;-- 修改表的存储引擎
ALTER TABLE table_name ENGINE = InnoDB;

使用场景

  • InnoDB:事务型应用(默认)
  • MyISAM:只读报表
  • Memory:临时缓存表

二、用户与权限管理

1. 用户账户管理

-- 创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';-- 修改密码
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';-- 删除用户
DROP USER 'username'@'host';

安全规范

  1. 密码策略:长度≥12位,包含大小写+数字+符号
  2. 主机限制:避免使用’%',如'appuser'@'192.168.1.%'
  3. 定期审计:SELECT user, host FROM mysql.user;

2. 权限控制

-- 授予权限
GRANT privilege_type ON db_name.table_name 
TO 'username'@'host'
[WITH GRANT OPTION];-- 撤销权限
REVOKE privilege_type ON db_name.table_name 
FROM 'username'@'host';-- 刷新权限
FLUSH PRIVILEGES;

权限类型

权限描述风险等级
ALL PRIVILEGES所有权限⚠️⚠️⚠️
CREATE USER创建用户⚠️⚠️⚠️
DROP删除对象⚠️⚠️
SELECT读取数据⚠️
INSERT插入数据⚠️

最佳实践

-- 最小权限原则示例
GRANT SELECT, INSERT ON sales_db.* 
TO 'report_user'@'10.0.0.%';

三、备份与恢复命令

1. 逻辑备份 (mysqldump)

# 全库备份
mysqldump -u root -p --single-transaction --routines --triggers \
--all-databases > full_backup.sql# 单库备份
mysqldump -u root -p --single-transaction db_name > db_backup.sql
#例如mysqldump one > e:a.sql -uroot -p --default-character-set=utf8
#导出one这个数据库中的所有的表

参数说明

  • --single-transaction:InnoDB 一致性备份
  • --routines:包含存储过程
  • --triggers:包含触发器
  • --skip-lock-tables:MyISAM 表备份

2. 物理备份 (Percona XtraBackup)

# 全量备份
xtrabackup --backup --user=root --password=*** \
--target-dir=/backups/full/# 增量备份
xtrabackup --backup --user=root --password=*** \
--target-dir=/backups/inc1/ \
--incremental-basedir=/backups/full/

备份策略

  • 全量备份:每周日 2:00
  • 增量备份:每天 2:00
  • 保留策略:全备保留1个月,增量保留7天

3. 时间点恢复 (PITR)

-- 恢复全备
mysql -u root -p < full_backup.sql-- 应用binlog
mysqlbinlog --start-datetime="2023-06-01 12:00:00" \
--stop-datetime="2023-06-01 12:30:00" binlog.000012 | mysql -u root -p

四、性能优化命令

1. 查询分析

-- 查看执行计划
EXPLAIN FORMAT=JSON 
SELECT * FROM orders WHERE customer_id = 100;-- 开启性能分析
SET SESSION profiling = 1;
SELECT /*+ MAX_EXECUTION_TIME(1000) */ ...;
SHOW PROFILES;

2. 索引管理

-- 添加索引
CREATE INDEX idx_email ON users(email);-- 删除冗余索引
SELECT * FROM sys.schema_redundant_indexes;
DROP INDEX idx_name ON table_name;

索引优化原则

  1. WHERE 条件列优先索引
  2. 避免在更新频繁的列建索引
  3. 组合索引遵循最左前缀原则

3. 参数调优

-- 动态调整参数
SET GLOBAL innodb_buffer_pool_size = 8*1024*1024*1024; -- 8GB-- 持久化配置
SET PERSIST innodb_log_file_size = 2*1024*1024*1024; -- 2GB

关键参数

参数推荐值说明
innodb_buffer_pool_size70-80% RAM缓存池大小
innodb_log_file_size1-4GBRedo日志大小
max_connections500-1000最大连接数
thread_cache_size100-200线程缓存

五、监控与诊断命令

1. 实时状态监控

-- InnoDB状态
SHOW ENGINE INNODB STATUS;-- 锁信息
SELECT * FROM performance_schema.data_locks;-- 连接信息
SELECT * FROM sys.session;

2. 性能计数器

-- 查看QPS/TPS
SHOW GLOBAL STATUS LIKE 'Questions'; -- 每秒查询
SHOW GLOBAL STATUS LIKE 'Com_commit'; -- 每秒提交-- 缓冲池命中率
SELECT (1 - (Variable_value / (SELECT Variable_value FROM sys.metrics WHERE Variable_name = 'innodb_buffer_pool_read_requests'))) * 100 AS hit_rate
FROM sys.metrics 
WHERE Variable_name = 'innodb_buffer_pool_reads';

健康指标

  • 缓冲池命中率 > 99%
  • 线程缓存命中率 > 90%
  • 表打开缓存命中率 > 95%

3. 慢查询分析

-- 启用慢查询日志
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1; -- 秒-- 分析慢查询
mysqldumpslow -s t /var/log/mysql/slow.log
pt-query-digest /var/log/mysql/slow.log

六、高可用与复制管理

1. 主从复制配置

-- 主库
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';-- 从库
CHANGE MASTER TOMASTER_HOST='master_host',MASTER_USER='repl',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;
START SLAVE;

2. 复制状态监控

SHOW SLAVE STATUS\G-- 关键指标
SELECT Slave_IO_Running, Slave_SQL_Running,Seconds_Behind_Master
FROM performance_schema.replication_applier_status;

七、维护操作命令

1. 表维护

-- 优化表(碎片整理)
OPTIMIZE TABLE orders;-- 修复表(MyISAM)
REPAIR TABLE corrupted_table;

2. 分区管理

-- 添加分区
ALTER TABLE sales ADD PARTITION (PARTITION p2023 VALUES LESS THAN (2024)
);-- 删除分区
ALTER TABLE sales DROP PARTITION p2020;

八、安全审计命令

1. 启用审计

-- MySQL Enterprise Audit
INSTALL PLUGIN audit_log SONAME 'audit_log.so';
SET GLOBAL audit_log_format = JSON;
SET GLOBAL audit_log_policy = ALL;-- 社区版替代方案
ALTER TABLE access_log 
ADD COLUMN audit_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP;

2. 加密管理

-- 透明数据加密 (TDE)
ALTER INSTANCE ROTATE INNODB MASTER KEY;-- 列级加密
INSERT INTO users (ssn) 
VALUES (AES_ENCRYPT('123-45-6789', 'secret_key'));

九、DBA 命令最佳实践

1. 操作前检查清单

  1. 备份验证SHOW CREATE TABLE table_name
  2. 影响评估EXPLAIN 分析执行计划
  3. 维护窗口:业务低峰期操作
  4. 回滚方案:准备好恢复脚本
  5. 监控告警:设置操作期间特殊监控

2. 危险命令处理

# 禁止直接删除数据
# 使用软删除或备份后操作
UPDATE users SET is_deleted = 1 WHERE user_id = 100;# 避免全表锁
ALTER TABLE orders ADD INDEX idx_customer (customer_id) ALGORITHM=INPLACE;

3. 自动化运维

#!/bin/bash
# 自动备份脚本
BACKUP_DIR="/backups/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
mysqldump --single-transaction -u root -p$PASSWD --all-databases \
| gzip > $BACKUP_DIR/full_backup.sql.gz
find /backups -type d -mtime +30 -exec rm -rf {} \;

十、跨数据库命令对比

功能MySQLPostgreSQLOracleSQL Server
备份工具mysqldumppg_dumpRMANBACKUP DATABASE
性能诊断EXPLAINEXPLAIN ANALYZEEXPLAIN PLANSHOWPLAN_XML
监控视图sys schemapg_stat_activityV$SESSIONsys.dm_os_performance_counters
高可用InnoDB ClusterPatroniRACAlwaysOn
审计Enterprise AuditpgauditUnified AuditSQL Server Audit

总结:DBA 黄金法则

  1. 备份重于一切:3-2-1 备份原则(3份备份、2种介质、1份异地)
  2. 最小权限原则:用户只拥有必要权限
  3. 变更管理:所有生产变更走审批流程
  4. 监控覆盖:核心指标 5 分钟粒度监控
  5. 文档沉淀:维护操作手册和应急预案
  6. 定期演练:每季度进行恢复演练
  7. 安全加固:定期扫描漏洞和配置审计

通过掌握这些核心 DBA 命令和最佳实践,您将能够高效管理数据库系统,保障数据安全和服务可用性。记住:优秀的 DBA 不是避免问题,而是在问题发生前预防,发生时快速解决。

http://www.dtcms.com/a/263730.html

相关文章:

  • 【仿muduo库实现并发服务器】Channel模块
  • 大规模分布式数据库读写分离架构:一致性、可用性与性能的权衡实践
  • opencv使用 GStreamer 硬解码和 CUDA 加速的方案
  • Java ArrayList 扩容机制
  • 【MobaXterm、Vim】使用合集1
  • 结构体实战:用Rust编写矩形面积计算器
  • Electron 沙箱模式深度解析:构建更安全的桌面应用
  • Let‘s Encrypt 免费证书使用
  • 2022/7 N2 jlpt词汇
  • STM32作为主机识别鼠标键盘
  • Vue-16-前端框架Vue之应用基础集中式状态管理pinia(一)
  • SeaTunnel 社区月报(5-6 月):全新功能上线、Bug 大扫除、Merge 之星是谁?
  • 从零到一搭建远程图像生成系统:Stable Diffusion 3.5+内网穿透技术深度实战
  • 密码学(斯坦福)
  • 数字图像处理学习笔记
  • 电机控制的一些笔记
  • CentOS Stream 下 Nginx 403 权限问题解决
  • jQuery UI 安装使用教程
  • 使用Spring Boot 原始的文件下载功能,告别下载风险!
  • Python实例题:基于 Flask 的任务管理系统
  • 数据结构:递归:组合数(Combination formula)
  • vue3中实现高德地图POI搜索(附源码)
  • 主流零信任安全产品深度介绍
  • 网络的相关概念
  • 港美股证券交易系统综合解决方案:技术架构革新与跨境服务升级
  • docker windows 安装mysql:8.0.23
  • Next.js 安装使用教程
  • Zephyr RTOS 信号量 (Semaphore)
  • 基于3D卷积神经网络与多模态信息融合的医学影像肿瘤分类与可视化分析
  • 商品中心—17.缓存与DB一致性的技术文档