前面说了MySQL Linux平台和Windows平台的安装
下面开始是MySQL的一些学习笔记
前面我们说了如果构造数据
这节开始说MySQL 的备份
环境为MySQL 5.7.25
在解释命令之前我们先弄清楚数据库中有哪些对象
上一节我们建立了数据库并建立相关的对象
- 数据库
- 表
- 存储过程
- 函数
- 触发器
- 事件
这节讲一些mysqldump的命令
mysqldump导出是MySQL逻辑备份的一种广泛采用的方式
今天的内容为备份全库
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
![25de4e9c50f09a62862ad4ef0d2ae305.png](https://i-blog.csdnimg.cn/blog_migrate/17058ce7863ac3d808f8e110ec3c45f9.png)
命令后警告信息后面章节介绍
1.2 备份独立数据库
下面语句备份单独test数据库 ,多个数据库用空格隔开即可
mysqldump -h127.0.0.1 -usystem -p123456 --databases test >/tmp/test.sql
2. 备份内容解释
下面对备份出来的语句进行解释
2.1 版本信息
![28ac881326966d0c5b4537c720eb9485.png](https://i-blog.csdnimg.cn/blog_migrate/6f599dfbb477f6f894b1d2466519b30c.jpeg)
第一行是mysqldump的版本
这里为10.13的版本
第二三行显示主机名为127.0.0.1
数据库版本为5.7.25
接下来为一些系统变量的设置
注意这里/* !12345 */ 不是注释 (/* */ 是MySQL的多行注释符)
它表示如果MySQL的版本大于4.1.1 则执行相应的语句
2.2 GTID信息
![7283be71ab5e75052dea4cba7b3e2344.png](https://i-blog.csdnimg.cn/blog_migrate/11b94627c293a9a6c9d4b7fca197e191.jpeg)
-- 是MySQL的注释符号
接下来是清除掉的GTID的设置
如果在备份时未使用 --set-gtid-purged=off 参数 则会出现这行
这里建议加入该参数,否则在还原到其他服务器时会出错
GTID是全局事务唯一标识符,在一个MySQL环境中保持唯一,主要用于复制
GTID_PURGED的数字代表该GTID的事务及以前的事务不包含在所有的BINLOG中,这意味着无法重现该事务
关于GTID后续解释
2.3 数据库和表的信息
![4d2921942c69eab3b383d9049b2fb5a7.png](https://i-blog.csdnimg.cn/blog_migrate/be51abc6e132382c7b1037f690a2520d.jpeg)
接下来是备份数据库的语句
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 表数据的备份
![316a992011727b1d76a998a8f4d30021.png](https://i-blog.csdnimg.cn/blog_migrate/dfd7d8de59b0c81c002598c8990f3552.jpeg)
接下来是表数据的备份(Dumping data for table)
首先锁定表不让其他进程写(LOCK TABLE WRITE)
然后使MySQL停止更新非唯一索引(ALTER TABLE DISABLE KEYS),这样能加快插入速度
之后将数据转换成insert语句(INSERT INTO)
之后重新建立丢失的索引(ALTER TABLE ENABLE KEYS)
最后释放锁(UNLOCK TABLES)
直到该数据库所有的表导出完毕后进行下一个数据库
2.5 结束备份
![0b1e7118715c20ce2690b63c1f21ca7a.png](https://i-blog.csdnimg.cn/blog_migrate/03f8ef5e45507e6827f8fc591c315bea.jpeg)
最后是备份的完成日期
3.总结
所以全库备份出来的语句主要包含如下内容
- 建立数据库(如果不存在)
- 使用数据库
- 删除表(如果存在)
- 建表
- 锁表
- 禁用非唯一索引
- 插入数据
- 启用非唯一索引(重建索引)
- 释放锁
- 视图导出
另外:可能注意到了上面的语句中只有数据库和表的信息
没有存储过程 函数 触发器等的信息
所以默认这些是不导出的
经测试视图也会一并导出
今天的内容就到这里,欢迎查看
3. mysqldump命令详解 Part 3- 备份全库www.zhaibibei.cn![f82838b9185d9973e48db0601858caa3.png](https://i-blog.csdnimg.cn/blog_migrate/4dcf71765e825ed4188fa692d4cc7a47.png)