OceanBase 数据库兼容 MySQL 协议,所以可以使用 MySQLDump 对 OceanBase 数据库中的数据进行备份。MySQLDump 是 MySQL 自带的逻辑备份工具。它的备份原理是通过协议连接到数据库后,将需要备份的数据查询出来,并将查询出的数据转换成对应的 INSERT 语句。当我们需要还原这些数据时,只要执行这些 INSERT 语句,即可将对应的数据还原。

推荐版本

系统

版本

Linux

MySQLDump Ver 10.13 Distrib 5.6.37, for Linux (x86_64)

MacOS

MySQLDump Ver 10.13 Distrib 5.7.21, for macos10.13 (x86_64)

注意事项

  • 使用 MySQLDump 仅支持导出 OceanBase 数据库 MySQL 模式实例中的数据。

  • 不支持锁库和表 Dump。

  • 当您需要导出的数据量较多时,可能会报出 TIMEOUT 4012 错误。为避免这个错误您需要使用租户管理员账户登录数据库运行下述语句调整系统参数,导出完成后您可以修改回原值:

  1. obclient> SET GLOBAL ob_trx_timeout=1000000000,GLOBAL ob_query_timeout=1000000000;

备份操作

下述示例语句展示了如何在 MySQLDump 中备份 OceanBase 数据库中的数据,运行该语句后会生成一个 SQL 格式的文件:

  1. MySQLDump -h xx.xx.xx.xx -P2883 -u 'user@tenantname#clustenamer' -ppassword --skip-triggers --databases db1 db2 db3 --skip-extended-insert > /tmp/data.sql

下述表格为上述备份语句的参数说明:

参数

说明

—host(-h)

服务器 IP 地址。

—port(-P)

服务器端口号。

—user(-u)

MySQL 用户名。

—pasword(-p)

MySQL 密码。

-d

仅导出表结构不导出数据。

—databases

指定要备份的数据库。

—all-databases

备份所有数据库,不推荐使用,建议单独指定。

—compact

压缩模式,产生更少的输出。

—comments

添加注释信息。

—complete-insert

输出完成的插入语句。

—force

忽略错误。

—skip-triggers

OceanBase 数据库目前不支持 trigger 语法,所以如果不指定 —force 参数时必须要加上该参数,否则无法导出。

—skip-extended-insert

导出语句为多条 INSERT 格式,否则为 INSERT INTO table VALUES(…),(…), 格式。

导出数据后,您可通过下述语句导入之前导出的数据:

  1. source /tmp/data.sql