MySQL官方备份_Mysqlbackup 备份详解(mysql官方备份工具)

A.1全库备份.

命令:

mysqlbackup--defaults-file=/home/mysql-server/mysql3/my.cnf  --user=root --password=root  --databases="mysql total2" --with-timestamp   --backup-dir=/home/mysql-server/backup   backup

参数说明:

--defaults-filemy.cnf文件的路径,主要用于一台服务器多个mysql服务.默认位置是/etc/my.cnf

--user用户名,这个用户必须在mysql库里面有创建table和查询,插入的权限.在备份的过程中.mysqlbackup会在mysql库下建立backup_history, backup_progress表.用户保留备份的历史信息和备份的基础信息.

--password密码

--database需要备份的数据库,要备份多个数据库需要用””包括起来,每个数据库中间用空格分开

--with-timestamp用户创建一个备份目录下面当前时间的文件夹,如果没有这个参数,多次备份时,制定同一个目录,会使上一次备份的文件覆盖掉.

--backup-dir备份的目录

Backup表明,这是备份操作

A.2全库还原.

第一步:检测事务日志

Mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf--backup-dir=/home/mysql-server/backup/2012-03-21_14-01-34/  apply-log

参数说明:

apply-log:因为在备份的时候是在线的,如果有新插入的SQL语句,会记录新增加的LSN点,然后新修改的页面会放到这个文件里面(ibbackup_logfile),同时也会放到表空间里面.当还原使用这个参数的时候,mysqlbackup会检测ibbackup_logfile和表空间的LSN点,然后比较ibbackup_logfile文件表空间LSN的差值,把这个值放到事务日志LOG里面.(事务日志如果填满了,会进入表空间的)

第二步:copy物理文件

mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf--backup-dir=/home/mysql-server/backup/2012-03-21_14-01-34/  --innodb_log_files_in_group=2  copy-back

# 注意:在还原的时候,my.cnf文件中必要要有datadir的参数

B.1压缩全库备份

mysqlbackup--defaults-file=/home/mysql-server/mysql3/my.cnf  --user=root --password=root --compress-level=1 --databases="mysql total2" --with-timestamp   --backup-dir=/home/mysql-server/backup  backup

参数说明:

--compress-level=1

1为快速压缩.共有9个等级

B.2压缩还原

第一步:检测事务日志,并解压

mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf --uncompress --backup-dir=/home/mysql-server/backup/2012-03-21_14-08-33/ apply-log

uncompress解压压缩后的文件.

第二步:copy物理文件

mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf --innodb_log_files_in_group=2 --backup-dir=/home/mysql-server/backup/2012-03-21_14-08-33/copy-back

# 注意:在还原的时候,my.cnf文件中必要要有datadir的参数

增量备份不支持压缩. backup-and-apply-log参数不能跟--compress-level同用

C.1备份时,同时释放事务日志

备份

mysqlbackup  --defaults-file=/home/mysql-server/mysql3/my.cnf  --user=root --password=root  --databases="mysql total2" --with-timestamp     --backup-dir=/home/mysql-server/backup  backup-and-apply-log

参数说明:

backup-and-apply-log这个参数,在备份的时候,就把事务日志检测的功能就完成了,并把ibbackup_logfile与表空间差值的LSN内容放入到了事务日志里面,所以在还原的时候,就只需要备份物理文件就行

还原

mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf --innodb_log_files_in_group=2 --backup-dir=/home/mysql-server/backup/2012-03-21_19-25-09/  copy-back

D.1增量备份

第一次增量备份:

mysqlbackup  --defaults-file=/home/mysql-server/mysql3/my.cnf  --user=root --password=root   --with-timestamp

--databases=”mysql total2” --incremental --incremental-backup-dir=/home/mysql-server/in/  --incremental-base=dir:/home/mysql-server/backup/2012-03-22_11-10-28  backup

参数说明:

--incremental:代表为增量备份.

--incremental-backup-dir :增量备份存放到哪个路径下

--incremental-base :增量备份的基础备份或增量备份的文件

第二次增量备份:

mysqlbackup  --defaults-file=/home/mysql-server/mysql3/my.cnf  --user=root --password=root   --with-timestamp

--databases=”mysql total2”  --incremental --incremental-backup-dir=/home/mysql-server/in/  --incremental-base=dir:/home/mysql-server/backup/2012-03-22_11-15-28  backup

参数说明:

--incremental-base :这里的备份,就是上一次增量备份的路径

