MySQL 进阶知识点(十二)---- 管理
一、 系统数据库
MySQL 安装完成后,会自动创建以下系统数据库,它们存储了 MySQL 的元数据和管理信息。
数据库名称 | 描述 | 主要作用 |
---|---|---|
mysql | 核心系统数据库 | 存储用户账户、权限信息、存储过程、事件、时区等核心管理数据。不要随意修改。 |
information_schema | 信息数据库 | 提供访问数据库元数据(所有其他数据库、表、列、索引、权限等详细信息)的只读视图。是虚拟数据库,基于内存表。 |
performance_schema | 性能数据库 | 用于收集数据库服务器性能数据,监控低级别的运行时执行信息,如内存使用、锁、SQL执行阶段等。 |
sys | 简化性能诊断数据库 | 在 performance_schema 之上构建的一系列视图、函数和存储过程,旨在简化性能分析和故障诊断,以更易读的方式呈现信息。 |
示例用法:
-- 查看所有用户及主机 (mysql数据库)
SELECT user, host FROM mysql.user;-- 查看所有数据库的表信息 (information_schema数据库)
SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_database_name';-- 查看内存使用情况 (sys数据库)
SELECT * FROM sys.memory_global_total;-- 查询最近执行缓慢的SQL (sys数据库)
SELECT * FROM sys.statements_with_sorting
ORDER BY last_seen DESC LIMIT 5;
二、 常用工具
MySQL 提供了一系列命令行工具,用于数据库的管理、备份、维护等操作。
1. mysql (客户端连接工具)
最常用的命令行客户端,用于连接 MySQL 服务器并执行 SQL 语句。
# 基本连接
mysql -u root -p# 指定主机和端口连接
mysql -h 127.0.0.1 -P 3306 -u root -p# 连接并直接执行SQL命令
mysql -u root -p -e "SHOW DATABASES;"# 执行SQL脚本文件
mysql -u root -p database_name < script.sql# 连接时指定默认数据库
mysql -u root -p -D database_name
2. mysqladmin (管理工具)
用于执行管理操作的客户端,如创建数据库、查看服务器状态等。
# 检查服务器是否运行
mysqladmin -u root -p ping# 查看服务器状态和变量
mysqladmin -u root -p status
mysqladmin -u root -p variables# 关闭MySQL服务器
mysqladmin -u root -p shutdown# 创建数据库
mysqladmin -u root -p create new_database# 删除数据库
mysqladmin -u root -p drop database_name# 刷新日志、权限等
mysqladmin -u root -p flush-privileges
mysqladmin -u root -p flush-logs
3. mysqldump (逻辑备份工具)
用于逻辑备份数据库,生成包含 SQL 语句的文本文件。
# 备份单个数据库
mysqldump -u root -p database_name > backup.sql# 备份所有数据库
mysqldump -u root -p --all-databases > all_backup.sql# 只备份数据库结构(无数据)
mysqldump -u root -p -d database_name > structure.sql# 只备份数据(无结构)
mysqldump -u root -p -t database_name > data.sql# 使用事务保证一致性(InnoDB)
mysqldump -u root -p --single-transaction database_name > backup.sql# 压缩备份
mysqldump -u root -p database_name | gzip > backup.sql.gz
4. mysqlimport / LOAD DATA (数据导入工具)
用于将文本文件数据导入到 MySQL 表中。
# 使用mysqlimport导入(对应mysqldump导出格式)
mysqlimport -u root -p database_name data.txt# 在mysql客户端中使用LOAD DATA命令
LOAD DATA LOCAL INFILE '/path/to/data.txt'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
5. mysqlcheck (表维护工具)
用于检查、修复、优化和分析数据库表。
# 检查表是否有错误
mysqlcheck -u root -p database_name# 修复表
mysqlcheck -u root -p --repair database_name# 优化表
mysqlcheck -u root -p --optimize database_name# 分析表(更新索引统计信息)
mysqlcheck -u root -p --analyze database_name# 检查所有数据库
mysqlcheck -u root -p --all-databases
6. mysqlshow (数据库对象查看工具)
快速查看数据库、表、列信息的工具。
# 显示所有数据库
mysqlshow -u root -p# 显示指定数据库的所有表
mysqlshow -u root -p database_name# 显示指定表的结构
mysqlshow -u root -p database_name table_name# 显示表的详细信息(包括列信息)
mysqlshow -u root -p --count database_name table_name
7. myisamchk (MyISAM表维护工具)
专门用于 MyISAM 存储引擎表的检查与修复(需要在服务停止或表锁定时使用)。
# 检查MyISAM表
myisamchk /path/to/table.MYI# 修复MyISAM表
myisamchk -r /path/to/table.MYI# 强制修复(用于严重损坏的情况)
myisamchk --safe-recover /path/to/table.MYI
三、 常用系统变量查询
-- 查看服务器状态
SHOW STATUS LIKE 'Connections%'; -- 查看连接数
SHOW STATUS LIKE 'Uptime%'; -- 查看服务器运行时间-- 查看系统变量
SHOW VARIABLES LIKE 'innodb_buffer_pool_size%'; -- 查看缓冲池大小
SHOW VARIABLES LIKE 'max_connections%'; -- 查看最大连接数-- 查看进程列表
SHOW PROCESSLIST;-- 查看当前锁信息
SHOW ENGINE INNODB STATUS;
小结
工具类别 | 主要工具 | 核心用途 |
---|---|---|
客户端连接 | mysql | 连接服务器、执行SQL |
系统管理 | mysqladmin | 服务器状态管理、关闭、刷新 |
备份恢复 | mysqldump | 逻辑备份、数据导出 |
数据导入 | mysqlimport | 批量数据导入 |
表维护 | mysqlcheck | 检查、修复、优化表 |
信息查看 | mysqlshow | 快速查看数据库对象信息 |
最佳实践建议:
定期使用
mysqldump
进行数据备份使用
mysqlcheck
定期维护表通过
mysqladmin
监控服务器状态利用
sys
和performance_schema
进行性能分析谨慎操作
mysql
系统数据库