备份类型:

热备份:读写不受影响

温备份:仅可执行读备份

冷备份:离线备份,读写均不能执行,关机备份

物理备份和逻辑备份

物理备份:复制数据文件,速度快。

逻辑备份:将数据导出之文本文件中,必要时候,把他还原回去。

完全备份、增量备份、差异备份

完全备份:备份全部数据

增量备份:仅备份上次完全备份以来变化的数据

差异备份:仅备份上次备份或增量备份以后变化的数据

备份是什么?数据、配置文件、二进制日志、事务日志、-+

MyISAM:不支持热备份,借助逻辑卷(LV),否则只能用温备份。

Innodb:支持热备份,必须得使用一些工具(mysqldummp/xtrabackup开源)。

mysqldump:逻辑备份工具,MyISAM(温),Innodb(热备份)

mysqlhotcopy:物理备份工具、温备份/冷备份

cp:冷备份

LV:逻辑卷的快照功能,几乎热备份

mysqldump备份

原理:将整个表中的数据备份为批量插入的insert语句

在备份数据之前必须要做的防护措施

1、将缓冲区中的数据同步到存储硬盘中去 、锁表:flush   tables   with  read  lock

2、解锁:unlock  tables

3、关闭二进制日志:set  sql_log_bin=0;

4、滚动日志:FLUSH  LOGS;

命令选项:

--master-data={0|1|2}

0:不记录二进制日志文件及其路径

1:以chnage  master  to 的方式记录位置,可用于恢复后直接启动从服务器

2:以chnage  master  to 的方式记录位置,一般默认为被注释掉

Ionndb热备份

--single-transaction --->启动热备分

--all-databases  --->备份所有库

--databases  库名,库名  --->备份指定库

MyISAM温备份

--lock-all-tabls  --->执行温备份

--lock-tables    --->只备份一张表

备份库或者表

[root@pc2 ~]#   mysqldump  -uroot  -p  jiaowu   jij  >   /root/        jiaowu.sql

关键字      选项     库名    表名      导出的路径     备份后的文件名

还原库 或者表

还原之前必须得先创建一个新库(sun)

[root@pc2 ~]# mysql  -uroot  -p  -hlocalhost  sun          <           biao.sql ;

指定库名   导入的路径     备份的文件名

备份策略

每周完全备份+每日增量备份

完全备份:mysqldump

增量备份:备份二进制文件文件(备份之前flush  logs)

当我们把整所有库都删掉时,要先去初始化数据库

若启动不起来:killall   mysqld

逻辑备份

1、浮点数据丢失精度

2、备份出的数据更占用存储空间,压缩后可 大大节省空间

3、不适合对大数据做完全备份

select备份

备份:select   *   into   outfile  '/tmp/ss.txt'     from   courses;

还原的时候注意:要恢复的表格式要事先创建好,然后才能还原。

还原  load  data  infile  '/tmp/sss.txt'  into  table   表名

使用LVM快照进行数据库备份

set  sql_log_bin=0;  --->关闭记录二进制文件,开启=1

show  master  status; --->查看当前二进制日志

SHOW BINLOG  EVENTS  IN  '日志名'; --->查看二进制日志中的事件

前提:

1、数据文件在逻辑卷上

2、此逻辑卷所在卷组必须有足够的空间够快照卷使用

3、数据文件和事务日志要在同一个逻辑卷中

过程

1、启动一个事务:start  transaction;

2、在一个表中插入数据:insert into tutors (Tname) values ('stu001');

3、提交事务:commit;

4、刷新表并且给所有表加锁:flush  tables  with  read  lock;  并且执行一次flush  logs,滚动日志

5、通过另外一个终端保留二进制日志文件及相关位置信息

mysql  -urooot  -p   -hlocalhost   -e  'show master  status\G'  > /路径/master.info

6、创建快照卷

lvcreate   -L 大小 -s  -p  -r  -n名称  lv名称    卷组路径

7、释放锁  mysql>  unlock  tables;

8、挂载快照卷,备份

mount  、  cp  -a

9、删除快照卷

10、增量备份二进制日志

二进制日志相关的几个选项

若进不去mysql字符界面:

[client]

socket=/tmp/mysql.sock

xtrabackup数据库备份

下载xtrabackup这个工具:www.percona.com

安装之前会有依赖包:libev-4.15-1.el6.rf.i686.rpm

perl-DBD-MySQL

