MyDumper是一个MySQL逻辑备份工具。它有 2 个工具:
mydumper
负责导出 MySQL 数据库的一致备份myloader
从 mydumper 读取备份,连接到目标数据库并导入备份。这两个工具都使用多线程功能。
MyDumper 是开源的,由社区维护,它不是 Percona、MariaDB 或 MySQL 产品。
官方文档(正在进行中)
此部分已迁移
首先从发布部分获取正确的 url,然后:
release= $( curl -Ls -o /dev/null -w %{url_effective} https://github.com/mydumper/mydumper/releases/latest | cut -d ' / ' -f8 )
yum install https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper- ${release : 1} .el7.x86_64.rpm
yum install https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper- ${release : 1} .el8.x86_64.rpm
对于ubuntu,需要安装依赖项:
apt-get install libatomic1
然后您可以下载并安装该包:
release= $( curl -Ls -o /dev/null -w %{url_effective} https://github.com/mydumper/mydumper/releases/latest | cut -d ' / ' -f8 )
wget https://github.com/mydumper/mydumper/releases/download/ ${release} /mydumper_ ${release : 1} . $( lsb_release -cs ) _amd64.deb
dpkg -i mydumper_ ${release : 1} . $( lsb_release -cs ) _amd64.deb
通过使用 pkg
pkg install mydumper
或从港口
cd /usr/ports/databases/mydumper && make install
通过使用自制程序
brew install mydumper
考虑到 mydumper.cnf 文件将位于 /usr/local/etc 或 /opt/homebrew/etc 上。因此,您可能需要使用以下命令运行 mydumper/myloader:
mydumper --defaults-file=/opt/homebrew/etc/mydumper.cnf
myloader --defaults-file=/opt/homebrew/etc/mydumper.cnf
apt-get install cmake g++ git
yum install -y cmake gcc gcc-c++ git make
sudo port install cmake pkgconfig
apt-get install libglib2.0-dev zlib1g-dev libpcre3-dev libssl-dev libzstd-dev
yum install -y glib2-devel openssl-devel pcre-devel zlib-devel libzstd-devel
zypper install glib2-devel libmysqlclient-devel pcre-devel zlib-devel
sudo port install glib2 pcre
您需要选择一个供应商开发库。
apt-get install libmysqlclient-dev
apt-get install libperconaserverclient20-dev
apt-get install libmariadbclient-dev
yum install -y mysql-devel
yum install -y Percona-Server-devel-57
yum install -y mariadb-devel
CentOS 7 默认带有非常旧的 MariaDB 5.5 库。最好下载这些库的更新版本(MariaDB、MySQL、Percona 等)。
zypper install libmysqlclient-devel
sudo port install mariadb-10.11
sudo port select mysql
跑步:
cmake .
make
sudo make install
必须确保 pkg-config、mysql_config、pcre-config 都在 $PATH 中
默认情况下禁用 Binlog 转储,要使用它进行编译,您需要将 -DWITH_BINLOG=ON 添加到 cmake 选项
要针对 mysql libs < 5.7 进行构建,您需要添加 -DWITH_SSL=OFF 来禁用 SSL
您可以下载官方 docker 映像,也可以从本地源或使用提供的 Dockerfile 直接从 Github 源构建 Docker 映像。
docker build --build-arg CMAKE_ARGS= ' -DWITH_ZSTD=ON ' -t mydumper github.com/mydumper/mydumper
请记住,Dockerfile 解决的主要目的是从本地源代码进行开发和构建。对于分发目的来说,它可能不是最佳的,但也可以作为一种快速构建和运行上述单行的解决方案。
查看用法
这一切都是按照 MySQL 最佳实践和传统完成的:
目前,这并没有为非事务性引擎提供一致的快照 - 预计在 0.2 中提供支持:)
一旦可以使用 --regex 功能,例如不转储 mysql、sys 和 test 数据库:
mydumper --regex ' ^(?!(mysql.|sys.|test.)) '
仅转储 mysql 和测试数据库:
mydumper --regex ' ^(mysql.|test.) '
不转储以 test 开头的所有数据库:
mydumper --regex ' ^(?!(test)) '
转储不同数据库中的特定表(注意:表名应以 $. 结尾相关问题):
mydumper --regex ' ^(db1.table1$|db2.table2$) '
如果你想转储几个数据库但丢弃一些表,你可以这样做:
mydumper --regex ' ^(?=(?:(db1.|db2.)))(?!(?:(db1.table1$|db2.table2$))) '
这将转储 db1 和 db2 中的所有表,但会排除 db1.table1 和 db2.table2
当然,正则表达式功能可用于描述几乎任何表列表。
您可以使用 --exec 执行外部命令,如下所示:
mydumper --exec " /usr/bin/gzip FILENAME "
--exec是单线程的,与Stream类似的实现。 exec 程序必须是绝对路径。 FILENAME 将替换为您要处理的文件名。您可以在任何地方设置 FILENAME 作为参数。
默认文件(又名:--defaults-file 参数)在 MyDumper 中开始变得更加重要
[mydumper]
host = 127.0.0.1
user = root
password = p455w0rd
database = db
rows = 10000
[myloader]
host = 127.0.0.1
user = root
password = p455w0rd
database = new_db
innodb-optimize-keys = AFTER_IMPORT_PER_TABLE
v0.14.0-1 之前的版本:
[mydumper_variables]
wait_timeout = 300
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[myloader_variables]
long_query_time = 300
innodb_flush_log_at_trx_commit = 0
从 v0.14.0-1 开始:
[mydumper_session_variables]
wait_timeout = 300
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[mydumper_global_variables]
sync_binlog = 0
slow_query_log = OFF
[myloader_session_variables]
long_query_time = 300
[myloader_global_variables]
sync_binlog = 0
innodb_flush_log_at_trx_commit = 0
[ ` db ` . ` table ` ]
where = column > 20
limit = 10000
[ ` myd_test ` . ` t ` ]
columns_on_select=qty,price+20
columns_on_insert=qty,price
重要提示:当使用不需要参数的选项时,例如:--no-data 或 --events,您需要为那些始终指示:TRUE/ON/ENABLE 的变量设置任何值。如果您认为添加--no-data=0
会导出数据,那么这是一个错误:
[mydumper]
no-data=0
由于未指定任何数据,因此不会导出数据。