MySQL 逻辑备份神器

简介:

Mydumper、Myloader 是一个第三方的、开源的 MySQL 逻辑备份工具。

支持多线程,比起 mysqldump 要快很多,也能解决 innobackupex 备份工具对 MyISAM 引擎备份的不便。

多线程快速逻辑备份,支持快照功能。

下载地址: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.1.tar.gz
shell > cd mydumper-0.9.1
shell > cmake . && make && make install

shell > /usr/local/bin/mydumper --help
/usr/local/bin/mydumper: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

shell > find / -name "libmysqlclient.so.18"
/usr/local/src/mysql-5.5.52/libmysql/libmysqlclient.so.18
/usr/local/mysql-5.5.52/lib/libmysqlclient.so.18

shell > ln -s /usr/local/mysql-5.5.52/lib/libmysqlclient.so.18 /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  快照间隔时间,默认 60 秒
-h, --host
-u, --user
-p, --password
-P, --PORT
-S, --socket
-t, --threads            启动几个线程,默认 4
-C, --compress-protocol  MySQL 连接上使用压缩协议,建议远程备份时使用
...                      还有一些不常用的指令 通过 --help 获取
shell > /usr/local/bin/mydumper -u xxxx -p xxxx -e -c -B db_xxx -o /data/backup_db/2017-07/db_xxx_05  # 目录 db_xxx_05 会自动创建

shell > ls -1 /data/backup_db/2017-07/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/2017-07/db_xxx_05/metadata
Started dump at: 2017-07-05 14:57:56
SHOW MASTER STATUS:
    Log: mysql-bin.000024
    Pos: 760137384
    GTID:(null)

Finished dump at: 2017-07-05 15:01:20

# 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/2017-07/db_xxx_05

# 这是恢复单库到一个新的 MySQL(不需要提前创建数据库),不指定 -B 时,恢复备份中的所有数据
# 恢复单表时,解压后直接 source .sql 即可
# 恢复到原库时,需要添加 -o 参数,覆盖写入
# 机器性能允许的情况下,添加 -t 参数,开启多个并行线程恢复

# 那个,快照咋搞 ?

时间: 2024-10-26 04:10:56

MySQL 逻辑备份神器的相关文章

mysql逻辑备份2种方案

mysql逻辑备份方案: 针对db进行逻辑备份(由于数据量较小,正在生产环境使用). mysql_backup.sh #!/bin/bash date=`date +%F-%H-%M` mkdir /opt/backup/${date} -p usesize=`du -s /opt/mysql |cut -f 1` biaozhun=`df  /opt/ |awk 'END{print ("'$usesize'"+$3)/$2*100+0.5}'|cut -d. -f1` ip=`gr

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

关键词:mysql逻辑备份介绍,mysqldump 1.mysql逻辑备份介绍 [1.1]备份内容:数据库的结构定义语句+数据内容的插入语句,备份出来的文件可以编辑 [1.2]使用场景:数据量较少的库,比较适合100G数据量以内的 逻辑备份的特点 (1)sql语句组成的文件,可以编辑截取部分单独使用. (2)备份文件比物理文件小 (3)可以细化到表/表的内容 (4)速度慢 (5)可以跨平台恢复/迁移 2.逻辑备份工具 [1.1]mysqldump(单线程).mysqlpump(多线程,5.7以后

MySQL逻辑备份利器-mydumper

关于mydumper的简介和下载请访问:https://launchpad.net/mydumper 简言之,mydumper是多线程逻辑备份,对于表和数据量很大的情况下,建议使用mydumper提高备份效率,比mysqldumper要快很多. 我为什么要用mydumper?是基于某个需求,比如我需要把某个库下的所有按日期分表的表备份并导入到新实例?如何实现? table_20170101 table_20170102 ...... table_20171231 一共三百多张表 开始我去尝试my

MySQL逻辑备份mysqldump

一个用mysqldump做逻辑备份的小脚本 用于小数据量的备份,全库,按日期,按库,按表,进行分类 # date -s "2015/01/01" && bash mybackup.sh #!/bin/bash # 使用mysqldump进行逻辑备份 # 目录结构/backup/日期 # 每隔7天删除旧的备份目录 db_backup_root="/backup" today=`date +%Y%m%d` old_backup_dir=`date -d

mysql逻辑备份与还原工具mysqldump

(一)mysqldump介绍 mysqldump是MySQL自带的逻辑备份工具,类似于Oracle的expdp/impdp,mysqldump备份十分灵活,可以在以下级别对数据库进行备份: 实例下的所有数据库 某个或某几个数据库 某个数据库中的表 某个数据库中的表的某些记录 mysqldump的备份结果集有两种文件:一种是将数据转换为标准的SQL语句,另一种是按照指定的分隔符,输出为特定格式的平面文件. (二)mysqldump的用法 可以直接使用mysqldump命令查看mysqldump的用

mysql逻辑备份

逻辑备份一般用于数据迁移或者数据量很小事,逻辑备份采用的是数据导出的备份方式. 如果需要导出所有数据库,命令如下: mysqldump -uroot -p --single-transaction -A>all.sql 如果只是要导出其中的某几个数据库,则采用如下命令: mysqldump -uroot -p --single-transaction -B test1 test2>test1_test2.sql 如果要是导出的是一个库中的某几个表,可采用如下命令: mysqldump -uro

mysql逻辑备份(mysql dump的使用)

mysqldump 属于MySQL客户端工具 mysqldump备份工具对于MyISAM存储引擎实现备份是温备份,对innodb存储引擎是可以实现热备份. 使用mysqldump备份数据库可以实现完全备份 + 二进制日志文件,这样也算是完全备份 + 增量备份. 首先将这个数据库备份下来这就是完全备份,然后以后数据的变化再每天进行对二进制日志进行备份这就是增量备份. mysqldump命令的使用: 用法mysqldump  + 选项  +要备份的数据库 常用选项: db_name:      备份

(十二)MySQL逻辑备份mysqldump

(1)简介 语法 mysqldump -h服务器 -u用户名 -p密码 [-P端口号] [参数] 数据库名 >备份文件.sql 关于数据库: -A,--all-databases 所有库,会生成DDL语句(创建数据库的语句和进入数据库的语句,导入的时候不需要指定数据) test 数据库,没有指定其它参数,导入到数据的时候需要指定导入到哪个数据库,不会生成创建数据库的DDL语句,mysql -uroot -predhat testdb <1.sql test t1 t2 test数据库的表t1和

MySQL的逻辑备份(mydumper+mysqldump)

虽说MySQL的逻辑备份经常会由于锁表等缺陷遭到诟病, 实际上在停机窗口时间内, 如果数据量不是太高的话, 做逻辑备份还是挺简单的~ 准备工作:1. 目标库(从这个库备份数据)先要有足够权限的账号(临时的root就可以了~用完就删);2. 对应的工具要安装好, 如mydumper;3. 准备好脚本/命令, 不放心就在测试环境演练一下~ 一切准备就绪之后就可以等停机了~ 这里记下备份&恢复用的命令: 备份: nohup mysqldump -h<host> -u<user>