作者:deng_xiaomi | 来源:互联网 | 2023-09-17 20:21
本次测试通过oms测试,迁移mysql数据到ob数据库。
本次测试使用sysbench初始化数据库,并模拟在线业务,分别测试了结构迁移,全量迁移,增量迁移,全量校验。
本次测试,已经正确配置源数据,目标数据,OCP相关信息。
OMS部署:https://www.modb.pro/db/332629
OMS迁移配置,添加源和目标数据库,OCP:https://www.modb.pro/db/334459
1,源数据库信息
192.168.6.61-主库 测试连接成功
数据库版本: MYSQL 5.7.22 |
字符集:utf8mb4 |
1.1 创建测试数据库
用sysbench初始化测试数据库。
#新建测试数据库:
mysql> create database loadtest default character set utf8mb4;
Query OK, 1 row affected (0.00 sec)
#初始化数据
[root@i-AAB0CE27 ~]# sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --db-driver=mysql --mysql-db=loadtest --mysql-user=root --mysql-password='root' --mysql-port=3306 --mysql-host=192.168.6.61 --oltp-tables-count=10 --oltp-table-size=10000 --num-threads=20 prepare
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
WARNING: --num-threads is deprecated, use --threads instead
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Creating table 'sbtest1'...
Inserting 10000 records into 'sbtest1'
Creating secondary indexes on 'sbtest1'...
Creating table 'sbtest2'...
Inserting 10000 records into 'sbtest2'
Creating secondary indexes on 'sbtest2'...
Creating table 'sbtest3'...
Inserting 10000 records into 'sbtest3'
Creating secondary indexes on 'sbtest3'...
Creating table 'sbtest4'...
Inserting 10000 records into 'sbtest4'
Creating secondary indexes on 'sbtest4'...
Creating table 'sbtest5'...
Inserting 10000 records into 'sbtest5'
Creating secondary indexes on 'sbtest5'...
Creating table 'sbtest6'...
Inserting 10000 records into 'sbtest6'
Creating secondary indexes on 'sbtest6'...
Creating table 'sbtest7'...
Inserting 10000 records into 'sbtest7'
Creating secondary indexes on 'sbtest7'...
Creating table 'sbtest8'...
Inserting 10000 records into 'sbtest8'
Creating secondary indexes on 'sbtest8'...
Creating table 'sbtest9'...
Inserting 10000 records into 'sbtest9'
Creating secondary indexes on 'sbtest9'...
Creating table 'sbtest10'...
Inserting 10000 records into 'sbtest10'
Creating secondary indexes on 'sbtest10'...
2,结构迁移测试
2.1 选择结构迁移
迁移类型选择结构迁移。
2.2 任务状态检查
2.3 目标库,检查确认
登录目标数据库确认,目标数据库,已经正确建立了源数据库的所有表。
[root@i-405104EB ~]
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3221633905
Server version: 5.7.25 OceanBase 3.1.0 (r-) (Built May 30 2021 11:21:29)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> use loadtest;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MySQL [loadtest]> show tables;
+--------------------+
| Tables_in_loadtest |
+--------------------+
| sbtest1 |
| sbtest10 |
| sbtest2 |
| sbtest3 |
| sbtest4 |
| sbtest5 |
| sbtest6 |
| sbtest7 |
| sbtest8 |
| sbtest9 |
+--------------------+
10 rows in set (0.00 sec)
MySQL [loadtest]>
3,全量迁移测试
在源数据库静止状态,或者不考虑增量数据的情况可以考虑采用本迁移方法。
3.1 全量迁移和全量校验
3.2 任务状态检查
3.3 数据全量校验
3.3.1 确认数据校验阶段
3.3.2 检查数据校验信息
确认每个表的数据一致性。
3.3.3 启动正向切换
启动正向切换##此步骤不会停止链路,仅确认即将开始执行切换流程
启动正向切换前请确保源端数据源为即将停写或者已经停写状态
需要手动标记完成,确认处理Trigger/Sequence等对象迁移目标端。
3.3.4 迁移完成,释放任务资源
#确认迁移完成
#释放资源
4,增量数迁移测试4.1 运行sysbench不断读写数据库
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/insert.lua --db-driver=mysql --mysql-db=loadtest --mysql-user=root --mysql-password='' --mysql-port=3306 --mysql-host= --oltp-tables-count=10 --oltp-table-size=1000 --max-time=3600 --max-requests=0 --num-threads=10 --report-interval=3 --rate=20 --forced-shutdown=1 run
4.2 启动数据库同步
4.3 检查任务状态
4.4 增量迁移状态检查
可以监控数据库增量延迟时间:。
迁移任务详细信息。
4.5 停止sysbench数据的读写操作
4.6 检查增量同步状态
确认数据库延迟为0,进行数据校验。
#开始数据校验
#数据校验结果
4.8 启动正向切换
#本过程主要涉及停业同步,数据追平相关操作。
Step 1 启动正向切换此步骤不会停止链路,仅确认即将开始执行切换流程
Step 2 切换预检查检查当前项目状态是否具备切换条件
Step 3 确认源端停写确认源端无增量数据产生
Step 4 确认同步追平停写位点OMS自动检查源端与目标端处于一致位点
Step 5 停止正向同步停止源端到目标端的JDBCWriter
Step 6 执行数据库对象处理完成数据库对象迁移,删除数据迁移附加对象并补充执行未迁移数据库对象
4.9 迁移完成,结束任务
#迁移任务结束
#释放任务资源
#确认资源释放