前面说了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
命令后警告信息后面章节介绍
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.总结
所以全库备份出来的语句主要包含如下内容建立数据库(如果不存在)
使用数据库
删除表(如果存在)
建表
锁表
禁用非唯一索引
插入数据
启用非唯一索引(重建索引)
释放锁
视图导出
另外:可能注意到了上面的语句中只有数据库和表的信息
没有存储过程 函数 触发器等的信息
所以默认这些是不导出的
经测试视图也会一并导出
今天的内容就到这里,欢迎查看
3. mysqldump命令详解 Part 3- 备份全库www.zhaibibei.cn