zoukankan      html  css  js  c++  java
  • 【备份工具】mydumper

    Mydumper主要特性:是一个针对MySQL的高性能多线程备份和恢复工具,开发人员主要来自MySQL,Facebook,SkySQL公司。


    特性:
    1:轻量级C语言写的
    2:执行速度比mysqldump快10倍
    3:事务性和非事务性表一致的快照(适用于0.2.2以上版本)
    4:快速的文件压缩
    5:支持导出binlog
    6:多线程恢复(适用于0.2.1以上版本)
    7:以守护进程的工作方式,定时快照和连续二进制日志(适用于0.5.0以上版本)
    8:开源 (GNU GPLv3)

    安装地址及安装方法:
    yum install glib2-devel mysql-devel zlib-devel pcre-devel zlib gcc-c++ gcc cmake -y
    wget https://launchpadlibrarian.net/225370879/mydumper-0.9.1.tar.gz
    tar xf mydumper-0.9.1.tar.gz
    cd mydumper-0.9.1/
    cmake .
    make && make install


    下面是percona-xtrabackup和mydumper压缩备份后的大小:
    [root@test-5-69 bak]# du -sh *
    3.3G 2017-02-09_04-00-02
    3.3G 2017-02-10_04-00-02
    3.3G 2017-02-11_04-00-02
    3.3G 2017-02-12_04-00-02
    3.3G 2017-02-13_04-00-02
    3.3G 2017-02-14_04-00-02
    3.3G 2017-02-15_04-00-02
    852M all_20170215


    在测试库中使用的优势:
    mydumper导出的形式是每个表一个文件,对开发和测试误操作恢复十分有效。而percona-xtrabackup是对全库,恢复也是全库。 对单个表误操作恢复繁琐。


    mydumper备份后的存储格式:
    [root@test-5-69 all_20170215]# ls
    jxcommoninfo.orderinfo-schema.sql.gz jxorder.ord_OrderCount.sql.gz metadata
    jxcommoninfo.orderinfo.sql.gz jxorder.ord_OrderExchangeCodeDetail-schema.sql.gz mysql.columns_priv-schema.sql.gz
    jxcommoninfo-schema-create.sql.gz jxorder.ord_OrderExchangeCodeDetail.sql.gz mysql.db-schema.sql.gz
    jxorder.checksums-schema.sql.gz jxorder.ord_OrderExt-schema.sql.gz mysql.db.sql.gz
    jxorder.dsns-schema.sql.gz jxorder.ord_OrderExt.sql.gz mysql.event-schema.sql.gz
    jxorder.dsns.sql.gz jxorder.ord_OrderMarkLog-schema.sql.gz mysql.func-schema.sql.gz
    jxorder.dz_packingMaterialsOrder-schema.sql.gz jxorder.ord_OrderMark-schema.sql.gz mysql.help_category-schema.sql.gz


    [root@test-5-69 all_20170215]# mydumper --help
    Application Options:
    -B, --database 需要备份的数据库,一个数据库一条命令备份,要不就是备份所有数据库,包括mysql。
    -T, --tables-list 需要备份的表,用逗号分隔。
    -o, --outputdir 备份文件目录
    -s, --statement-size 生成插入语句的字节数,默认1000000,这个参数不能太小,不然会报 Row bigger than statement_size for tools.t_serverinfo
    -r, --rows 试图用行块来分割表,该参数关闭--chunk-filesize
    -F, --chunk-filesize 行块分割表的文件大小,单位是MB
    -c, --compress 压缩输出文件
    -e, --build-empty-files 即使表没有数据,也产生一个空文件
    -x, --regex 正则表达式匹配,如'db.table'
    -i, --ignore-engines 忽略的存储引擎,用逗号分隔
    -m, --no-schemas 不导出表结构
    -d, --no-data 不导出表数据
    -G, --triggers 导出触发器
    -E, --events 导出事件
    -R, --routines 导出存储过程
    -k, --no-locks 不执行共享读锁 警告:这将导致不一致的备份
    --less-locking 减到最小的锁在innodb表上.
    -l, --long-query-guard 设置长查询时间,默认60秒,超过该时间则会报错:There are queries in PROCESSLIST running longer than 60s, aborting dump
    -K, --kill-long-queries kill掉长时间执行的查询,备份报错:Lock wait timeout exceeded; try restarting transaction


    -D, --daemon 启用守护进程模式
    -I, --snapshot-interval dump快照间隔时间,默认60s,需要在daemon模式下
    -L, --logfile 使用日志文件,默认标准输出到终端
    --tz-utc 备份的时候允许备份Timestamp,这样会导致不同时区的备份还原会出问题,默认关闭,参数:--skip-tz-utc to disable.
    --skip-tz-utc
    --use-savepoints 使用保存点记录元数据的锁信息,需要SUPER权限
    --success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn't exist
    --lock-all-tables 锁全表,代替FLUSH TABLE WITH READ LOCK
    -U, --updated-since Use Update_time to dump only tables updated in the last U days
    --trx-consistency-only Transactional consistency only
    -h, --host The host to connect to
    -u, --user Username with privileges to run the dump
    -p, --password User password
    -P, --port TCP/IP port to connect to
    -S, --socket UNIX domain socket file to use for connection
    -t, --threads 备份执行的线程数,默认4个线程
    -C, --compress-protocol 在mysql连接上使用压缩协议
    -V, --version Show the program version and exit
    -v, --verbose 更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2


    [root@test-5-69 all_20170215]# myloader --help
    Application Options:
    -d, --directory 备份文件所在的目录
    -q, --queries-per-transaction 每个事务的query数量, 默认1000
    -o, --overwrite-tables 如果表存在则先删除,使用该参数,需要备份时候要备份表结构,不然还原会找不到表
    -B, --database 指定需要还原的数据库
    -s, --source-db 还原的数据库
    -e, --enable-binlog 启用二进制日志恢复数据
    -h, --host The host to connect to
    -u, --user Username with privileges to run the dump
    -p, --password User password
    -P, --port TCP/IP port to connect to
    -S, --socket UNIX domain socket file to use for connection
    -t, --threads 使用的线程数量,默认4
    -C, --compress-protocol 连接上使用压缩协议
    -V, --version Show the program version and exit
    -v, --verbose 更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2


    #!/bin/sh
    . /etc/profile


    DIR='/my/bak/'
    DATE=`date +%Y%m%d_%H-%M`

    /usr/local/bin/mydumper -c -o $DIR$DATE

    find $DIR -mindepth 1 -maxdepth 1 -type d -mtime +3 -exec rm -rf {} ;

  • 相关阅读:
    从.Net迁移到.Net Core时,需要注意的兼容性变更
    P/Invoke各种总结(五、在C#中使用指针类型)
    P/Invoke各种总结(四、平台调用时的数据类型对应)
    解决Visual Studio 2017/2019 "const char *"类型的值不能用于初始化"char *"类型的实体的问题
    .Net Framework、.Net Core和.Net Standard的区别
    C#代码分析工具Style Cop使用
    《代码不朽:编写可维护软件的10大要则(C#版)》读书笔记
    Visual C++中宽字节与多字节字符互相转换的方法
    浮动和定位
    关于如何设置图片大小和图片形状
  • 原文地址:https://www.cnblogs.com/hankyoon/p/11012677.html
Copyright © 2011-2022 走看看