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
错误。为避免这个错误您需要使用租户管理员账户登录数据库运行下述语句调整系统参数,导出完成后您可以修改回原值:
SET global ob_trx_timeout=1000000000,global ob_query_timeout=1000000000;
备份操作
下述示例语句展示了如何在 MySQLDump 中备份 OceanBase 数据库中的数据,运行该语句后会生成一个 SQL 格式的文件:
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 语法,所以如果不指定 |
—skip-extended-insert | 导出语句为多条 |
导出数据后,您可通过下述语句导入之前导出的数据:
source /tmp/data.sql