增量备份原理:增量备份是基于第一次的完整备份之后,通过完整最后的LSN点这个基础在往后进行备份.当第二次增量备份的时,就基于前一次增量备份的LSN点的基础在进行备份.所以--incremental-base这个参数在增量备份的时候,是指向上一次全备份或增量备份的LSN点

D.2增量还原

1.全备检测匹配释放事务日志

mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf  --backup-dir=/home/mysql-server/backup/2012-03-21_17-59-54/ apply-log

2.检测匹配释放第一次的增量备份

mysqlbackup  --backup-dir=/home/mysql-server/backup/2012-03-21_17-59-54/  --incremental-backup-dir=/home/mysql-server/in/2012-03-22_11-47-47/  apply-incremental-backup

3.检测匹配释放第二次的增量备份

mysqlbackup  --backup-dir=/home/mysql-server/backup/2012-03-21_17-59-54/  --incremental-backup-dir=/home/mysql-server/in/2012-03-22_11-50-47/  apply-incremental-backup

4.最后进行物理文件复制

mysqlbackup --defaults-file=/home/mysql-server/mysql2/my.cnf  --backup-dir=/home/mysql-server/backup/2012-03-21_17-59-54/copy-back

增量还原原理:

1.首先检测匹配释放全备事务日志文件(当然如果备份中使用了backup-and-apply-log,在备份的时候,已经检测匹配了,就不需要这一步了)

2.第一次增量备份的文件释放到全备文件里面.(首先会进入事务日志,然后是表空间),所以--backup-dir指向全备目录(基于LSN点向后增加)

3.第二次增量备份的文件也是释放到全备文件里面. (首先会进入事务日志,然后是表空间),因为第一次的增量备份后,全库里面已经有了第一次的LSN点,所以二次还原的时候同样指向全备文件里面使LSN点在外后增加

4.因为增量的页面,已经全部进入了事务日志或表空间,这个时候,就可以直接备份物理文件了.

但最后依然记住…

# =======================================================================

把先备份的系统库MV到原来的地方

修改data目录的权限(如果你设置的是已MySQL用户访问的话)

chown -R mysql.mysql data

# =========================================================================

在启动mysql server..

Mysqlbackup工作原理

1.mysqlbackup对innodb的表空间进行物理复制,但是,它是记录LSN点的,在备份过程中,新增加的输入直接写入备份文件的ibbackup_logfile中.同时记录最后的LSN点

2.mysqlbackup对myisam进行的是锁表全备.就算是增量备份,它依然是全备.

3.还原的时候,检测对比ibbackup_logfile文件里面与表空间里面的差值,使ibbackup_logfile里面的数据进入事务日志或表空间

4.在备份文件中的meta/backup_variables.txt文件中记录了备份的一些信息

[backup_variables]

start_lsn=1602048#开始备份的LSN点

end_lsn=687810168# 结束LSN点

apply_log_done=1#是否释放检测ibbackup_logfile文件(0表示没有,1表示已经释放)

is_incremental=0#是否是增量为增量备份文件(0:否,1:是)

is_incremental_with_redo_log_only=0#只配置重做日志,当输入数据大小重做日志大小时,会有一场抛出

is_partial=1#是服务器备份还是部分备份(0表示全服务器备份,1表示部分备份)

is_compressed=0#是否压缩(0表示没有压缩,1表示压缩)

binlog_position=mysql-bin.000001:107#二进制文件大小

is_onlyinnodb=0#是否只备份了innodb的表

文章转自:http://blog.csdn.net/m582445672/article/details/7649944

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下的库文件搜索路径

对于以压缩包发布的软件,在它的目录下通常都有一个配置脚本configure,它的作用确定编译参数(比如头文件位置、连接库位置等),然后生成Makefile以编译程序。可以进入该软件的目录,执行"./configure --help"命令查看使用帮…

慕课笔记 mysql读写分离_mysql读写分离笔记

主数据库执行命令:show master status;得到结果mysql-bin.0000092123从数据库执行命令stop slave;change master tomaster_host47.95.247.135,master_port3306,master_userroot,master_passwordroot,master_log_filemysql-bin.000009,master_log_pos4353;start slav…

ruby记录

ruby记录 --posted on 2015-02-28 20:52 zlingh 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/zlingh/p/4306195.html

前端学习(1372):构建模块化路由

const express require(express);const app express(); //创建路由对象 const home express.Router(); app.use(/home, home); home.get(/index, (req, res) > {res.send(欢迎来到我的页面) }) app.listen(3000); console.log(服务器启动成功); 运行结果

