备份的方案有很多种,不同的方式来进行组合,比如完全和增量
MySQLdump是系统自带的备份工具,可以实现逻辑备份,就是把数据库里的数据查询出来,导入到sql脚本里,进行备份,支持冷备,温备,热备,主要和你的存储引擎有关
cp,tar是复制文件,需要服务器停机,冷备
LVM快照就是当系统发生变化的时候,开辟这个空间里的到快照
查看备份工具的使用
重点掌握mysqldump和xtrabackup
schema就是创建数据库和表的定义和一些存储过成函数,mysqldump都是备份下来的
这个文件其实就是数据库文件备份下来的
这就是用mysqldump备份下来的文件
这个工具适合相对管理不是十分大的数据库,备份的效率是不是很高的
来自于哪个数据包
第一个是单表备份。
第二个是挑数据库备份
第三个是完全备份
-A用的是比较多的,因为mysql的权限用户都需要备份
这种方法备份是相对逻辑的备份,性能不是很好的
先试试简单的备份,停机冷备份,cp
,把hellodb备份,需要先停服务
把服务停了,系统会把数据都提交,所以拷贝的是一个完整的数据库
如果想要全部备份
冷备方法适合允许服务器停机的状态下
把文件拷贝到远程主机上,如果服务器宕机,如何还原
进行破坏
还原数据
路径有问题
权限默认是对的
数据还原了就可以重启服务了
重点mysqldump,做一个备份
把hellodb这个数据库备份下来
事实上是把数据库所有内容进行查询,默认情况下还没进行备份,只是在屏幕上打印
创建专门备份的文件夹
备份文件,这个文件放的就是刚才屏幕上显示的一套
加了写锁,别人就不能往里面写了
本质上系统判断数据库存在就帮你删除,然后把备份的数据插入到数据库里
你在第一张表,备份花了十分钟,中间辨别的用户不能写,但是有可能有些用户在改第二张表,因为第二张表当时还没锁
但是改完了第一张表到第二张的时候,别的用户有可能取改第一张表了
就会造成两张表备份的时间点不一致
合格备份的时候并没有把创建数据库的语句备份进去
没有把创建数据库的语句备份下来
删除原来数据库,所以直接这么导会报错
所以这种方式备份不是很好
如果恢复的数据库不存在,可以手动创建,名字可以不一样
不是你创建的数据库,,你就不知道怎么创建的
指定数据库还原
确认有数据
但是这个是我们知道数据库的情况下,但是有些你并不知道数据库怎么创建的
所以这种方式是很不合理的备份方法
所以尽量用-B选项,可以挑选性的备份某数据库
-不加-B就是备份数据库表名
只有student没有其他表
认为某张表比较重要就可以用这个命令把单个表备份下来
-B就代表要进行-B选项的备份,
、
因为这里有创建数据库的语句,当初怎么创建的,-B会把定义结构也备份下来
加入把hello数据库删除,怎么还原
只需要这样,不需要再去手动创建了
这样就方便数据库备份下来,省的没有备份结构
-E就等于一些计划任务,
event scheduler,事件调度器
-R就是一些存储过程和函数的一些
事实上在备份的 时候也可以考虑把mysql备份下来
更多的时候
数据库备份的时候都是很重要的,都需要备份下来 -A
全备份是否会加上create database的语句呢
有创建语句
把系统数据库创建了,那么如何恢复
先停止服务,删除所有的数据库
然后再启动起来才能访问
还原,就把所有东西都还原了
备份的时候,文件有点大,想要压缩一下,连备份接压缩
正常生产中 要加-u -p用户和口令的,小了好几倍
还原,gunzip解压和gzip -d都可以
由于刚才删除 了数据库表,需要先重启
现在想分库备份,因为每个数据库都是给一个小项目使用的
每个数据库单独做备份,备份到不同的文件中
-E扩展正则表达式(可以表示或者),v取反,-i不区分大小写
只备份下面的数据库
应该加gz后缀
现在先删除数据库
还原,先解压
就还原成功了
备份可以用脚本,还原最好用命令一条条还原
不用循环可以吗
然后执行就可以了,不过还欠缺-u -p,将来就实现了分库的备份
要压缩还需要做管道
最好加个年月日
sed '单引号,会默认里面的符号时普通符号
要用双引号
相当于备份的时候多了个 说明性的东西
1就是这条记录不注释掉,名字和位置,这个是跟主从复制相关的
2就是这行被注释掉了
这个加一下就能知道这个数据库备份是在什么时候进行备份的
在这个时间段进行的备份,这样就可以把之前的删除了
如果没有这一行,就不知道这是二进制哪里开始备份的
这个时间并不是很准确,因为这个文件可能拷贝到了其他的磁盘上了,时间有可能变了
这样就可以看到是在9上面备份的,之前的都是老旧的日志
一般借助于主从复制用1,如果只是备份建议2
-F一旦备份了以后,切换成新的日志了,意味新的日志往后放,老的日志往前放
为什么新增三个日志,刷新数据库,每备份一个数据库,就刷新一次操作
现在备份文件太多注释了,一般只是测试使用,生产不用
刷新策略让权限生效
部分情况下会报错,-f就可以忽略继续执行
mysqldump本身默认就是对数据库进行查询,查询就需要到缓存里面去查询
但是实际上没必要去缓存查询
-q就可以跳过,直接备份,不要去缓存查询的数据