1.为什么要与用percona来备份

  常见的MySQL备份工具

    —跨平台性差

    —备份时间长、冗余备份、浪费存储空间

  mysqldump备份缺点:

    —效率较低、备份与还原速度慢,锁表(即备份数据库中的一个表时,其他表都不能使用)

    —备份过程中,数据插入和更新操作被阻塞

xtraBackup工具

  款强大的在线热备份工具

    —备份过程中不锁表库,适合生产环境

    —由专业组织percona提供

  主要包含两个组件

    —xtrabackup :C程序。支持innoDB/XtreDB存储系统

    —innobackupex :以Perl脚本分装xtrabackup ,还支持mylsam

2.安装软件

  1. root@host50 ~]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
  2. [root@host50 ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

3.命令格式

]# innobackupex  选项

命令常用选项

命令:

*完全备份(没有指明数据库名,会将整个数据库的所有库都备份下来)
]# innobackupex  --user 用户名  --password 密码 备份目录名   --no-timestamp

(默认备份时的文件名称会自动以时间日期格式命名,可用--no-timestamp 来取消)

]#innobackupex --apply-log  目录名  //准备恢复数据

这是备份的目录名,备份完成后,目录下不仅有 数据库下的数据,还有描述备份信息的配置文件(xtrabackup 开头的)

[root@host50 ~]# ls /allbak
backup-my.cnf ib_buffer_pool mysql sys xtrabackup_info
db1 ibdata1 performance_schema xtrabackup_checkpoints xtrabackup_logfile

*完全恢复(在需要恢复的客户机上进行,首先要将之前数据库备份的数据目录(假设为  /alldbk  )  scp 到客户机上)

]# innobackupex --copy-back  目录名 //恢复数据