做移动端视频通话软件,大致看了下现有的开源软件(转)

转自:链接 要做一个移动端视频通话软件,大致看了下现有的开源软件一) sipdroid1)架构sip协议栈使用JAVA实现,音频Codec使用skype的silk(Silk编解码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音…

wamp环境搭建到mysql就不成功_Wamp环境搭建常见错误问题解决

第一点、对于apache php mysql 的版本的正确选择问题:网上有些教学视频已经很早了,然后很多人照着来,完全和视频里讲的一样,但是结果就是搭建不成功。出现问题原因:三件套的版本选择不正确,比如有的php版…

前端学习(1373):构建模块化路由2

demo37.js const express require(express);const app express(); const home require(./home); const admin require(./admin);app.use(/home, home); app.use(/admin, admin);app.listen(3000); console.log(服务器启动成功); home.js const express require(express…

WebApi权限验证流程的设计和实现

前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权限验证来实现Web系统登录&am…

前端学习(1374):express参数中get参数的获取

const express require(express);const app express(); app.get(index, (req, res) > {res,end(req.query); })app.listen(3000); console.log(服务器启动成功); 运行结果

mysql二维数据转一维存_二维数组转一维数组

//二维转一维var arr[[1,2,3],[2,5,6,7],[234,234,545]]function dir(arr) {var result[];for(var r0;rfor(var c0;cresult.push(arr[r][c])}}return result;}console.log(dir(arr))//方法二function dir2(arr) {var result[];for(var r0;rresultresult.concat(arr[r])}return …

前端学习(1375):express参数中post参数的获取

demo39.js const express require(express);const app express(); const bodyParser require(body-parser); //拦截所有请求 //extends:true 方法内部使用第三方模块请求的参数 app.use(bodyParser.urlencoded({ extends: false }))app.post(/add, (req, res) > {res.se…

iOS开发那些悲剧的事儿

一丶百度地图,百度导航开发中的问题: 1,开启引擎的时候,会再沙盒中自动生成一些二进制文件. 不符合苹果储存规则; 解决:将文件手动写入Cache, iCloud Drive 对于 iOS 8 和 OS X Yosemite ,苹果决定采用比较常规的做法,也是 4 亿多 iCloud 用户一直想要的…

javascript乘法和加法_js 大整数加法、乘法、除法

有一定的编程经验的人都知道,当我们对数据操作的时候,若数据过大,计算机将这个大数从十进制的转为二进制的,是没有那个类型的放的了的,因此,我们经常将一个大数转化为字符串来操作。接下来我将演示大整数的…

前端学习(1376):app.use方法

const express require(express);const app express(); const bodyParser require(body-parser); //拦截所有请求 //extends:true 方法内部使用第三方模块请求的参数 app.use(fn({ a: 1 }));function fn(obj) {return function(req, res, next) {if (obj.a 1) {console.log…

c treelist绑定mysql_TreeList 绑数据

try{RestService service new RestService();List categories service.SelectGoodsCategory(this.Login.Storeguid);if (categories ! null){TreeNode root new TreeNode(this.Login.StoreName);foreach (UMS_BASE_出品类别表 item in categories){if (categories.Contains(…

websocket + node.js聊天系统

转:http://www.cnblogs.com/Wayou/p/hichat_built_with_nodejs_socket.html 前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术。像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端。…

前端学习(1377):express路由参数

const express require(express);const app express(); const bodyParser require(body-parser); //拦截所有请求 //extends:true 方法内部使用第三方模块请求的参数app.get(/index/:id, (req, res) > {res.send(req.params); }) app.listen(3000); console.log(服务器启…

java桥_java 泛型--桥方法

因为 java 在编译源码时, 会进行 类型擦除, 导致泛型类型被替换限定类型(无限定类型就使用 Object). 因此为保持继承和重载的多态特性, 编译器会生成 桥方法.本文最后附录所有源码.Pair 是个泛型类, 它具有泛型方法 setSecond(T second),在经过编译时的 类型擦除 后变为 setSec…

前端学习(1378):express静态资源处理

const express require(express); const pathrequire(path); const app express();app.use(express.static(path.join(__dirname))) app.listen(3000); console.log(服务器启动成功);

json字符串生成C#实体类的工具

转载:http://www.cnblogs.com/finesite/archive/2011/07/31/2122984.html json作为互联网上轻量便捷的数据传输格式,越来越受到重视。但在服务器端编程过程中,我们常常希望能通过智能提示来提高编码效率。JSON C# Class Generator 能将json格式所表示的J…