数据库05 使用percona软件来进行数据备份
1.为什么要与用percona来备份
常见的MySQL备份工具
—跨平台性差
—备份时间长、冗余备份、浪费存储空间
mysqldump备份缺点:
—效率较低、备份与还原速度慢,锁表(即备份数据库中的一个表时,其他表都不能使用)
—备份过程中,数据插入和更新操作被阻塞
xtraBackup工具
款强大的在线热备份工具
—备份过程中不锁表库,适合生产环境
—由专业组织percona提供
主要包含两个组件
—xtrabackup :C程序。支持innoDB/XtreDB存储系统
—innobackupex :以Perl脚本分装xtrabackup ,还支持mylsam
2.安装软件
- root@host50 ~]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
- [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目录)
- [root@host50 ~]# innobackupex --user root --password 123456 /fullbak() --no-timestamp
步骤二:增量备份 (每次执行备份,值备份新数据,在50主机执行)
1) 插入新记录,并做增量备份
- mysql> insert into db3.user2 values(5,"jack");// 插入新记录,多写几条
- [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) 把备份文件拷贝给做备份的目标主机
- [root@host50 ~]# scp -r /fullbak root@192.168.4.51:/root/
- [root@host50 ~]# scp -r /new1dir/ root@192.168.4.51:/root/
- [root@host50 ~]# scp -r /new2dir/ root@192.168.4.51:/root/
步骤三:在目标主机恢复数据
1) 停止服务,并清空数据
- [root@host51 ~]# systemctl stop mysqld
- [root@host51 ~]# rm -rf /var/lib/mysql/*
2) 合并日志
- [root@host51 ~ ]# innobackupex --apply-log --redo-only /root/fullbak //准备恢复数据
- [root@host51 ~ ]# innobackupex --apply-log --redo-only /root/fullbak --incremental-dir=/root/new1dir //合并日志(恢复增量)
- [root@host51 ~ ]# innobackupex --apply-log --redo-only /root/fullbak --incremental-dir=/root/new2dir //合并日志(恢复增量)
- [root@host51 ~ ]# rm -rf /root/new2dir //恢复后,可以删除了
- [root@host51 ~ ]# rm -rf /root/new1dir //恢复后,可以删除了
3) 恢复数据
- [root@host51 ~ ]# innobackupex --copy-back /root/fullbak //拷贝文件到数据库目录下
- [root@host51 ~ ]# chown -R mysql:mysql /var/lib/mysql //修改所有者与组用户
- [root@host51 ~ ]# systemctl start mysqld //启动服务
- [root@host51 ~ ]# mysql -uroot -p123456 //登录
- mysql> select count(*) from db3.user; //查看数据
数据库05 使用percona软件来进行数据备份的更多相关文章
- MySQL-06 数据备份和恢复
学习目标 数据备份 数据恢复 数据库迁移 导入和导出 数据备份 系统意外崩溃或者服务器硬件损坏都有可能导致数据库丢失,因此生产环境中数据备份非常重要. MySQLdump命令备份 该命令可以将数据库备 ...
- SymmetricDS 数据库双向同步开源软件入门
一句话概括该软件:SymmetricDS是一个文件和数据库同步软件,开源的,支持多主复制,同步时过滤和在异构的网络环境中进行数据转换传输.它支持单向和双向上的多个订阅者,异步的数据复制. 以下是从CS ...
- Qt的Model/View Framework解析(数据是从真正的“肉(raw)”里取得,Model提供肉,所以读写文件、操作数据库、网络通讯等一系列与数据打交道的工作就在model中做了)
最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道Model/Vi ...
- 国产多维数据库 NeuralCube!中国人自己的大数据底层核心技术!
商业转载请联系作者获得授权,非商业转载请注明出处. 提到‘数据库’,首先被想到的肯定是Oracle.DB2.SQL Server.MySql这些传统的关系型数据库.数据库的概念是非常宽泛的,除了上述的 ...
- MySQL 大数据备份方案之Percona XtraBackup
Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbacku ...
- Deinstall卸载RAC之Oracle软件及数据库+GI集群软件
Deinstall卸载Oracle软件及数据库+GI集群软件 1. 本篇文档应用场景: 需要安装新的ORACLE RAC产品,系统没有重装,需要对原环境中的RAC进行卸载: #本篇文档,在AIX 6. ...
- Qt基于sqlite数据库的管理小软件
闲来无事,写了一个基于sqlite的数据库管理小软件. 先上图 中心思想就是: 创建一个数据库 然后每一个分组对应一个数据表 然后遍历该数据表.将名字以treewidgetItem显示出来.添加删除实 ...
- 【EF学习笔记05】----------操作内存中的数据
SingleOrDefault实验 //SingleOrDefault实验 using (var db = new Entities()) { var classes = new Classes() ...
- 判断数据库内容,在页面显示自定义数据case when
判断数据库内容,在页面显示自定义数据 case when...then ...else...end 比如:数据库内容是这样: 通过sql语句判断,数据库的name字段,内容是月桂的,显示嫦娥,其他的显 ...
随机推荐
- 百万年薪python之路 -- 字典(dict)
1.字典(dict)-- dict关键字 字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成. 字典中逗号分隔叫作一个元素 字典是无序的 key必须是不可变 ...
- js小数加减乘除时精度不准确
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_33237207/article/d ...
- Java11新特性 - Epsilon GC和ZGC
Java11中新增了两个GC,Epsilon GC和ZGC. Epsilon垃圾收集器 A NoOp Garbage Collector 没有操作的垃圾收集器 JDK上对这个特性的描述是:开发一个处理 ...
- 微软宣布加入 OpenJDK,看网上各派的热闹
微软宣布加入 OpenJDK 项目(https://www.oschina.net/news/111036/microsoft-to-participate-in-openidk),这两天在微信公众号 ...
- Gitlab在Centos7上的安装
一 官网说明 安装步骤:https://about.gitlab.com/install/#centos-7 安装说明:本文只是用来给微服务当配置中心,只是较浅的记录一下安装步骤,后面会详细讲解及在d ...
- H5与CSS3常用设置
1.设置div铺满全屏 对于一个div1,要使其属性height:100%生效,需要使其所有父元素,有确定的属性height.要铺满全屏,就是从html开始,所有的height为100%. 2.垂直居 ...
- C标准库stdlib.h概况
库变量 size_t 这是无符号整数类型,它是 sizeof 关键字的结果 wchar_t 这是一个宽字符常量大小的整数类型. div_t 这是 div 函数返回的结构 ldiv_t 这是 l ...
- NOIP模拟 37
啊哈这次没什么智障低错丢rank什么的托词了STO 发现好像110我就拿满了.. 水平不行..只会简单题qaq T1 可以树上启发式合并水过(普通分治也行) T2 我连那么显然的 一劳永逸的容斥都没想 ...
- NOIP模拟 24
连续爆炸的开端. 从这一场开始我没状态了 T1 star way to heaven 受强降雨boboQQQ影响,我一直认为这是一道和凸包有关的计算几何题 很快就弃了,除了期望没做过带实数的题,所以吓 ...
- 磁盘冗余阵列之RAID10的配置
1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏导致数据丢 ...