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实例的数据,从集群模 ...
随机推荐
- spring 自带框架及可替换框架
spring 自带框架 可替换框架 (可替换框架)是否推荐使用 spring security shiro 推荐使用 spring aop aspectj 集成aspectj使用 Shiro 对比 S ...
- winform 子窗体刷新父窗体的数据
建一个接口 比如 iMainForm接口内声明个方法 比如 Refresh()主窗体 实现这个接口 主窗体打开子窗体时这样写 子窗体.Owner = this;子窗体.ShowDialog(); -- ...
- JSP 执行流程
一.jsp执行流程 1. 发送请求 ,请求访问jsp文件. 2. 服务器(Tomcat)提供的jsp parser 解析器解将jsp转化为java文件. jsp本质上是一个servlet. 3.ser ...
- [转]使用Nginx实现反向代理
使用Nginx实现反向代理 解释 正向代理的概念 正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问 ...
- 重置SQL Server sa密码
查询分析器,连接时,身份验证使用"使用windows身份验证" 然后,执行: EXEC sp_password NULL, '新密码', 'Sa'
- PHP常用函数总结(一):
<?php echo "<pre>"; //===============================时间日期======================== ...
- java newInstance() 的参数版本与无参数版本详解
newInstance() 的参数版本与无参数版本详解 博客分类: Core Java 通过反射创建新的类示例,有两种方式: Class.newInstance() Constructor.new ...
- BASIC-16_蓝桥杯_分解质因数
代码示例: #include <stdio.h> int i = 0 ;int Primes(int a){ for (i = 2 ; i <= a/2 ; i ++) { if ( ...
- var_dump() 查看字符的类型 方法
- appiu 笔记
1.要在手机上输入字符, 要屏蔽手机键盘 于是可以想办法屏蔽软键盘,只需在desired_caps{}设置里面加两个参数 unicodeKeyboard是使用unicode编码方式发送字符串reset ...