恢复步骤:

  1)停止数据库服务

  ]#systemctl stop mysqld

  2)清空数据库目录

  rm -rf /var/lib/mysql/*

  3)准备恢复数据

(把备份完成后又改变的数据文件的信息,和 已经备份完的数据合并到一块,这就是备份不锁表的原因)

  innobackupex --apply-log  /alldbk

  4)拷贝数据(完成后数据库目录下就会出现准备备份之后拷贝目录下的文件)

  innobackupex --copy-back  /alldbk

  5)修改数据库文件的所属主和所属组为mysql

  chown -R mysql:mysql /var/lib/mysql

  6)启动服务

  systemctl start mysqld

  netstat  -utnlp | grep :3306   查看一下服务有没有开启

  7)管理员权限下查看数据

  因为这里的数据库为主数据库服务端的,所有mysql -uroot -p密码  这个密码填原来数据库的密码,而不是现在客户端的密码

############################################################################################################

在完全备份中,恢复单张表(类似一张表中的数据丢失了)

步骤:

  1)删除没有数据的表空间

    表空间:存储数据的文件,这个文件在 数据库目录下数据库名下

  每个表都有对应的 .frm (存放表结构) 和.ibd (表空间,存储表里的数据)文件

[root@localhost ~]# ls /var/lib/mysql/abc123
db.opt gz.frm gz.ibd T1.frm T1.ibd T2.frm T2.ibd T3.frm T3.ibd T4.frm T4.ibd yg.frm yg.ibd

将没有数据的表空间文件删除

> mysql   alter table  库名.表名  discard tablespace;

  2)导出表信息

    在备份文件中备份的数据库中也有.ibd 表空间,备份文件中的表空间数据是完整的

 innobackupex --apply-log --export  /allbak

  3)拷贝表信息文件到数据库目录下

root@host50 ~]# cp /allbak/db3/user2.{cfg,exp,ibd} /var/lib/mysql/db3/

  4)修改表信息文件的所有者及组用户为mysql

root@host50 ~]# chown mysql:mysql /var/lib/mysql/db3/user2.*    

  5)导入表空间

mysql> alter  table db3.user2   import  tablespace;

  6)删除数据库目录下的表信息文件

[root@host50 ~]# rm -rf /var/lib/mysql/db3/user2.cfg
[root@host50 ~]# rm -rf /var/lib/mysql/db3/user2.exp

  7)查看表记录

mysql> select  * from db3.user2;

3 案例3:增量备份与恢复

在增量备份前通常有一次完全备份

3.1 问题

  • 具体要求如下:
  • 备份所有数据
  • 备份新产生的数据
  • 删除数据
  • 使用备份文件恢复数据

3.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:备份所有数据,在提供备份的主机执行

1)完全备份 (备份所有数据到/fullbak目录)

 
  1. [root@host50 ~]# innobackupex --user root --password 123456 /fullbak() --no-timestamp

步骤二:增量备份 (每次执行备份,值备份新数据,在50主机执行)

1) 插入新记录,并做增量备份

  1. mysql> insert into db3.user2 values(5,"jack");// 插入新记录,多写几条
  2. [root@host50 ~]# innobackupex --user root --password 123456 --incremental /new1dir --incremental-basedir=/fullbak --no-timestamp //第1次增量备份 ,数据存储目录/new1dir

2) 插入新记录,并做增量备份

mysql> insert into db3.user2 values(6,"jack");// 插入新记录,多写几条

[root@host50 ~]# innobackupex --user root --password 123456 --incremental /new2dir --incremental-basedir=/newdir1 --no-timestamp //第2次增量备份 ,数据存储目录/new2dir

3) 把备份文件拷贝给做备份的目标主机

  1. [root@host50 ~]# scp -r /fullbak root@192.168.4.51:/root/
  2. [root@host50 ~]# scp -r /new1dir/ root@192.168.4.51:/root/
  3. [root@host50 ~]# scp -r /new2dir/ root@192.168.4.51:/root/

步骤三:在目标主机恢复数据

1) 停止服务,并清空数据

 
  1. [root@host51 ~]# systemctl stop mysqld
  2. [root@host51 ~]# rm -rf /var/lib/mysql/*

2) 合并日志

 
  1. [root@host51 ~ ]# innobackupex --apply-log --redo-only /root/fullbak //准备恢复数据
  2. [root@host51 ~ ]# innobackupex --apply-log --redo-only /root/fullbak --incremental-dir=/root/new1dir //合并日志(恢复增量)
  3. [root@host51 ~ ]# innobackupex --apply-log --redo-only /root/fullbak --incremental-dir=/root/new2dir //合并日志(恢复增量)
  4. [root@host51 ~ ]# rm -rf /root/new2dir //恢复后,可以删除了
  5. [root@host51 ~ ]# rm -rf /root/new1dir //恢复后,可以删除了

3) 恢复数据

 
  1. [root@host51 ~ ]# innobackupex --copy-back /root/fullbak //拷贝文件到数据库目录下
  2. [root@host51 ~ ]# chown -R mysql:mysql /var/lib/mysql //修改所有者与组用户
  3. [root@host51 ~ ]# systemctl start mysqld //启动服务
  4. [root@host51 ~ ]# mysql -uroot -p123456 //登录
  5. mysql> select count(*) from db3.user; //查看数据

数据库05 使用percona软件来进行数据备份的更多相关文章

  1. MySQL-06 数据备份和恢复

    学习目标 数据备份 数据恢复 数据库迁移 导入和导出 数据备份 系统意外崩溃或者服务器硬件损坏都有可能导致数据库丢失,因此生产环境中数据备份非常重要. MySQLdump命令备份 该命令可以将数据库备 ...

  2. SymmetricDS 数据库双向同步开源软件入门

    一句话概括该软件:SymmetricDS是一个文件和数据库同步软件,开源的,支持多主复制,同步时过滤和在异构的网络环境中进行数据转换传输.它支持单向和双向上的多个订阅者,异步的数据复制. 以下是从CS ...

  3. Qt的Model/View Framework解析(数据是从真正的“肉(raw)”里取得,Model提供肉,所以读写文件、操作数据库、网络通讯等一系列与数据打交道的工作就在model中做了)

    最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道Model/Vi ...

  4. 国产多维数据库 NeuralCube!中国人自己的大数据底层核心技术!

    商业转载请联系作者获得授权,非商业转载请注明出处. 提到‘数据库’,首先被想到的肯定是Oracle.DB2.SQL Server.MySql这些传统的关系型数据库.数据库的概念是非常宽泛的,除了上述的 ...

  5. MySQL 大数据备份方案之Percona XtraBackup

    Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbacku ...

  6. Deinstall卸载RAC之Oracle软件及数据库+GI集群软件

    Deinstall卸载Oracle软件及数据库+GI集群软件 1. 本篇文档应用场景: 需要安装新的ORACLE RAC产品,系统没有重装,需要对原环境中的RAC进行卸载: #本篇文档,在AIX 6. ...

  7. Qt基于sqlite数据库的管理小软件

    闲来无事,写了一个基于sqlite的数据库管理小软件. 先上图 中心思想就是: 创建一个数据库 然后每一个分组对应一个数据表 然后遍历该数据表.将名字以treewidgetItem显示出来.添加删除实 ...

  8. 【EF学习笔记05】----------操作内存中的数据

    SingleOrDefault实验 //SingleOrDefault实验 using (var db = new Entities()) { var classes = new Classes() ...

  9. 判断数据库内容,在页面显示自定义数据case when

    判断数据库内容,在页面显示自定义数据 case when...then ...else...end 比如:数据库内容是这样: 通过sql语句判断,数据库的name字段,内容是月桂的,显示嫦娥,其他的显 ...

随机推荐

  1. ESP8266开发之旅 基础篇③ ESP8266与Arduino的开发说明

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  2. 02 Python学习笔记-基本数据类型(二)

    一.基本知识 1.缩进: 2.一行多条语句: 3.断行: 4.注释 # 单行注释 '''这是一段 多行注释''' 5. 变量 1. 变量类型(局部变量.全局变量.系统变量) 2. 变量赋值 多重赋值x ...

  3. redis入门(二)

    目录 redis入门(二) 前言 持久化 RDB AOF 持久化文件加载 高可用 哨兵 流程 安装部署 配置技巧 集群 原理 集群搭建 参考文档 redis入门(二) 前言 在redis入门(一)简单 ...

  4. MySQL基础篇(2)数据类型

    MySQL提供了多种数据类型,主要包括数值型.字符串类型.日期和时间类型. 1.数值类型 整数类型:TINYINT(1字节).SMALLINT(2字节).MEDIUMINT(3字节).INT(INTE ...

  5. Unity Dropdown

    unity DropDown控件应用很简单 代码如下 frameDpdown.options.Clear(); //Dropdown.OptionData optDataFrame = new Dro ...

  6. django-Views之使用视图渲染模板(五)

    render(<request>,<template_name>,context=-None,content_type=None,status=None,using=None) ...

  7. linux小白的入门和目标。

    大家好! 我是一名Linux小白,有幸来到马哥教育这个大家庭与各位同学在未来的五个月里一起学习Linux技术!尽管Linux对于刚接触到的新手会很难,但是我知道痛苦只是暂时的,满路荆棘的后面必是明亮宽 ...

  8. IL2CPP深入详解-总览

    导语 该系列将会分为以下几个部分:1. 总览(本文)2. c++代码解析3. 调试c++代码4. 方法调用(一般方法,虚方法等)5. 泛型共享6. 类型与方法的 P/invoke 封装7. 垃圾回收8 ...

  9. python基础-列表List及内置方法

    数据类型之列表-List 用途:用于存一个或多个不同类型的值 定义:通过中括号存值,每个值之间通过逗号进行分隔 l1 = [1,'a',3,'b'] 特性:有序.可变.存多个值的数据类型 常用方法: ...

  10. Java 计算n对应的二进制位上有几个1,分别在什么位置

    Java计算n的二进制位上有几个1,分别在什么位置   public List<Integer> getBinOneCount(int n){     List<Integer> ...