mysql学习之数据备份与恢复
该文使用mysql5.5 centos6.5 64位(本人使用rpm安装mysql,数据库的安装目录默认)
一、数据备份注意事项
读锁问题:数据库(或者某个表)一旦进行读锁操作则影响数据库的写操作所以此时不能对数据库进行写操作。之所以在数据备份的时候进行读锁操作是为了保证备份数据的完整性一致性,在数据备份完成后会自动进行解锁。
更新日志问题:每次备份数据的时候新生成一个日志文件,这样数据库在备份一段时间后突然崩溃可以通过该bin-log日志还原该时间段的数据。数据恢复的步骤:恢复备份的数据+还原最新bin-log日志中的数据
二、使用mysqldump进行书籍备份
mysqldump:命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。
mysqldump命令的工作原理:它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有记录转换成一条INSERT语句。然后通过这些语句,就能够创建表并插入数据。
将test数据库备份到/tmp/mysql_back/目录下
[root@localhost tmp]# mysqldump -uroot -p111111 test -l -F > '/tmp/mysql_back/test.sql';
参数解读:
1、mysqldump mysql数据备份的命令
2、-uroot -p111111 用户名密码
3、test:要备份的数据库名
4、-l:进行读锁控制
5、-F:生成新日志文件
执行该语句后会发现在 /var/lib/mysql 目录下会生成一个新的bin-log日志 mysql-bin.000002
6、/tmp/mysql_back/test.sql :生成备份文件的位置及名称
三、数据恢复
1、备份数据的恢复:
[root@localhost tmp]# mysql -uroot -p111111 test -v -f</tmp/mysql_back/test.sql
-v:查看导入的详细信息
-f:导入过程中遇到错误时可以skip过,继续执行下面的语句。
2、bin-log日志中数据的还原:
该日志在/var/lib/mysql下mysql-bin.000002日志中所有的记录
[root@localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 |mysql -uroot -p111111 test;
3、还原bin-log日志中指定位置的数据
通过 position位置还原数据
BEGIN
/*!*/;
# at 175
#170206 22:55:48 server id 1 end_log_pos 263 Query thread_id=17 exec_time=0 error_code=0
use `test`/*!*/;
SET TIMESTAMP=1486392948/*!*/;
insert into t1 values(10)
/*!*/;
# at 263
#170206 22:55:48 server id 1 end_log_pos 290 Xid = 178
COMMIT/*!*/;
# at 290
#170206 22:55:54 server id 1 end_log_pos 358 Query thread_id=17 exec_time=0 error_code=0
SET TIMESTAMP=1486392954/*!*/;
BEGIN
/*!*/;
# at 358
#170206 22:55:54 server id 1 end_log_pos 446 Query thread_id=17 exec_time=0 error_code=0
SET TIMESTAMP=1486392954/*!*/;
insert into t1 values(12)
/*!*/;
# at 446
#170206 22:55:54 server id 1 end_log_pos 473 Xid = 179
COMMIT/*!*/;
# at 473
#170206 22:56:42 server id 1 end_log_pos 547 Query thread_id=17 exec_time=0 error_code=0
SET TIMESTAMP=1486393002/*!*/;
truncate t1
还原该bin-log日志中position 位置在 172,473 中的数据(end_log_pos)
[root@localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 --start-position="175" --stop-position="473"|mysql -uroot -p111111 test;
4、还原bin-log日志中指定时间段的数据
格式:将3中即可
--start-position="175" 替换为 --start-date="2016-12-30 21:30:34"
--stop-position="473" 替换为 --stop-date="2016-12-30 23:30:34"
mysql学习之数据备份与恢复的更多相关文章
- MySQL学习笔记 -- 数据表的基本操作
数据库是一个可以存放数据库对象的容器,数据库对象包括:表.视图.存储过程.函数.触发器.事件.其中,表是数据库最基本的元素,是其他数据库对象的前提条件. 表中的一列称为一个字段,一行称为一条记录. 1 ...
- MySQL学习8 - 数据的增删改
一.介绍 二.插入数据 INSERT 三.更新数据UPDATE 四.删除数据DELETE 一.介绍 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现 ...
- MySQL学习3 - 数据表的操作
本节掌握 一.存储引擎(了解) 二.mysql支持的存储引擎 1.InnoDB 存储引擎 2.MyISAM 存储引擎 3.NDB 存储引擎 4.Memory 存储引擎 5.Infobright 存储引 ...
- Mysql学习_02_mysql数据导入导出
二.参考资料 1.MySQL 数据导出
- MySQL学习笔记6——备份与恢复
备份与恢复 备份与恢复 数据库-->sql:备份 sql-->数据库:恢复 1.数据库导出SQL脚本 >mysqldump -u用户名 -p密码 数据库名>生成的脚本文件路径 ...
- mysql学习笔记--数据操作
一.插入数据 1. 语法:insert into 表名 (字段名.字段名,...) values (值1,值2...) 2. 注意: a. 插入字段的个数和顺序与值的个数和顺序必须一致 b. 通过de ...
- mysql学习笔记--数据库内置函数
一.数字类 1. 生成随机数:rand() a. 随机抽取2位 select * from stuinfo order by rand() limit 2 2. 四舍五入:round(数字) 3. 向 ...
- Mysql学习笔记(三)对表数据的增删改查。
正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...
- MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题
1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...
随机推荐
- golang 多维哈希(map,hashmap)实践随笔
有些场景使用多维哈希来存储数据,时间复杂度恒定,简单粗暴好用.这里记录一下. 如下是三维哈希的简单示意图,建议层数不要太多,否则时间久了,自己写的代码都不认识. 下图是三维哈希在内存的存储形式,has ...
- python--复习之路的目录
想要看时点链接看看,常来复习,温故而知新,可以为师矣. 1:基本类型 python--基本类型之字符串 python--基本类型之列表 python--基本类型之元组 python--基本类型之集合 ...
- DE4加DVI子板实现静态图片显示
20170906录一下 内容后续补充
- PHP.50-TP框架商城应用实例-前台2-商品推荐
商品推荐 {抢购,新品,精品,热卖}效果如下 1.在商品表增加促销价格与促销起始时间和结束时间三个字段,字段推荐楼层与排序在后面用到 注意:在增加datetime类型字段时,要添加默认值{datet ...
- mySql——case when else ....demo
DROP PROCEDURE IF EXISTS Pro_query_change_charge_by_layer_report; CREATE PROCEDURE Pro_query_change_ ...
- day 6 敌机
1.显示敌机 #-*- coding:utf-8 -*- import pygame import time from pygame.locals import * class HeroPlane(o ...
- Dota2一直 正在登录服务器的解决办法
然后:1: c:\Windows\System32\drivers\etc\ 2:双击hosts文件,用记事本方式打开3:复制以下并粘贴至以记事本方式打开的hosts最后面111.221.33.253 ...
- javaweb(九)—— 通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- C++ 基础面试题-1
请说出下面代码在32位系统下的输出内容 /* ** 2018/03/21 21:43:00 ** Brief: ** Author:ZhangJianWei ** Email:Dream_Dog@16 ...
- 第一篇 Flask基础篇之(配置文件,路由系统,模板,请求响应,session&cookie)
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...