mysql
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMySQL 数据库管理
MySQL 数据库管理
概述
概述
MySQL/MariaDB 数据库的日常管理、备份恢复、性能调优等运维技能。
MySQL/MariaDB 数据库的日常管理、备份恢复、性能调优等运维技能。
连接管理
连接管理
bash
undefinedbash
undefined本地连接
本地连接
mysql -u root -p
mysql -u root -p
远程连接
远程连接
mysql -h hostname -P 3306 -u user -p database
mysql -h hostname -P 3306 -u user -p database
执行 SQL 文件
执行 SQL 文件
mysql -u user -p database < script.sql
mysql -u user -p database < script.sql
执行单条命令
执行单条命令
mysql -u user -p -e "SHOW DATABASES;"
undefinedmysql -u user -p -e "SHOW DATABASES;"
undefined用户与权限
用户与权限
sql
-- 查看用户
SELECT user, host FROM mysql.user;
-- 创建用户
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
-- 授权
GRANT ALL PRIVILEGES ON database.* TO 'username'@'%';
GRANT SELECT, INSERT ON database.table TO 'username'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看权限
SHOW GRANTS FOR 'username'@'%';sql
-- 查看用户
SELECT user, host FROM mysql.user;
-- 创建用户
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
-- 授权
GRANT ALL PRIVILEGES ON database.* TO 'username'@'%';
GRANT SELECT, INSERT ON database.table TO 'username'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看权限
SHOW GRANTS FOR 'username'@'%';数据库操作
数据库操作
sql
-- 数据库管理
SHOW DATABASES;
CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
DROP DATABASE dbname;
USE dbname;
-- 表管理
SHOW TABLES;
DESCRIBE tablename;
SHOW CREATE TABLE tablename;sql
-- 数据库管理
SHOW DATABASES;
CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
DROP DATABASE dbname;
USE dbname;
-- 表管理
SHOW TABLES;
DESCRIBE tablename;
SHOW CREATE TABLE tablename;备份与恢复
备份与恢复
mysqldump 备份
mysqldump 备份
bash
undefinedbash
undefined备份单个数据库
备份单个数据库
mysqldump -u root -p database > backup.sql
mysqldump -u root -p database > backup.sql
备份所有数据库
备份所有数据库
mysqldump -u root -p --all-databases > all_backup.sql
mysqldump -u root -p --all-databases > all_backup.sql
备份表结构
备份表结构
mysqldump -u root -p --no-data database > schema.sql
mysqldump -u root -p --no-data database > schema.sql
压缩备份
压缩备份
mysqldump -u root -p database | gzip > backup.sql.gz
undefinedmysqldump -u root -p database | gzip > backup.sql.gz
undefined恢复
恢复
bash
undefinedbash
undefined恢复数据库
恢复数据库
mysql -u root -p database < backup.sql
mysql -u root -p database < backup.sql
从压缩文件恢复
从压缩文件恢复
gunzip < backup.sql.gz | mysql -u root -p database
undefinedgunzip < backup.sql.gz | mysql -u root -p database
undefined性能监控
性能监控
sql
-- 查看进程
SHOW PROCESSLIST;
SHOW FULL PROCESSLIST;
-- 查看状态
SHOW STATUS;
SHOW GLOBAL STATUS LIKE 'Threads%';
SHOW GLOBAL STATUS LIKE 'Connections';
-- 查看变量
SHOW VARIABLES LIKE 'max_connections';
SHOW VARIABLES LIKE '%buffer%';
-- 慢查询
SHOW VARIABLES LIKE 'slow_query%';
SHOW GLOBAL STATUS LIKE 'Slow_queries';sql
-- 查看进程
SHOW PROCESSLIST;
SHOW FULL PROCESSLIST;
-- 查看状态
SHOW STATUS;
SHOW GLOBAL STATUS LIKE 'Threads%';
SHOW GLOBAL STATUS LIKE 'Connections';
-- 查看变量
SHOW VARIABLES LIKE 'max_connections';
SHOW VARIABLES LIKE '%buffer%';
-- 慢查询
SHOW VARIABLES LIKE 'slow_query%';
SHOW GLOBAL STATUS LIKE 'Slow_queries';常见场景
常见场景
场景 1:排查慢查询
场景 1:排查慢查询
sql
-- 开启慢查询日志
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
-- 查看慢查询日志位置
SHOW VARIABLES LIKE 'slow_query_log_file';
-- 分析执行计划
EXPLAIN SELECT * FROM table WHERE condition;
EXPLAIN ANALYZE SELECT * FROM table WHERE condition;sql
-- 开启慢查询日志
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
-- 查看慢查询日志位置
SHOW VARIABLES LIKE 'slow_query_log_file';
-- 分析执行计划
EXPLAIN SELECT * FROM table WHERE condition;
EXPLAIN ANALYZE SELECT * FROM table WHERE condition;场景 2:锁问题排查
场景 2:锁问题排查
sql
-- 查看锁等待
SHOW ENGINE INNODB STATUS\G
-- 查看当前锁
SELECT * FROM information_schema.INNODB_LOCKS;
SELECT * FROM information_schema.INNODB_LOCK_WAITS;
-- 查看事务
SELECT * FROM information_schema.INNODB_TRX;sql
-- 查看锁等待
SHOW ENGINE INNODB STATUS\G
-- 查看当前锁
SELECT * FROM information_schema.INNODB_LOCKS;
SELECT * FROM information_schema.INNODB_LOCK_WAITS;
-- 查看事务
SELECT * FROM information_schema.INNODB_TRX;场景 3:主从复制状态
场景 3:主从复制状态
sql
-- 主库状态
SHOW MASTER STATUS;
-- 从库状态
SHOW SLAVE STATUS\G
-- 关键指标
-- Slave_IO_Running: Yes
-- Slave_SQL_Running: Yes
-- Seconds_Behind_Master: 0sql
-- 主库状态
SHOW MASTER STATUS;
-- 从库状态
SHOW SLAVE STATUS\G
-- 关键指标
-- Slave_IO_Running: Yes
-- Slave_SQL_Running: Yes
-- Seconds_Behind_Master: 0故障排查
故障排查
| 问题 | 排查方法 |
|---|---|
| 连接数过多 | |
| 查询慢 | |
| 锁等待 | |
| 复制延迟 | |
| 磁盘满 | 检查 binlog, 清理旧日志 |
| 问题 | 排查方法 |
|---|---|
| 连接数过多 | |
| 查询慢 | |
| 锁等待 | |
| 复制延迟 | |
| 磁盘满 | 检查 binlog, 清理旧日志 |