MySQL 逻辑备份工具
简介:
Mydumper、Myloader 是一个第三方的、开源的 MySQL 逻辑备份工具。
支持多线程,比起 mysqldump 要快很多,也能解决 innobackupex 备份工具对 MyISAM 引擎备份的不便。
多线程快速逻辑备份,恢复速度不咋地,支持快照功能。
呃,虽然这样好、那样好,但如果单库、又很大的时候,备份还是选择 innobackupex 物理备份吧,速度就是快。
下载地址:https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz
一、安装 Mydumper
shell > yum -y install gcc gcc-c++ glib2-devel pcre-devel zlib-devel mysql-devel shell > cd /usr/local/src; wget https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz
shell > tar zxf mydumper-0.9..tar.gz
shell > cd mydumper-0.9.
shell > cmake . && make && make install shell > /usr/local/bin/mydumper --help
/usr/local/bin/mydumper: error while loading shared libraries: libmysqlclient.so.: cannot open shared object file: No such file or directory shell > find / -name "libmysqlclient.so.18"
/usr/local/src/mysql-5.5./libmysql/libmysqlclient.so.
/usr/local/mysql-5.5./lib/libmysqlclient.so. shell > ln -s /usr/local/mysql-5.5./lib/libmysqlclient.so. /usr/lib64/
二、Mydumper 全备
shell > /usr/local/bin/mydumper --help -B, --database 指定备份的数据库,不指定时为备份全库(除 information_schema、performance_schema)
-T, --tables-list 指定备份的表,逗号分隔
-o, --outputdir 指定备份目录
-c, --compress 压缩备份输出
-e, --build-empty-files 即使表中无数据也备份成一个文件
-x, --regex 支持正则表达式 db.table,如 --regex '^(?!(mysql|test))' 不备份 mysql、test 库
-m, --no-schemas 不备份表结构
-d, --no-data 不备份数据
-G, --triggers 备份 triggers
-E, --events 备份 events
-R, --routines 备份存储过程跟函数
-k, --no-locks 不适用共享读锁,会导致数据不一致
-D, --daemon 以守护进程的方式启动
-I, --snapshot-interval 快照间隔时间,默认 秒
-h, --host
-u, --user
-p, --password
-P, --PORT
-S, --socket
-t, --threads 启动几个线程,默认
-C, --compress-protocol MySQL 连接上使用压缩协议,建议远程备份时使用
... 还有一些不常用的指令 通过 --help 获取
shell > /usr/local/bin/mydumper -u xxxx -p xxxx -e -c -B db_xxx -o /data/backup_db/-/db_xxx_05 # 目录 db_xxx_05 会自动创建 shell > ls - /data/backup_db/-/db_xxx_05
db_xxx-schema-create.sql.gz
db_xxx.table_1.sql.gz
db_xxx.table_1-schema.sql.gz
...
metadata # 备份目录下会生成如上几种类型的文件,可以使用 gunzip 解压后读取、分析
# db_xxx-schema-create.sql.gz 备份的数据库创建语句,也就是说恢复时不需要事先创建数据库
# db_xxx.table_1.sql.gz 数据表数据文件
# db_xxx.table_1-schema.sql.gz 数据表结构文件 shell > cat /data/backup_db/-/db_xxx_05/metadata
Started dump at: -- ::
SHOW MASTER STATUS:
Log: mysql-bin.
Pos:
GTID:(null) Finished dump at: -- :: # metadata 记录了备份时刻的 MASTER 信息(如果备份的是从库,还会记录 SLAVE STATUS),备份开始时间、结束时间
三、Myloader 全备恢复
shell > /usr/local/bin/myloader --help -d, --directory 指定备份数据存放目录
-o, --overwarite-tables 如表存在,则覆盖写入
-B, --database 指定恢复的数据库
-s, --source-db
-e, --enable-binlog
-h, --host
-u, --user
-p, --password
-P, --PORT
-S, --socket
-t, --threads
-C, --compress-protocol
...
shell > /usr/local/bin/myloader -u xxxx -p xxxx -B db_xxx -d /data/backup_db/-/db_xxx_05 # 这是恢复单库到一个新的 MySQL(不需要提前创建数据库),不指定 -B 时,恢复备份中的所有数据
# 恢复单表时,解压后直接 source .sql 即可
# 恢复到原库时,需要添加 -o 参数,覆盖写入
# 机器性能允许的情况下,添加 -t 参数,开启多个并行线程恢复
四、如何加快恢复速度 ?
shell > mysql -u xxxx -p xxxx mysql > show processlist; | | root | localhost | baofeng_tv | Query | | update | INSERT INTO `std_tj_sinideo` VALUES
|
| | root | localhost | baofeng_tv | Query | | update | INSERT INTO `std_alum_kwords` VALUES | | root | localhost | baofeng_tv | Query | | update | INSERT INTO `std_epode_qyi` VALUES | | root | localhost | baofeng_tv | Query | | update | INSERT INTO `std_alum_stams` VALUES
# 默认情况下,可以看到有 4 个线程在插入数据,一个线程负责一张表,执行完换下一张 ( myloader -u -p -B -d )
# 19G 的数据库恢复了 82分22秒,简直不能忍
shell > /usr/local/bin/mydumper -u root -c -e -B baofeng_tv -F -o /data/backup_db/baofeng_tv_06 -t
shell > /usr/local/bin/myloader -u root -B baofeng_tv -o -d /data/backup_db/baofeng_tv_06 -t
# -F 按大小拆分备份,恢复的时候也并没什么效果,备份速度挺快,恢复不咋地!
# 那个,快照咋搞 ?
MySQL 逻辑备份工具的更多相关文章
- mysql逻辑备份与还原工具mysqldump
(一)mysqldump介绍 mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份: 实例下的所 ...
- MySQL数据备份之逻辑备份工具mysqldump
#前言:我们知道对数据进行备份很重要,出现非正常操作可以进行对数据进行恢复,下面我们就来使用一下mysql数据库自带的一个逻辑备份工具mysqldump 1.简单概述 #mysqldump:mysql ...
- MySQL 逻辑备份mysqldump&mysqlpump&mydumper原理解析
目录 准备 mysqldump备份 mysqlpump备份 mydumper备份 想弄清除逻辑备份的原理,最好的办法是开启general_log,一探究竟 准备 创建用户 CREATE USER IF ...
- (4.12)mysql备份还原——mysql逻辑备份之mysqldump
关键词:mysql逻辑备份介绍,mysqldump,mysqldump最佳实践 我的相关文章:https://www.cnblogs.com/gered/p/9721696.html 正文 1.mys ...
- 官方出品,比 mydumper 更快的逻辑备份工具
mysqldump 和 mydumper 是我们常用的两个逻辑备份工具. 无论是 mysqldump 还是 mydumper 都是将备份数据通过 INSERT 的方式写入到备份文件中. 恢复时,myl ...
- 图解MySQL逻辑备份的实现流程
1. 摘要 数据作为一家公司的重要资产,其重要程度不言而喻.数据库为数据提供存取服务,担任着重要的角色,如果因数据误删.服务器故障.病毒入侵等原因导致数据丢失或服务不可用,会对公司造成重大损失,所以数 ...
- Mysql自动备份工具1.0(2013年11月15日更新)
Mysql自动备份工具1.0 下载地址 2013-11-15 1.解决日历控件在Windows7/8/8.1环境下遮挡按钮问题:2.解决按月备份当月没有该日期问题: 2013-11-13 1.Mysq ...
- MySQL多线程备份工具:mydumper
MySQL多线程备份工具:mydumper http://www.orczhou.com/index.php/2011/12/how-to-split-mysqldump-file/ Mydumper ...
- MongoDB 逻辑备份工具mongodump
mongodump是官方提供的一个对数据库进行逻辑导出的备份工具,导出文件为BSON二进制格式,无法使用文本编辑工具直接查看.mongodump可以导出mongod或者mongos实例的数据,从集群模 ...
随机推荐
- Vue 的自定义事件系统:实现子组件跟父组件通信
父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件 v-on 写在引用的子组件上, 语句 this.$emit('xxx') ,写在子组件里.
- hive 安装、知识点
hive 查询语句: 语句 含义 show database; 或 show schemas; 查看数据库 show tables; hive显示所有表 set; 查看hive配置信息 问题:load ...
- 分布式数据存储 shard(切片) 和 repali(副本) 的 节点数的关系。
1 , node 的 数量 应该大于等于 副本(指的是单个 shard 的 主副本+备份副本数)的 数量 ,如果 副本的数量大于 node 数量,那么 一个node 必定有2 个相同的 副本,这个多出 ...
- VS2017增加数据库连接串
新装VS2017后,按照三石提供的MVC入门教程,创建MVC应用后,能生成数据库文件(在APP_DATA目录),但无法创建连接,服务器路径一直不正确. 解决方法: 1.重新打开VS2017安装界面,选 ...
- PHP常用函数总结(一):
<?php echo "<pre>"; //===============================时间日期======================== ...
- php webservice实例(转载)
首先大家要简单了解了何谓webservice,接下来就做两个非常简单的例子,webservice还是逃不开server端(服务器端) 与client端(客户端) . 做这个测试之前,要确认你的php配 ...
- 小峰mybatis(2)mybatis传入多个参数等..
一.mybatis传入多个参数: 前面讲传入多个参数都是使用map,hashmap:key value的形式:-- 项目中开发都建议使用map传参: 比如现在通过两个参数,name和age来查询: 通 ...
- REST-assured 2发送消息代码重构
将获取token的方法封装到公共类 #java package date811; import io.restassured.response.Response; import org.testng. ...
- linux开机服务自启
有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务,主要用三种方式进行这一操作: ln -s 在/etc/rc.d/rc*.d目录中建立/etc/init.d/ ...
- Hibernate 一对多/多对多
一对多关联(多对一): 一对多关联映射: 在多的一端添加一个外键指向一的一端,它维护的关系是一指向多 多对一关联映射: 咋多的一端加入一个外键指向一的一端,它维护的关系是多指向一 在配置文件中添加: ...