使用rpm安装xtrabackup :rpm -ivh percona-xtrabackup-2.3.4-1.el6.i686.rpm

xtrabackup

--defaults-file=     //mysql主配置文件

--user=root           //mysql 用户

--password='oracle'    //mysql密码

--socket=/var/lib/mysql/mysql.sock /data/mysql/backup/full     //mysqlsock文件,可选!

备份

innobackupex  --user=root   /usr   备份整个数据库,备份文件放在/usr/下面

备份完成之后,他会在/usr/目录下创建一个以当前时间命令的文件夹!

在这个文件夹里面都有

xtrabackup_binlog_info:二进制文件信息

xtrabackup_logfile :纯数据文件,

xtrabackup_checkpoints :检查点,

backup-my.cnf :备份命令用到的配置选项信息

现在模拟mysql数据库损坏,service  mysqld    stop   ,然后把/mydata/data目录下的所有数据删除!

在备份之后需要做一些准备操作,在能进行还原

1、将那些已经提交的事务同步到数据文件,从日志文件同步到数据文件。

2、将那些尚未提交的事务给他做回滚

使用--apply-log实现回滚,将那些已经提交的事务同步到数据文件

准备操作

innobackupex   --appli-log   /usr/2016-05-16_16-57-49/

关键字         选项       指定备份目录

当出现completed OK时,你的准备操作已经完成!

当准备操作完成之后又出现新的数据怎么办?

做即时点还原

首先在mysql中做滚动日志,flush  logs;

然后把数据目录中的二进制文件读取出来拷贝到另一个地方,以后可以拿来用就可以了!

cp  mysql-bin.000005    /root/   (当前位置在/mydata/data)

还原

还原前要保证数据目录中必须是空的!

要想在一个完全备份中恢复数据,只需要使用--copy-back

innobackupex   --copy-back    /usr/2016-05-16_16-57-49/

选项            备份文件路径

当出现completed  OK!时,还原成功!

然后修改数据目录的权限  chown  -R  mysql:mysql   /mydata/data/

然后再进行即时还原,把我们原先cp出去的那个二进制日志文件制作成sql脚本,导入到mysql中!把mysql还原到崩溃的那一刻。

找到cp出去的那个二进制日志文件,读取那个文件并保存为sql脚本

mysqlbinlog  /tmp/mysql-bin.000002    >  /tmp/sd.sql

进入mysql页面中:

set sql_log_bin=0;

source  /tmp/sd.sql;  :执行这个cp出去的sql脚本。

set sql_log__bin=1; :还原回设置

这就是xtrabackup +二进制日志进行备份!

xtrabackup支持对Innodb存储引擎做增量备份。

使用xtrabackup实现增量备份

先进行一次完全备份!

要想实现增量备份,加一个选项 --incermental-dir

第一次增量备份:innobackupex  --incremental   /存放路径   --incremental-basedir  完全备份文件路径

第二次增量备份:innobackupex  --incremental   /存放路径   --incremental-basedir  上一次增量备份文件的路径

准备操作!

innobackupex  --apply-log  --redo-only   完全备份文件夹位置

对第一次增量备份合并到完全备份中去

innobackupex  --apply-log   --redo-only  指定完全备份文件位置   --incremental-dir=第一次增量备份文件位置

对第二次增量本分合并到完全备份中去

innobackupex  --apply-log  --redo-only   指定完全备份文件位置   --incremental-dir=第二次增量备份文件位置

现在还原的时候,只还原完全备份就可以了,因为,所有的redo操作都已经合并到完全备份中去了。

使用xtrabackup实现增量备份还原

破坏mysql,把数据目录中的文件都删了!

innobackupex   --copy-back   指定完全备份位置

