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

MySQL 多数据库备份与恢复,包括查询,函数,SP

一、备份语句:

mysqldump 可以用来导出单个数据库、多个数据库,甚至所有数据库的数据。以下是导出多个数据库到指定文件位置的语法和具体案例。

基本语法

mysqldump -u [username] -p[password] --databases [db1] [db2] ... > [file_path]

  • -u: 数据库用户名
  • -p: 数据库密码,紧跟在 -p 后面
  • --databases: 指定要导出的数据库名称,可以跟随多个数据库名称
  • file_path: 导出文件的路径及名称

实际案例

假设你有两个数据库,分别是 database1database2,并希望将其导出到路径 /backup/multiple_databases.sql 中。

mysqldump -u root -p --databases database1 database2 > /backup/multiple_databases.sql 

常用选项

可以结合一些选项来定制导出内容:

  • --add-drop-database: 导出时添加 DROP DATABASE 语句
  • --add-drop-table: 导出时添加 DROP TABLE 语句
  • --skip-lock-tables: 跳过锁表,适用于只读操作,不锁定表
  • --no-data: 仅导出表结构,不导出数据

具体示例

假设要将多个数据库导出到 /backup/multiple_databases.sql,并且包含删除表的语句:

mysqldump -u root -p --databases database1 database2 --add-drop-table --skip-lock-tables > /backup/multiple_databases.sql 

导出多个数据库的多种方案

  1. 单文件导出多个数据库

    将多个数据库导出到一个 .sql 文件,使用 --databases 参数:

    mysqldump -u root -p --databases db1 db2 db3 > /backup/multi_db_backup.sql 
  2. 单独文件导出每个数据库

    对每个数据库进行单独导出:

    mysqldump -u root -p db1 > /backup/db1_backup.sql 
    mysqldump -u root -p db2 > /backup/db2_backup.sql 
    mysqldump -u root -p db3 > /backup/db3_backup.sql 

可以将这些命令写入脚本,自动化执行多数据库的导出。

如果你已经进入了 MySQL Shell(通过 mysql -u root -p 登录进入的那种),先输入 exit 退出 MySQL Shell,然后在命令行中执行上述 mysqldump 命令。

有些数据库备份会缺失内容,通常可能涉及以下原因:

  1. 文件大小限制:某些系统或文件系统可能会对单个文件的大小有限制(例如 FAT32 文件系统的 4GB 限制)。可以尝试将备份文件分割,或者确保备份位置支持大文件存储。

  2. mysqldump 选项设置:默认情况下,mysqldump 只会导出表和数据,不会包含存储过程(SP)、函数、触发器或事件等。

包含存储过程、函数、触发器和事件的备份

为了确保 mysqldump 包含所有这些数据库对象,在命令中添加以下参数:

mysqldump -u root -p --databases db_student ods tmp --routines --triggers --events > /backup/mybackup_db.sql 

这些参数的作用:

  • --routines:包含存储过程和函数。
  • --triggers:包含触发器。
  • --events:包含事件。

这样,备份文件会包含数据库中的所有对象,确保在恢复时不会遗漏。

二、恢复语句:

1,创建db

备份的数据库sql不会帮你创建db,如果要导入备份的sql文件,需要先创建对应db.

2,导入db

有两种方式:

1)cmd不登录的情况:

mysql> source D:\DB\myBackup_db_tmp.sql
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.00 sec)

2)登录的情况:

登陆数据库创建一个库
mysql> create database t1;
语法:# mysql -u root -p1 -D db1  < D:\DB\myBackup_db_tmp.sql
[root@mysql-server ~]# mysql -uroot -p'qf123' -D t1 < D:\DB\myBackup_db_tmp.sql

导入成功后在检查数据,查询,SP,表,视图都有了,如果使用Navicate是不会有SP和函数的。


http://www.kler.cn/a/385077.html

相关文章:

  • 双亲委派模型的破坏
  • C++【string类,模拟实现string类】
  • 图数据库| 2 、大数据的演进和数据库的进阶——从数据到大数据、快数据,再到深数据
  • 如何创建备份设备以简化 SQL Server 备份过程?
  • 丹摩征文活动 | 带你玩转开源模型,一起来部署SD3+ComfyUI文生图模型
  • Redis 组网方式入门
  • 笔记--(5)、acl ACL
  • 哈希表(Hash Table)、跳表(Skip List) 和 有序字典(Ordered Dictionary) 的详细介绍
  • 51c大模型~合集17
  • 当RFID技术遇上消防应急管理,智慧响应来袭!
  • node.js实现批量修改git项目的数据源
  • ffmpeg命令——从wireshark包中的rtp包中分离h264
  • 云原生+AI核心技术&最佳实践
  • 外包干了2年,快要废了。。
  • 【Golang】Golang的Map的底层原理
  • ES文档:文档操作_doc(7.9.2)
  • Webpack性能优化指南:从构建到部署的全方位策略
  • SpringBoot在城镇住房保障系统中的应用案例
  • 构建Java教学新生态:SpringBoot应用实例
  • Pyecharts使用本地文件绘制美国地图
  • 智慧商城项目-VUE2
  • 你需要了解的正则表达式相关知识
  • 前端-计算机网络
  • CSS文本样式与浮动
  • oracle 9i 使用dbms_obfuscation_toolkit加密解密
  • 蓝桥杯-Python组(py的哈希表)