4.mydumper备份

介绍

mydumper是一个逻辑备份工具,类似于mysqlpump。
mydumper比mysqldump具有以下优势:

  • 并行性(速度快)和性能(避免昂贵的字符集转换例程并且整体上具有高效的代码)。
  • 一致性。 它维护所有线程的快照,提供准确的主从日志位置,等等。 mysqlpump不保证一致性。
  • 更容易管理输出(表和转储元数据的单独文件,并且很容易查看/解析数据)。 mysqlpump将所有内容写入一个文件,这限制了加载选择性数据库对象的选项。
  • 使用正则表达式包含和排除数据库对象。
  • 用于终止阻止备份和所有后续查询的长时间运行事务的选项。

安装

源码安装

shell> yum install glib2-devel mysql-devel zlib-devel pcre-devel cmake gcc-c++ git
shell> cd /opt
shell> git clone https://github.com/maxbube/mydumper.git
shell> cd mydumper
shell> cmake .
shell> make
shell> make install

YUM安装

#YUM
shell> yum install -y "https://github.com/maxbube/mydumper/releases/download/v0.9.3/mydumper-0.9.3-41.el7.x86_64.rpm"

#APT
shell> wget "https://github.com/maxbube/mydumper/releases/download/v0.9.3/mydumper_0.9.3-41.jessie_amd64.deb"

shell> sudo dpkg -i mydumper_0.9.3-41.jessie_amd64.deb
shell> sudo apt-get install -f

备份

全备

以下命令将所有数据库备份到/backups文件夹中:

shell> mydumper --user=<user> --password=<password> --outputdir /backups

在/backups文件夹下会创建很多文件,每个数据库的CREATE DATABASE语句都为<database_name>-schema-create.sql,每个表都有自己的模式和数据文件。 模式文件存储为<database_name>.

-schema.sql,数据文件存储为<database_name>.
.sql。

视图存储为<database_name>.

-schema-view.sql。 存储的例程,触发器和事件存储为<database_name>-schema-post.sql(如果未创建目录,则使用mkdir -pv /backups):

如果有任何超过60秒的查询,mydumper将失败,并显示以下错误

(mydumper:18754): CRITICAL: There are queries in PROCESSLIST running longer than 60s, aborting dump,
use --long-query-guard to change the guard value, kill queries (–kill-long-queries) or use different server for dump

可以通过–kill-long-queries跳过长时间语句,或者通过–long-query-guard设置更长的超时时间。
–kill-long-queries选项会杀死所有大于60秒的查询或由–long-query-guard设置的值。

shell> mydumper --user=<user> --password=<password> --kill-long-queries --outputdir /backups

一致的备份

备份目录中的元数据文件包含用于一致备份的二进制日志坐标。

在主服务器上,它捕获二进制日志位置:

shell> mydumper --user=root --password=root --kill-long-queries --outputdir /app/mysql/mysqldata/backup/
shell> cat /app/mysql/mysqldata/backup/metadata

avatar

在从站上,它捕获主站和从站的二进制日志位置,自行查看

备份单表

以下命令将employees数据库的employees表备份到/backups目录中:

shell> mydumper -u root --password=<password> -B employees -T employees --triggers --events --routines  --outputdir /backups/employee_table
  • employees-schema-create.sql包含CREATE DATABASE语句
  • employees.employees-schema.sql包含CREATE TABLE语句
  • employees-schema-post.sql包含ROUTINES,TRIGGERS和EVENTS
  • employees.employees.sql包含INSERT语句形式的实际数据

根据正则备份数据库

可以使用regex选项包含/排除特定数据库。 以下命令将从备份中排除mysql和测试数据库:

shell> mydumper -u root --password=<password> --regex '^(?!(mysql|test))' --outputdir /backups/specific_dbs

利用mydumper备份超大表

要加快转储和恢复大表的速度,可以将其拆分为小块。 块大小可以通过它包含的行数来指定,每个块将被写入一个单独的文件中:

shell> mydumper -u root --password=<password> -B employees -T employees --triggers --events --routines --rows=10000 -t 8 --trx-consistency-only --outputdir /backups/employee_table_chunks
  • -t: 指定线程数
  • –trx-consistency-only: 这个参数会在备份的时候尽量采用最小化锁保证一致性
  • –rows: 将表拆分为此行数的块

非阻塞备份

为了提供一致的备份,mydumper通过执行带有READ LOCK的FLUSH TABLES获取GLOBAL LOCK。

已经看到如果有任何长时间运行的事务,使用FLUSH TABLES WITH READ LOCK是多么危险。 为避免这种情况,您可以传递–kill-long-queries选项来终止阻塞查询而不是中止mydumper。

  • –trx-consistency-only: 他的功能和mysqldump的–single-transaction一样但是包含binlog的位置,这个位置仅仅适用于事务表, 使用此选项的一个优点是全局读锁仅用于线程的协调,因此一旦启动事务就会释放它。
  • –use-savepoints: 减少元数据锁定问题

压缩备份

shell> mydumper -u root --password=<password> -B employees -T employees -t 8 --trx-consistency-only --compress --outputdir /backups/employees_compress

只备份数据

shell> mydumper -u root --password=<password> -B employees -T employees -t 8 --no-schemas --compress --trx-consistency-only --outputdir /backups/employees_data
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值