利用mydumper从MySQL迁移数据到OceanBase数据库命令记录
一:中转服务器环境准备
1、下载安装包。
请根据需要在 下载安装包 中,下载对应的安装包并安装。
2、在数据库主机上解压缩安装包。
以 mydumper-0.12.7-2-zstd.el7.x86_64.rpm
为示例。
rpm2cpio mydumper-0.12.7-2-zstd.el7.x86_64.rpm | cpio -div
-
验证是否正确安装。
./usr/bin/mydumper --help
在备份目的文件夹中,会生成
metadata
文件和对应的表结构或表数据文件。
二:备份操作
备份全库
mydumper -h xx.xx.xx.xx -P3306 -u username -p ****** -o /data/backup/mysql/
备份指定数据库 test
mydumper -h xx.xx.xx.xx -P3306 -u username -p ****** -B test -o /data/backup/mysql/
备份指定数据库指定表(t1,t2)
mydumper -h xx.xx.xx.xx -P3306 -u username -p ****** -B test -T t1,t2 -o /data/backup/mysql/
仅备份表数据
mydumper -h xx.xx.xx.xx -P3306 -u username -p ****** -B test -T t1 -m -o /data/backup/mysql/
备份 t1 表的数据,开并行和数据压缩
mydumper -h xx.xx.xx.xx -P3306 -u username -p ****** -B test -T t1 -t 6 -c -o /data/backup/mysql/
三:恢复操作
禁用外键检查约束
在备份的表结构语句里,可能包含外键。在导入 OceanBase MySQL 里时,如果外键依赖的表没有创建,导入脚本会报错,因此在导入之前需要禁用外键检查约束。
MySQL [oceanbase]> SET GLOBAL foreign_key_checks=off;
Query OK, 0 rows affected
MySQL [oceanbase]> SHOW GLOBAL VARIABLES LIKE '%foreign%';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| foreign_key_checks | OFF |
+--------------------+-------+
1 row in set
备份数据后,您可通过 source
命令或 myloader
命令恢复数据。
使用 source 命令恢复数据
若无法直接还原单表,可以找到对应的单表 sql 文件,进入命令行,使用 source
命令恢复数据。
source test.t1-schema.sql 还原表结构
source test.t1.00000.sql 还原表数据
使用 myloader 命令恢复数据
-
导入表结构和数据。
myloader -h xx.xx.xx.xx -P2883 -u 'user@tenantname#clustenamer' -p ****** -B test -o -d /data/backup/mysql/
-
导入数据库(若目标库不存在则会新建)。
myloader -h xx.xx.xx.xx -P2883 -u 'user@tenantname#clustenamer' -p ****** -B test -s test1 -o -d /data/backup/mysql/
更多关于 mydumper 和 myloader 的使用方法,请参见 https://github.com/mydumper/mydumper。
四、oceanbase 删除数据库
在OceanBase中,删除数据库的操作通常意味着要删除数据库实例。OceanBase不支持直接删除数据库这一概念,而是需要通过删除数据库实例来完成数据库的“删除”操作。
在OceanBase中删除数据库实例的操作通常需要DBA权限。以下是删除OceanBase数据库实例的基本步骤:
-
登录到OceanBase数据库管理系统。
-
确认要删除的数据库实例及其内容。
-
执行删除实例的命令。
这里是一个示例SQL命令,用于删除OceanBase数据库实例:
DROP DATABASE IF EXISTS `your_database_name`;