简介:

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. asterisk channel driver dev ref

    入口函数load_module    load_config    ast_channel_register console_tech    ast_cli_register_multiple     ...

  2. memcache 和 memcached 区别

    区别用一句话表达:Memcached (字母d可以理解为daemon)是一个服务(运行在服务器上的程序,监听某个端口),Memcache 是 一套访问Memcached的api. memcache客户 ...

  3. Oracle VM VirtualBox 虚拟机 常用快捷键

    右Ctrl+C :放大或缩小 右Ctrl+F :全屏 右Ctrl+Delete :登录 知道上面的其他就都知道了

  4. 一个spring boot集成dubbo的小例子

    请移步github,介绍和代码均在上面了:https://github.com/wuxun1997/voicebox 这里再多说两句.github上的这个小例子默认使用组播作为注册中心,你也可以把组播 ...

  5. dzzoffice协同办公平台与onlyoffice在线协作平台安装与部署

    1.安装dzzoffice协同办公平台 DzzOffice是一套开源办公套件,适用于企业.团队搭建自己的 类似“Google企业应用套件”.“微软Office365”的企业协同办公平台. 官网地址:h ...

  6. Netty源码分析之NioEventLoop(一)—NioEventLoop的创建

    一.NioEventLoop的概述 NioEventLoop做为Netty线程模型的核心部分,从本质上讲是一个事件循环执行器,每个NioEventLoop都会绑定一个对应的线程通过一个for(;;)循 ...

  7. 10个CSS+HOVER 的创意按钮

    CSS hover 样式很简单,但是想创造出有意思.实用.有创意性的特效是很考验设计师的创意能力,所以设计达人每隔一段时间都会分享一些与鼠标点击.悬停的相关特效,以便大家获得更好的创造灵感. 今天我们 ...

  8. linux 静态库文件

    1.生成目标文件 gcc -o mylib.o -c mylib.c 2.生成静态库文件 ar rcs libmylib.a mylib.o 查看库信息: nm libmylib.a //====== ...

  9. Log4j2的基本使用

    Log4j2是Log4j1.x的的升级版,其中也有很大的不同,最大的区别就是由以前的properties配置文件改为xml/json/yaml配置文件. 其中配置文件的位置官方说明如下: Log4j ...

  10. BASIC-25_蓝桥杯_回形取数

    示例代码: #include <stdio.h>#define N 200 int main(void){ int num[N][N]; int i= 0, j = 0 , k = 0 , ...