简介:

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 逻辑备份工具的更多相关文章

  1. mysql逻辑备份与还原工具mysqldump

    (一)mysqldump介绍 mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份: 实例下的所 ...

  2. MySQL数据备份之逻辑备份工具mysqldump

    #前言:我们知道对数据进行备份很重要,出现非正常操作可以进行对数据进行恢复,下面我们就来使用一下mysql数据库自带的一个逻辑备份工具mysqldump 1.简单概述 #mysqldump:mysql ...

  3. MySQL 逻辑备份mysqldump&mysqlpump&mydumper原理解析

    目录 准备 mysqldump备份 mysqlpump备份 mydumper备份 想弄清除逻辑备份的原理,最好的办法是开启general_log,一探究竟 准备 创建用户 CREATE USER IF ...

  4. (4.12)mysql备份还原——mysql逻辑备份之mysqldump

    关键词:mysql逻辑备份介绍,mysqldump,mysqldump最佳实践 我的相关文章:https://www.cnblogs.com/gered/p/9721696.html 正文 1.mys ...

  5. 官方出品,比 mydumper 更快的逻辑备份工具

    mysqldump 和 mydumper 是我们常用的两个逻辑备份工具. 无论是 mysqldump 还是 mydumper 都是将备份数据通过 INSERT 的方式写入到备份文件中. 恢复时,myl ...

  6. 图解MySQL逻辑备份的实现流程

    1. 摘要 数据作为一家公司的重要资产,其重要程度不言而喻.数据库为数据提供存取服务,担任着重要的角色,如果因数据误删.服务器故障.病毒入侵等原因导致数据丢失或服务不可用,会对公司造成重大损失,所以数 ...

  7. Mysql自动备份工具1.0(2013年11月15日更新)

    Mysql自动备份工具1.0 下载地址 2013-11-15 1.解决日历控件在Windows7/8/8.1环境下遮挡按钮问题:2.解决按月备份当月没有该日期问题: 2013-11-13 1.Mysq ...

  8. MySQL多线程备份工具:mydumper

    MySQL多线程备份工具:mydumper http://www.orczhou.com/index.php/2011/12/how-to-split-mysqldump-file/ Mydumper ...

  9. MongoDB 逻辑备份工具mongodump

    mongodump是官方提供的一个对数据库进行逻辑导出的备份工具,导出文件为BSON二进制格式,无法使用文本编辑工具直接查看.mongodump可以导出mongod或者mongos实例的数据,从集群模 ...

随机推荐

  1. Keepalived+HAProxy实现RabbtiMQ高可用的负载均衡

    HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案,包括Twitter,Reddit,StackOverflow,GitHub在 ...

  2. MySQL中character set与collation的理解(转)

    character set和collation的是什么? character set即字符集 我们常看到的UTF-8.GB2312.GB18030都是相互独立的character set.即对Unic ...

  3. Net分布式系统整体框架

    Net分布式系统之一:系统整体框架介绍 一.设计目的 从事.Net平台开发系统已有8年多了,一直思考搭建.Net分布式系统架构.基于window平台搭建的大型分布式系统不多,之前了解过myspace. ...

  4. angularjs 本地数据存储LocalStorage

    1.定义服务 //=========本地存储数据服务============ app.factory('locals', ['$window', function ($window) { return ...

  5. 如何为javascript代码编写注释以支持智能感知

    在使用Visual Studio做开发的时候,智能感知是非常方便的.从VS2008开始,提供了对javascript的智能感知支持.例如 上述代码中,我们先用document对象的getElement ...

  6. Extjs Column布局常见问题及解决方法

    原文地址:http://blog.csdn.net/weoln/article/details/4339533 第一次用Extjs的column布局时遇见了很多问题,记录下来,供大家参考.column ...

  7. thinkphp.2 thinkphp5微信支付 微信公众号支付 thinkphp 微信扫码支付 thinkphp 微信企业付款5

    前面已经跑通了微信支付的流程,接下来吧微信支付和微信企业付款接入到thinkphp中,版本是3.2 把微信支付类.企业付款类整合到一起放到第三方类库,这里我把微信支付帮助类和企业付款类放到同一个文件了 ...

  8. typedef与前向声明

    a.h: typedef struct my_struct { }my_struct_typedef; b.h: struct my_struct; typedef my_struct my_stru ...

  9. spring Annotation based configuration

    spring 注解相关 https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s11.html

  10. ALGO-4_蓝桥杯_算法训练_结点选择

    问题描述 有一棵 n 个节点的树,树上每个节点都有一个正整数权值.如果一个点被选择了,那么在树上和它相邻的点都不能被选择.求选出的点的权值和最大是多少? 输入格式 第一行包含一个整数 n . 接下来的 ...