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

mysql 备份和还原 mysqldump

因window系统为例
在mysql安装目录中的bin目录下 cmd

备份

备份一个数据库

mysqldump -uroot -h hostname -p 数据库名 > 备份的文件名.sql

备份部分表

mysqldump -uroot -h hostname -p 数据库名 [表 [表2…]] > 备份的文件名.sql ## 多个表 空格隔开,中间没有逗号
在这里插入图片描述

备份单表的部分数据

mysqldump -uroot -h host -p 数据库名 表 --where=”col < 10“ > 备份文件名.sql

排除某些表的备份

mysqldump -uroot -h host -p 数据库名 --ignore-table=数据库名.表1 > 备份文件名.sql

备份全部数据库 全量备份

mysqldump -uroot -h hostname -p --all-databases > 备份文件名.sql

mysqldump -uroot -h hostname -p -A > 备份文件名.sql

备份部分数据库

多个数据库用空格隔开
mysqldump -uroot -h hostname -p --databases [数据库名称1 [数据库名称2.。。]] > 备份文件名称.sql

mysqldump -uroot -h hostname -p -B [数据库名称1 [数据库名称2.。。]] > 备份文件名称.sql

只备份结构 VS 只备份数据

只备份结构
mysqldump -uroot -h host -p 数据库名称 --no-data > 备份文件名.sql

只备份数据
mysqldump -uroot -h host -p 数据库名称 --no-create-info > 备份文件名.sql

mysqldump -uroot -h host -p 数据库名称 -t > 备份文件名.sql

备份中包含存储过程、函数、事件

mysqldump 备份默认是不包含存储过程、自定义函数及事件的。
–routines 或 -R 选项 来备份存储过程及函数
–events 或 -E 选项 来备份事件
查看当前库有哪些存储过程或函数

select specific_name, routine_type,routine_schema
from information_schma.routines
where routines_schema=‘数据库名’

mysqldump 帮助

mysqldump --help

恢复

在mysql安装目录中的bin目录下 cmd

mysql -uroot -p [dbname] < backup.sql
dbname:参数表示数据库名称,是可选参数,若指定:表示还原该数据库下的表(对应的数据库要存在)。
不指定:表示还原文件中所有的数据库。此时sql文件中包含create database语句,不需要mysql服务器中已经存在这些数据库。

单库备份中恢复单库

如果备份文件中包含了创建数据库的语句,则恢复的时候不需要指定数据库名称
mysql -uroot -p <zen.sql
否则 需要指定数据库名称
mysql -uroot -p 数据库名 < zen.sql

全量备份恢复

全量备份就是
在这里插入图片描述

mysql -uroot -p < backup_all.sql
执行完后,mysql数据库中已经恢复了backup_all.sql文件中的所有数据库

从全量备份中恢复 单库

如我们只想恢复某一个库,但我们有的是整个实例的备份(全量备份),这个时候我们可以从全量备份中分离出单个库的备份

sed -n ‘/^-- current database: ‘要分离出来的数据库名’ /,/^-- current database:’/p’ backup_all.sql > 分离出来的数据库文件名.sql

在根据上面分离出来的 数据库文件 恢复 当个库
mysql -uroot -p 【数据库名】 < zen.sql ## 分离出来的如果存在create database 则 数据库名可省略,否则要先创建数据库,再恢复。

从单库备份中恢复单表

从指定数据库分离 指定表的结构
zen.sql整库的备份,但是由于account表误操作了,那么可以用单表恢复的方式来恢复
cat zen.sql | sed -e ‘/./{H;$!d;}’ -e ‘x;/create table account/!d;q’ > account_structure.sql

cat zen.sql | grep --ignore-case ‘insert into account’ > account_data.sql

用linux shell终端,或window是中cmd 分离出创建表的语句以及插入表的语句后,再依次超出即可完成恢复
进入mysql。
use zen; #切换account对应的数据库
source account_structure.sql;
source account_data.sql;

http://www.lryc.cn/news/171999.html

相关文章:

  • ELK日志分析系统+ELFK(Filebeat)
  • ULID 在 Java 中的应用: 使用 `getMonotonicUlid` 生成唯一标识符
  • 实用的嵌入式编码技巧:第三部分
  • 8个很棒的Vue开发技巧
  • Python - 小玩意 - 文字转语音
  • 聚焦数据库和新兴硬件的技术合力 中科驭数受邀分享基于DPU的数据库异构加速方案
  • 哨兵模式(sentinel)
  • b站老王 自动驾驶决策规划学习记录(十二)
  • 服务器租用机房机房的类型应该如何选择
  • 大数据运维一些常见批量操作命令
  • 测试人职场生存必须避开的5个陷阱
  • 力扣538 补9.18
  • [Linux入门]---Linux编译器gcc/g++使用
  • [Git入门]---gitee注册及代码提交
  • 企业架构LNMP学习笔记46
  • ELFK之zookeeper+kafka
  • ECharts
  • jsoup框架技术文档--java爬虫--架构体系
  • OpenStack创建云主机并连接CRT
  • linux-sed命令
  • Elasticsearch:什么是向量和向量存储数据库,我们为什么关心?
  • JOSEF约瑟 剩余电流继电器PFR-5 PFE-W-20 国产化改造ZLR-G81 ZCT-45
  • 分别用Python和Go实现对文件夹及其子文件夹里的文件进行批量重命名
  • redis深度历险 千帆竞发 —— 分布式锁
  • C#根据中文首字母排序
  • 仪表基础知识培训
  • 无涯教程-JavaScript - PI函数
  • 前端防抖和节流
  • [pai-diffusion]pai的easynlp的clip模型训练
  • 期权如何交易?期权如何做模拟交易?