Mysql数据库之备份还原(mysqldump,LVM快照,select备份,xtrabackup)的更多相关文章

  1. Mysql数据库备份—-通过LVM快照实现备份还原

    一.实验环境 一台测试机:A(172.18.30.1) 操作系统:Centos7 操作对象数据库版本:mariadb-10.2 二.实现目的 从A机器(172.18.30.1)简单搭建数据库,创建测试 ...

  2. mysql数据库基于LVM快照的备份

    lvm-snapshot: 基于LVM快照的备份 1.事务日志跟数据文件必须在同一个卷上          2.创建快照卷之前,要请求mysql的全局锁,在快照创建完成之后释放锁          3 ...

  3. MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot)

    MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是快照卷 如上图所示,原卷和快照卷可以不一样大,因为 ...

  4. mysql数据库导出时报错mysqldump: Got error: 145的解决方法

      在给mysql数据库备份时,报错:mysqldump: Got error: 145: Table './jxzhtopenfire/ofoffline' is marked as crashed ...

  5. MySQL基于LVM快照的备份恢复(临时)

    目录1.数据库全备份2.准备LVM卷3.数据恢复到LVM卷4.基于LVM快照备份数据5.数据灾难恢复6.总结 写在前面:测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷, ...

  6. mysql 基于lvm快照的备份

    1.查看磁盘数 ls /dev/ | grep sd 2.快照备份 pvcreate /dev/sdb #制作成物理卷vgcreate testvg /dev/sdblvcreate -L200M - ...

  7. MySQL备份还原——mysqldump工具介绍

    mysqldump是一款MySQL逻辑备份的工具,他将数据库里面的对象(表)导出成SQL脚本文件.有点类似于SQL SEVER的"任务-生成脚本"的逻辑备份功能.mysqldump ...

  8. LVM快照(snapshot)备份

    转载自:http://wenku.baidu.com/link?url=cbioiMKsfrxlzrJmoUMaztbrTelkE0FQ8F9qUHX7sa9va-BkkL4amvzCCAKg2hBv ...

  9. Sql Server 备份还原失败错误ERROR:3145(备份集中的数据库备份与现有的数据库不同)及解决办法

    SQL Server备份文件bak,备份后还原出现错误3145,备份集中的数据库备份与现有的 'xxx' 数据库不同. 解决办法如下: 1,新建一个与现有数据库重名的数据库. 如果您不知道数据库名称, ...

  10. MySQL数据库(表)的导入导出(备份和还原)

    一)在同一个数据库服务器上面进行数据表间的数据导入导出: 1. 如果表tb1和tb2的结构是完全一样的,则使用以下的命令就可以将表tb1中的数据导入到表tb2中: insert into db2.tb ...

随机推荐

  1. phoenix hbase Can't get master address from ZooKeeper; znode data == null

    问题描述: 项目一直在用的hbase节点  简称h1 由于网络问题,无法使用,重新找了一个网络稳定的节点  z1作为新的hbase库,库名称hbase_test,zookeeper等都配置好后,通过j ...

  2. 数据结构——顺序表(sequence list)

    /* sequenceList.c */ /* 顺序表 */ /* 线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表中的各项数据元素,用这种存储形式的线性表称为顺序表. */ #in ...

  3. [HNOI2012]集合选数(构造,状态压缩,DP)

    神仙题. 莫名其妙的就试一试把所有数放进一个类似矩阵的东西里面. 首先把 \(1\) 放到左上角,然后在每个数的右边放它的 \(3\) 倍(大于 \(n\) 就不用放了),下面放它的 \(2\) 倍( ...

  4. [THUPC2018]生生不息(???)

    SB题,写来放松身心. 首先 $n,m\le 5$,这是可以打表的. 本地怎么对于一个 $n,m$ 求答案?此时虽然复杂度不需要太优,但是还是得够快. 一个想法是枚举每个初始状态,不停模拟.因为总状态 ...

  5. [LeetCode] 789. Escape The Ghosts 逃离鬼魂

    You are playing a simplified Pacman game. You start at the point (0, 0), and your destination is (ta ...

  6. C# socket ipv6初体验

    Server: serverSocket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp) ...

  7. 推荐一款移动端天气App即刻天气

    推荐一款移动端天气App即刻天气 一 应用描述 即刻天气预报是一个提供全国各城市15日天气预报和空气质量的APP,包含全国3000个城市天气预报,3万个乡镇天气,15日及48小时空气质量预报,是万千用 ...

  8. 服务器个人环境下pytorch0.4.1编译warp-ctc遇到的问题及解决方法

    一.关于warp-ctc CTC可以生成一个损失函数,用于在序列数据上进行监督式学习,不需要对齐输入数据及标签,经常连接在一个RNN网络的末端,训练端到端的语音或文本识别系统.CTC论文 CTC网络的 ...

  9. freemarker中8个常用的指令

    这里列举出Freemarker模板文件中8个常用的指令. 1. assign assign指令用于创建或替换一个顶层变量,assign指令的用法有多种,包括创建或替换一个顶层变量,创建或替换多个变量等 ...

  10. 《 .NET并发编程实战》阅读指南 - 第9章

    先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.