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. python编程系列---Pycharm快捷键(更新中....)

    以下是我常用到的Pycharm快捷键(还有很多,只是我暂时用的最多的就这些): 在开发过程中,经常使用一些快捷键会大大提高开发效率,不要因为看这多而不用,常用的就那些,用得多就都记住了,脱离鼠标,逼格 ...

  2. 10.Linux用户权限

    1.权限基本概述 1. 什么是权限? 我们可以把它理解为操作系统对用户能够执行的功能所设立的限制,主要用于约束用户能对系统所做的操作,以及内容访问的范围,或者说,权限是指某个特定的用户具有特定的系统资 ...

  3. Java中常用的四种线程池

    在Java中使用线程池,可以用ThreadPoolExecutor的构造函数直接创建出线程池实例,如何使用参见之前的文章Java线程池构造参数详解.不过,在Executors类中,为我们提供了常用线程 ...

  4. 惊人!Spring5 AOP 默认使用Cglib ?从现象到源码深度分析

    Spring5 AOP 默认使用 Cglib 了?我第一次听到这个说法是在一个微信群里: 真的假的?查阅文档 刚看到这个说法的时候,我是保持怀疑态度的. 大家都知道 Spring5 之前的版本 AOP ...

  5. 再谈 APISIX 高性能实践

    2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·成都站,APISIX 主要作者王院生在活动上做了<APISIX ...

  6. vue.js 使用 vue-router 修改页面标题

    module.exports = { name: 'myComponent', data: {} route{ data: function(){ document.title = "页面标 ...

  7. FRP代理及其在数据库安全上的实践

    1 代理 现如今的互联网世界里,代理服务已经十分常见,它通常作为一个第三方或者说中转站角色替代用户取得信息或者服务. 根据代理对象的不同,代理服务可以分为正向代理和反向代理. 1.1 正向代理 我们通 ...

  8. .NET进阶篇05-Linq、Lambda表达式

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 内容目录 一.Lambda表达式1.匿名方法2.Lambda表达式二.Linq概述三.查询操作符1.linq初见2.常用查询操作符筛选排序分组连 ...

  9. [apue] 如何处理 tcp 紧急数据(OOB)?

    在上大学的时候,我们可能就听说了OOB(Out Of Band 带外数据,又称紧急数据)这个概念. 当时老师给的解释就是在当前处理的数据流之外的数据,用于紧急的情况.然后就没有然后了…… 毕业这么多年 ...

  10. 来玩一局CS吗?UE4射击游戏的独立服务器构建

    前言   根据UE4官方文档的介绍,UE4引擎在架构时就已经考虑到了多人游戏的情景,多人游戏基于客户端-服务器模式(CS模式).也就是说,会有一个服务器担当游戏状态的主控者,而连接的客户端将保持近似的 ...