OB入門實踐4-遷移 MySQL 資料到 OceanBase 叢集
阿新 • • 發佈:2021-12-25
遷移 MySQL 資料到 OceanBase 叢集
實踐練習四(必選):遷移 MySQL 資料到 OceanBase 叢集
歷史實踐題回顧
練習目的
本次練習目的掌握從 MySQL 向 OceanBase 遷移資料的基本方法:mysqldump、datax 、canal 等。
練習內容
請記錄並分享下列內容:
- (必選)使用 mysqldump 將 mysql的表結構和資料同步到 OceanBase 的MySQL 租戶中。
- (必選)使用 datax 配置至少一個表的 MySQL 到 OceanBase 的 MySQL 租戶的離線同步。
- (可選)使用 datax 配置至少一個表的 OceanBase 到 CSV 以及 CSV 到 OceanBase 的離線同步。
- (可選)使用 canal 配置 MySQL 的增量同步到 OceanBase 的 MySQL 租戶。
具體實現
準備實驗資料
unzip -qo tpcc-mysql-master.zip
cd tpcc-mysql-master/src
make
生成tpcc_load和 tpcc_start 二進位制檔案
將資料匯入到源端(MySQL)
建立tpcc資料庫
CREATE DATABASE `tpcc` DEFAULT CHARACTER SET utf8;
匯入表物件
# grep -ci 'create table' create_table.sql
mycli tpcc <./create_table.sql
mycli tpcc -e "show tables;"
載入批量資料(tpcc_load)
./tpcc_load -h progs -P 3308 -d tpcc -u root -w 1
## 用法 ]# ./tpcc_load -h ************************************* *** TPCC-mysql Data Loader *** ************************************* ./tpcc_load: option requires an argument -- 'h' Usage: tpcc_load -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouses -l part -m min_wh -n max_wh * [part]: 1=ITEMS 2=WAREHOUSE 3=CUSTOMER 4=ORDERS
-
查看錶記錄數
SELECT TABLE_NAME,DATA_LENGTH,INDEX_LENGTH,(DATA_LENGTH+INDEX_LENGTH) as length,TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2), 'MB') as total_size FROM information_schema.TABLES WHERE TABLE_SCHEMA='tpcc' order by length desc ;
使用 mysqldump 將 mysql的表結構和資料同步到 OceanBase 的MySQL 租戶
僅匯出表結構(MySQL源端)
mysqldump -h progs -uroot -proot -P3308 -d tpcc --set-gtid-purged=OFF --compact > tpcc_ddl.sql
檢查檔案中是否存在特殊語法|變數等
grep -Ei "SQL_NOTES|DEFINER|MAX_ROWS" tpcc_ddl.sql
僅匯出表資料(MySQL源端)
mysqldump -h progs -uroot -P3308 --set-gtid-purged=OFF -t tpcc > tpcc_data.sql
資料同步到Oceanbase MySQL租戶
obclient連線到MySQL租戶中並建立資料庫tpcc
obclient -hprogs -uroot@pay_mysql_tat#obce -P2883 -c -A
create database tpcc;
匯入表物件
obclient -hprogs -uroot@pay_mysql_tat#obce -P2883 -c -A tpcc
MySQL [tpcc]> source /tmp/tpcc_ddl.sql
匯入表資料
-- 先禁用外來鍵約束
MySQL [tpcc]> set global foreign_key_checks=off;
MySQL [tpcc]> show global variables like '%foreign%';
MySQL [tpcc]> source /tmp/tpcc_data.sql
檢查兩端資料量
使用datax (離線)從 MySQL 同步表資料到 OceanBase
使用 datax 配置至少一個表的 MySQL 到 OceanBase 的 MySQL 租戶的離線同步
部署datax軟體
# 下載 datax
wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
# 解壓
tar -xf datax.tar.gz
cd datax
# 刪除datax中的隱藏檔案
find ./datax/plugin -name ".*" | xargs rm -f
建立同步作業配置檔案
生成模板檔案
python ./datax/bin/datax.py -r mysqlreader -w oceanbasev10writer
修改同步作業檔案
# 生成模板檔案
python ./datax/bin/datax.py -r mysqlreader -w oceanbasev10writer > jog/my2ob.json
# 根據實際環境修改
vi job/my2obce.json
-
修改完成作業json檔案
{ "job": { "setting": { "speed": { "channel": 2, }, "errorLimit": { "record": 10 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "root", "splitPk": "no_o_id", "column": [ "*" ], "connection": [ { "jdbcUrl": [ "jdbc:mysql://progs:3308/tpcc" ], "table": [ "new_orders" ] } ] } }, "writer": { "name": "oceanbasev10writer", "parameter": { "writeMode": "insert", "username": "root", "password": "root", "writerThreadCount": 5, "column": [ "*" ], "connection": [ { "jdbcUrl": "||_dsc_ob10_dsc_||obce:pay_mysql_tat||_dsc_ob10_dsc_||jdbc:mysql://progs:2883/tpcc?useUnicode=true&characterEncoding=utf-8", "table": [ "new_orders" ] } ] } } } ] } }
啟動同步作業
python ./bin/datax.py ./job/my2obce.json
檢查確認同步情況
附錄
參考資料
- 社群版官網-文件-學習中心-入門教程:4.2 如何使用 mysqldump 遷移 MySQL 表 OceanBase 。
- 社群版官網-部落格-入門實戰:4.2:如何使用 mysqldump 遷移 MySQL 表 OceanBase