[MySQL学习笔记] 3.mysqldump命令详解 Part 2 -备份全库
往期专题请查看www.zhaibibei.cn 这是一个坚持Oracle,Python,MySQL原创内容的公众号
前情提要
[MySQL学习笔记]2. mysqldump命令详解 Part 1
实验环境:
- MySQL 5.7.25
- Redhat 6.10
前面我们建立了数据库并建立相关的对象
- 数据库
- 表
- 存储过程
- 函数
- 触发器
- 事件
今天的内容为备份全库
1. 备份语句
1.1 备份所有数据库
我们使用如下语句来备份所有数据库
mysqldump -h127.0.0.1 -usystem -p123456 --all-databases >/tmp/all.sql
或者如下命令
mysqldump -h127.0.0.1 -usystem -p123456 -A >/tmp/all.sql
命令后警告信息后面章节介绍
1.2 备份独立数据库
下面语句备份单独test数据库 ,多个数据库用空格隔开即可
mysqldump -h127.0.0.1 -usystem -p123456 --databases test >/tmp/test.sql
2. 备份内容解释
下面对备份出来的语句进行解释
2.1 版本信息
第一行是mysqldump的版本
这里为10.13的版本
第二三行显示主机名为127.0.0.1
数据库版本为5.7.25
接下来为一些系统变量的设置
注意这里/* !12345 */ 不是注释 (/* */ 是MySQL的多行注释符)
它表示如果MySQL的版本大于4.1.1 则执行相应的语句
2.2 GTID信息
-- 是MySQL的注释符号
接下来是清除掉的GTID的设置
如果在备份时未使用 --set-gtid-purged=off 参数 则会出现这行
这里建议加入该参数,否则在还原到其他服务器时会出错
GTID是全局事务唯一标识符,在一个MySQL环境中保持唯一,主要用于复制
GTID_PURGED的数字代表该GTID的事务及以前的事务不包含在所有的BINLOG中,这意味着无法重现该事务
关于GTID后续解释
2.3 数据库和表的信息
接下来是备份数据库的语句
Current Database :mysql 代表当前进行的是mysql数据库
后面跟的是建数据库的语句(CREATE DATABASE mysql)
如果不存在的话(IF NOT EXISTS),如果存在也不会删除
之后使用该数据库(use mysql)
接下来是表结构相关的(Table structure for table)
如果已经有该表则先删除(DROP TABLE IF EXISTS)
之后是建立mysql数据库下表的表结构的语句(Create TABLE )
2.4 表数据的备份
接下来是表数据的备份(Dumping data for table)
首先锁定表不让其他进程写(LOCK TABLE WRITE)
然后使MySQL停止更新非唯一索引(ALTER TABLE DISABLE KEYS),这样能加快插入速度
之后将数据转换成insert语句(INSERT INTO)
之后重新建立丢失的索引(ALTER TABLE ENABLE KEYS)
最后释放锁(UNLOCK TABLES)
直到该数据库所有的表导出完毕后进行下一个数据库
2.5 结束备份
最后是备份的完成日期
3.总结
所以全库备份出来的语句主要包含如下内容
- 建立数据库(如果不存在)
- 使用数据库
- 删除表(如果存在)
- 建表
- 锁表
- 禁用非唯一索引
- 插入数据
- 启用非唯一索引(重建索引)
- 释放锁
另外:可能注意到了上面的语句中只有数据库和表的信息
没有存储过程 函数 触发器等的信息
所以默认这些是不导出的
今天的内容就到这里,欢迎查看
可点击阅读原文获得更好的阅读体验,推荐在PC端阅读
也可在公众号内回复 mysqldump 搜索相关内容
或直接打开个人网页搜索
http://www.zhaibibei.cn
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 计算输入的一句英文语句中单词数
- 《剑指offer》第21天:合并两个有序链表
- 单细胞转录组基础分析六:伪时间分析
- 使用PaintCode便捷地实现动画效果
- 用墨卡托和GPS坐标计算距离时误差测试
- 单细胞转录组基础分析五:细胞再聚类
- Semaphore回顾
- iOS13 关闭黑暗模式+状态栏显示问题解决方法
- 0807-6.2.0-CDSW中Session列表和team分析
- 单细胞转录组基础分析八:可视化工具总结
- 单细胞转录组基础分析七:差异基因富集分析
- 定位权限请求时易犯的错误小结
- NSOperationQueue队列中操作依赖相关思考
- 单细胞转录组高级分析一:多样本合并与批次校正
- 10元最多可喝多少瓶啤酒?(不可借酒+可借酒,swift语言实现)