MySQL数据库管理以及备份
1)关系型数据库
重点:强调数据与数据之间的关系
mysql(免费,开源。8.0以后的版本不开源,不免费。目前主流的使用版本5.7) sqlserver oracle db2
- mysql
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。
- SQL Server
微软开发的关系型数据库管理系统,深度集成 Windows 生态,支持 Transact-SQL 语言,具备图形化管理工具(SSMS)和强大的企业级功能(如分布式事务、商业智能 BI)。特点:兼容性强(与.NET 框架无缝对接)、高可用性( Always On 集群)、内置数据加密与审计功能,适合企业级 ERP、CRM 系统及微软技术栈项目。但主要运行于 Windows 平台,开源生态较弱,授权成本较高。
- Oracle
甲骨文公司的旗舰关系型数据库,以稳定性、安全性和高性能著称,支持大型跨国企业核心业务系统(如银行交易、电信计费)。核心优势:完整支持 ACID 事务、RAC 集群(实时应用集群)实现高可用、分区表处理海量数据、强大的 PL/SQL 编程能力。但架构复杂(需专业 DBA 运维)、授权费用高昂,主要应用于金融、政府等对可靠性要求极高的场景。
- DB2
IBM 研发的企业级关系型数据库,主打安全性、可扩展性和大数据处理能力,支持多平台(Linux/UNIX/Windows)。特色功能:pureScale 集群技术(线性扩展性能)、BLU 加速(内存列存储)、高级压缩与加密算法,适合数据仓库、OLAP 分析及合规性要求高的行业(如医疗、保险)。与 IBM 生态(如 WebSphere、Cognos)深度整合,但市场份额低于 Oracle 和 SQL Server,学习成本较高。
2)非关系型数据库
memcache redis hbase
- Memcache
Memcache 是一款开源的高性能分布式内存缓存系统,诞生于 2003 年。它通过将数据存储在内存中,大幅减少对后端数据库的访问压力,从而提升 Web 应用响应速度。核心特点:纯内存存储(读写速度极快)、支持简单键值对、分布式集群(需客户端分片)、自动淘汰过期数据。但不支持持久化,断电后数据丢失,适合缓存高频访问的简单数据(如会话、热门商品信息),减轻数据库负担。
- Redis
Redis(Remote Dictionary Server)是 2009 年推出的开源内存数据库,支持丰富的数据结构(字符串、哈希、列表、集合、有序集合等),被誉为 “数据结构服务器”。它的数据优先存储于内存,同时支持 RDB 快照和 AOF 日志持久化,保障数据安全。具备原子操作、主从复制、哨兵和集群等高可用特性,广泛用于缓存、排行榜、计数器、消息队列等场景,功能全面且性能卓越。
- HBase
HBase 是 Apache 开源的分布式列式数据库,基于 Hadoop 架构(HDFS 存储、ZooKeeper 协调),专为存储海量数据(数十亿行 × 数百万列)并提供实时随机读写而设计。采用列式存储,适合处理稀疏数据;支持自动分片和水平扩展至数千节点;基于 HDFS 实现高可靠性和强一致性。典型场景包括 PB 级日志存储、电商评论实时查询、物联网设备数据处理等,适合海量冷数据的高效存储与访问。
重点:强调数据的存储
1.数据库管理mysqladmin命令
mysqladmin
是 MySQL 官方提供的管理工具,通过 MySQL 客户端协议 连接服务器,可执行管理操作。
1)命令格式
mysqladmin [选项] [命令]
2)选项说明
-h, --host=主机名
:指定 MySQL 服务器地址(默认 localhost)。-u, --user=用户名
:连接的用户名。-p, --password[=密码]
:连接密码(建议用-p
后交互式输入,避免明文显示)。-P, --port=端口
:指定服务器端口(默认 3306)。
3)用法示例
查看服务器状态mysqladmin -uroot -p status
mysqladmin -uroot -p status
[root@slavedb ~]# mysqladmin -uroot -pAa123456= status
Uptime: 13667 Threads: 2 Questions: 1467 Slow queries: 0 Opens: 295 Flush tables: 1 Open tables: 177 Queries per second avg: 0.107
关闭MySQL服务器mysqladmin -uroot -p shutdown
mysqladmin -uroot -p shutdown
[root@slavedb ~]# mysqladmin -uroot -pAa123456= shutdown
[root@slavedb ~]# mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[root@slavedb ~]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Sun 2025-06-22 20:09:55 CST; 2min 28s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 10969 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 10951 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 10972 (code=exited, status=0/SUCCESS)
Jun 22 16:20:33 slavedb systemd[1]: Starting MySQL Server...
Jun 22 16:20:33 slavedb systemd[1]: Started MySQL Server.
重新加载权限表mysqladmin -uroot -p reload
#无需重启服务器,修改权限后常用
mysqladmin -uroot -p reload
创建数据库mysqladmin -uroot -p create woniu
mysqladmin -uroot -p create woniu
删除数据库
mysqladmin -uroot -p drop woniu
[root@slavedb ~]# mysqladmin -uroot -p drop woniu
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Do you really want to drop the 'woniu' database [y/N] y
Database "woniu" dropped
修改用户密码mysqladmin -uroot -p password "Aa654321="
mysqladmin -uroot -p password "Aa654321="
检查服务器是否存活mysqladmin -uroot -p ping
mysqladmin -uroot -p ping
[root@slavedb ~]# mysqladmin -uroot -pAa654321= ping
mysqld is alive
查看MySQL版本信息mysqladmin -uroot -p version
mysqladmin -uroot -p version
[root@slavedb ~]# mysqladmin -uroot -p version
Enter password:
mysqladmin Ver 8.42 Distrib 5.7.44, for Linux on x86_64
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 5.7.44-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 9 min 15 sec
Threads: 2 Questions: 29 Slow queries: 0 Opens: 119 Flush tables: 1 Open tables: 112 Queries per second avg: 0.052
2.mysql -- 数据库连接
MySQL 命令行客户端(mysql
)是管理和操作 MySQL 数据库的核心工具,支持交互式执行 SQL 语句、批量处理脚本等功能。
1)命令格式
mysql [选项] [数据库名]
2)选项说明
选项 | 描述 | 示例 |
---|---|---|
-h, --host=主机 |
指定服务器地址(默认 localhost) | mysql -h 192.168.1.100 |
-u, --user=用户 |
指定用户名 | mysql -u root |
-p, --password |
指定密码(交互式输入) | mysql -p |
-P, --port=端口 |
指定端口(默认 3306) | mysql -P 3307 |
--ssl-ca=证书路径 |
使用 SSL 加密连接 | mysql --ssl-ca=ca.pem |
--defaults-file |
指定配置文件 | mysql --defaults-file=~/.my.cnf |
3)用法示例
本地连接mysql -uroot -p
mysql -uroot -p
远程连接mysql -h
mysql -h 服务器地址 -u用户名 -p密码
- 需要授权远程登录
授权
creatae user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%';
flush privileges;
# 客户端远程连接数据库
mysql -h 192.168.200.166 -uhaha -p
3.mysqldunmp数据库备份
- mysqldump 是 MySQL 自带的备份工具。可以保证数据的一致性和服务的可用性
- 它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的 insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原
MySQLdump 使用 MySQL 客户端协议(MySQL Client/Server Protocol)连接到数据库服务器。这是一种基于 TCP/IP 的二进制协议,用于客户端(如 mysql 命令行、MySQL Workbench、mysqldump)与 MySQL 服务器之间的通信。默认通过 3306 端口通信,数据以二进制格式传输,相比文本协议更高效,支持加密(如 SSL/TLS)。
1)命令格式
mysqldump [选项] 数据库名 [表名] > 脚本名
mysqldump [选项] --数据库名 [选项 表名] > 脚本名
mysqldump [选项] --all-databases [选项] > 脚本名
2)选项说明
参数名 | 缩写 | 含义 | |
---|---|---|---|
—host | -h | 服务器IP地址 | |
—port | -P | 服务器端口号 | |
—user | -u | MySQL 用户名 | |
—pasword | -p | MySQL 密码 | |
—databases | -B | 指定要备份的数据库 | |
—all-databases | -A | 备份mysql服务器上的所有数据库 | |
—compact | 压缩模式,产生更少的输出 | ||
—comments | 添加注释信息 | ||
—complete-insert | 输出完成的插入语句 | ||
—lock-tables | 备份前,锁定所有数据库表 | ||
—no-create-db/—no-create-info | 禁止生成创建数据库语句 | ||
—force | 当出现错误时仍然继续备份操作 | ||
—default-character-set | 指定默认字符集 | ||
—add-locks | 备份数据库表时锁定数据库表 | ||
-single-transaction | 保证数据的一致性和服务的可用性 | ||
—master-data=1\ | 2 | 通常等于1,记录binlog日志位置与文件名,追加至备份文件中 | |
—flush-logs | -F | 备份之前刷新日志 | |
—events | -E | 备份事件调度器代码 | |
—triggers | -T | 备份触发器 | |
—routines | -R | 备份存储过程和存储函数 |
备份所有数据库
mysqldump --all-databases -uroot -p > all.db
还原数据库:
mysql -uroot -p < all.db
备份单个数据库或数据表
- 需要手动创建数据库
# 备份单个数据库
mysqldump -uroot -p cloud2 > cloud2.db
# 需要手动创建数据库
mysqladmin -uroot -p create cloud2
# 还原数据库
mysql -uroot -p cloud2 < clou2.db
# 备份数据表
mysqldump -uroot -p cloud2 students > students.db
# 需要手动创建数据库
mysqladmin -uroot -p create cloud2
# 还原数据表
mysql -uroot -p cloud2 < clou2.db
- 不需要手动创建数据库 –databases
mysqldump -uroot -p --databases cloud2 > cloud2.db
# 不需要手动创建数据库,直接还原
mysql -uroot -p < clou2.db
# 备份多个数据库
mysqldump -uroot -p --databases cloud2 woniu > cloud3.db
# 还原数据库
mysql -uroot -p < clou2.db