MySQL基础维护实操手册:从启停到备份恢复
MySQL 作为主流开源数据库,广泛应用于各类生产环境。本文结合实战,总结了 MySQL 常用维护操作,包括数据库启停、用户管理、对象创建、DML 使用,以及备份与恢复等,附带命令执行结果,便于快速查阅和验证。
一、数据库启停
启动数据库
mysqld_safe --defaults-file=/etc/my.cnf &
或使用服务方式:
service mysqld start
启动成功日志示例:
2023-03-18T14:40:51.085291+08:00 0 [System] [MY-010931] [Server] /mysql/app/bin/mysqld: ready for connections. Version: '8.0.32' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server - GPL.
停止数据库
mysqladmin -uroot -pmysql shutdown
或:
service mysqld stop
二、用户管理
创建用户并授权
create user root@'%' identified by 'mysql';
grant all on *.* to root@'%';
删除用户
drop user root@'%';
查看权限与撤销权限
show grants for root@'%';
输出示例:
+----------------------------------------------------------+
| Grants for root@% |
+----------------------------------------------------------+
| GRANT SELECT ON *.* TO `root`@`%` |
| GRANT SELECT ON `hzmc`.* TO `root`@`%` |
| GRANT SELECT, SELECT (`id`) ON `hzmc`.`lq` TO `root`@`%` |
+----------------------------------------------------------+
撤销部分权限:
revoke select on hzmc.lq from root@'%';
撤销所有权限:
revoke all on *.* from root@'%';
三、创建对象
创建数据库和表
create database test;
use test;create table cons1(id int primary key auto_increment,c1 varchar(40) default 'aaa',id2 bigint unique,id3 bigint not null
);
查看表结构:
desc cons1;
输出示例:
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(20) | NO | PRI | NULL | auto_increment |
| c1 | varchar(40) | YES | | aaa | |
| id2 | bigint(20) | YES | UNI | NULL | |
| id3 | bigint(20) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
查看建表语句:
show create table cons1\G
输出示例:
CREATE TABLE `cons1` (`id` int(20) NOT NULL AUTO_INCREMENT,`c1` varchar(40) DEFAULT 'aaa',`id2` bigint(20) DEFAULT NULL,`id3` bigint(20) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `id2` (`id2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
创建索引
create index cons1_id3 on cons1(id3) using btree;
查看索引信息:
show index from cons1\G
输出片段:
Table: cons1
Non_unique: 1
Key_name: cons1_id3
Column_name: id3
Index_type: BTREE
Visible: YES
四、DML操作
插入数据
insert into cons1 values(1, 'AAAA', 1, 1);
更新数据
update cons1 set c1='BBBB' where id=100;
删除数据
delete from cons1 where id=101;
删除表/库
drop table cons1;
drop database test;
清空表数据
truncate table cons1;
五、备份与恢复
逻辑热备(mysqldump)
全库备份:
mysqldump -uroot -pmysql --single-transaction --master-data=2 -E -R --all-databases > full.sql
备份指定数据库:
mysqldump -uroot -pmysql --databases hzmc test > database.sql
备份指定表:
mysqldump -uroot -pmysql hzmc a b > table.sql
恢复数据:
mysql -uroot -pmysql < full.sql
若启用 GTID,可加
--set-gtid-purged=off
避免恢复时冲突。
物理热备(Xtrabackup)
备份:
xtrabackup --defaults-file=/etc/my.cnf -uroot -pmysql --backup --target-dir=/root/backup
准备备份:
xtrabackup --prepare --target-dir=/root/backup
恢复:
xtrabackup --copy-back --target-dir=/root/backup
恢复前应停止数据库,并清空数据目录。
物理冷备
在数据库关闭状态下,直接复制数据目录:
cp -r /var/lib/mysql /backup/mysql_202506
总结
本文涵盖了 MySQL 数据库的核心维护操作,并附命令和输出结果,方便新手快速上手,也可作为老手的随查手册。欢迎收藏转发,如需更多内容如错误排查、性能优化等专题,敬请关注后续更新。