文章目录一. 迁移整体思路1. 对于新旧集群互通的情况2. 对于新旧集群不互通的情况二、迁移过程两个集群互通的情况1. 备份过程1.1. 通过mysqlclient与starrocks进行关联1.2. 创建仓库与minio建立联系1.3. 备份数据到minio2. 迁移过程2.1. 通过mysqlclient与starrocks进行关联2.2. 在新集群中创建仓库2.3. 恢复数据到新集群二、迁移过程两个集群不互通的情况1. 集群A数据迁移到minioA1.1. 通过mysqlclient与starrocks进行关联1.2. 创建仓库与minioA建立联系1.3. 备份数据到minioA2. minioA数据迁移到minioB2.1. 下载minioA中的文件到本地2.2. 将文件上传到minioB3.minioB数据迁移到集群B3.1. 通过mysqlclient与starrocks进行关联3.2. 在新集群中创建仓库3.3. 恢复数据到新集群一. 迁移整体思路SR官网提供了分区、表和数据库级别的数据迁移策略此方案通过数据库级别将数据迁移到新集群。1. 对于新旧集群互通的情况2. 对于新旧集群不互通的情况二、迁移过程两个集群互通的情况准备规划序号组件说明1minio用于创建桶将库备份放到minio的桶中2集群A旧集群用于将库迁移到minio中3集群B新集群从minio迁移数据到集群Bminio操作# 1. 创建minio集群别名用于后续操作在任意minio节点语法 /usr/local/minio/mcaliasset${minio_alias}${minio_server}${minio_user}${minio_password}实例 /usr/local/minio/mcaliassetminio_data_starrocks http://server_minio:9019 admin Administrator123# 2. minio集群创建桶star11用于存储数据备份语法 /usr/local/minio/mc mb${minio_alias}/${bucket_name}实例 /usr/local/minio/mc mb minio_data_starrocks/star111. 备份过程集群A旧集群数据迁移到minio3个FE( poc1、2、3), 3个BEpoc4、5、6的 StarRocks。1.1. 通过mysqlclient与starrocks进行关联mysql-h${starrocks_leader_host}-P9030-uroot-pstar_rocks;1.2. 创建仓库与minio建立联系--1.创建仓库 语法 CREATE REPOSITORY ${repo_name} WITH BROKER ON LOCATIONs3a://${bucket_name}/backupPROPERTIES(aws.s3.enable_sslfalse,aws.s3.access_key${minio_username},aws.s3.enable_path_style_accesstrue,aws.s3.secret_key${minio_password},aws.s3.endpoint${minio_server});实例 CREATE REPOSITORY test_repo WITH BROKER ON LOCATIONs3a://star11/backupPROPERTIES(aws.s3.enable_sslfalse,aws.s3.access_keyadmin,aws.s3.enable_path_style_accesstrue,aws.s3.secret_keyAdministrator123,aws.s3.endpointminio_server:9009);--2.展示仓库 show REPOSITORY test_repo;如果仓库创建失败或重新创建同名仓库则删除仓库命令如下 DROP REPOSITORY test_repo;删除仓库时后记得手动在minio上的文件。1.3. 备份数据到minio备份语法https://docs.starrocks.io/zh/docs/2.5/sql-reference/sql-statements/data-definition/BACKUP/--1.备份命令--以下示例在数据库 radar_test 中创建数据快照sr_member_backup(命名随意)并备份至仓库 test_repo 中。 BACKUP SNAPSHOT radar_test.radar_test_backup TO test_repoPROPERTIES(typefull);--2.查看数据库radar_test备份过程 show backup from radar_test \G;***************************1.row***************************JobId:129388SnapshotName:radar_test_backup DbName:radar_test State:FINISHED BackupObjs:[radar_test.20230815_baseurl],[radar_test.20230815_baseurl.csv],[radar_test.dim_report_pro_detail],[radar_test.dim_report_pro_logs],[radar_test.dwd_qdas_monitor_donelog_test],[radar_test.dwd_thjl_d_xky],[radar_test.dwd_thjl_d_xky2],[radar_test.dwd_thjl_d_xky_20240125],[radar_test.ftp_baseurl],[radar_test.ods_pc_user_portrait_detail],[radar_test.ods_pc_user_portrait_detail2],[radar_test.ods_thjl_d],[radar_test.t],[radar_test.test2_100m_pc_user_portrait_detail],[radar_test.test2_10m_pc_user_portrait_detail],[radar_test.test2_1m_pc_user_portrait_detail],[radar_test.test2_join_id],[radar_test.test_100m_pc_user_portrait_detail],[radar_test.test_10m_pc_user_portrait_detail],[radar_test.test_1m_pc_user_portrait_detail]CreateTime:2024-03-1415:05:03SnapshotFinishedTime:2024-03-1415:05:09UploadFinishedTime:2024-03-1415:16:36FinishedTime:2024-03-1415:16:45UnfinishedTasks:Progress:TaskErrMsg:[129534:S3:Fail to complete multipart uploadforobject starrocks-1/backup/__starrocks_repository_test_repo/__ss_radar_test_backup/__ss_content/__db_10228/__tbl_18770/__part_19744/__idx_18771/__19845/02000000006a04786743e0da3614f6285f61e260bcdfc887_0.dat.part,msg:The specified multipart upload does not exist.The upload ID may be invalid,or the upload may have been aborted or completed.]Status:[OK]Timeout:86400看到State为FINISHEDStatus为OK说明备份完成 TaskErrMsg和Status会显示任务过程中Task的一些错误信息但只要State列不为CANCELLED 就说明作业依然在继续这些Task有可能会重试成功。当然有些Task错误也会直接导致作业失败。当一次备份作业涉及到的表和数据都很多时我们需要不时关注作业状态若发现任务长时间没有进度或有其他问题也可以将任务手动取消取消语法为mysql CANCEL BACKUP FROM db_name;2. 迁移过程迁移到集群B新集群:2.1. 通过mysqlclient与starrocks进行关联mysql-h ${clusterB_server}-P9031-uroot-pstar_rocks2.2. 在新集群中创建仓库注意在新集群中使用相同仓库名和地址创建仓库否则将无法查看先前备份的数据快照。--1.创建数据库 新集群中需要建库迁移的表不需要创建。 create database radar_test;--2.创建与A集群相同的仓库 CREATE REPOSITORY test_repo WITH BROKER ON LOCATIONs3a://star11/backupPROPERTIES(aws.s3.enable_sslfalse,aws.s3.access_keyadmin,aws.s3.enable_path_style_accesstrue,aws.s3.secret_keyAdministrator123,aws.s3.endpoint${minio_server}:9019);--3.查看仓库 SHOW REPOSITORIES;--如果创建仓库失败或想重新创建。使用如下命令删除仓库 DROP REPOSITORY test_repo;2.3. 恢复数据到新集群--在旧集群A集群中执行--1.连接A集群 mysql-h${star_rocks_cluster_fe_leader}-P9030-uroot-pstar_rocks;--查看备份快照信息用于恢复使用 mysqlSHOWSNAPSHOTONtest_repo;----------------------------------------------------|Snapshot|Timestamp|Status|----------------------------------------------------|radar_test_backup|2024-03-14-15-05-03-957|OK|------------------------------------------------------在新集群B集群中执行--2.将仓库 test_repo 中的数据快照 radar_test_backup恢复到数据库中radar_test恢复三个数据副本。--语法RESTORESNAPSHOT${clusterB_database}.${clusterA_Snapshot_name}FROMtest_repoPROPERTIES(backup_timestamp${clusterA_Snapshot_Timestamp},replication_num3);--执行实例RESTORESNAPSHOTradar_test_1.radar_test_backupFROMtest_repoPROPERTIES(backup_timestamp2024-03-14-15-05-03-957,replication_num3);QueryOK,0rows affected(1.77sec)--3.查看备份进度SHOWRESTOREfrom radar_test \G;***************************1.row***************************JobId:10078Label:radar_test_backupTimestamp:2024-03-14-15-05-03-957DbName:radar_testState:FINISHEDAllowLoad:falseReplicationNum:1RestoreObjs:...会展示所有表和分区CreateTime:2024-03-1511:28:04MetaPreparedTime:2024-03-1511:28:07SnapshotFinishedTime:2024-03-1511:28:10DownloadFinishedTime:2024-03-1511:28:43FinishedTime:2024-03-1511:30:03UnfinishedTasks:Progress:TaskErrMsg:Status:[OK]Timeout:86400如果State为FINISHED、Status为[OK]则迁移数据到新集群完成。二、迁移过程两个集群不互通的情况规划序号组件说明1minioA用于创建桶将库备份放到minioA的桶中2集群A旧集群用于将库迁移到minioA中3minioBminioA的数据迁移到minioB中4集群B新集群从minioB迁移数据到集群BminioA操作一.minioA操作 #1.创建minioA集群别名用于后续操作在任意minio节点 语法/usr/local/minio/mc alias set ${minio_alias}${minio_server}${minio_user}${minio_password}#2.minioA集群创建桶star11用于存储数据备份 语法/usr/local/minio/mc mb ${minio_alias}/${bucket_name}实例/usr/local/minio/mc mb minio_data_starrocks/star111. 集群A数据迁移到minioA集群A旧集群数据迁移到minio3个FE( poc1、2、3), 3个BEpoc4、5、6的 StarRocks。1.1. 通过mysqlclient与starrocks进行关联1.2. 创建仓库与minioA建立联系1.3. 备份数据到minioA如上过程参考集群互通时的操作2. minioA数据迁移到minioB现在我们将minioA的文件下载到本地然后从本地上传到minioB2.1. 下载minioA中的文件到本地# 将minioA中的桶star11的数据备份到/home/taiyi/minio-data目录 # 创建目录 mkdir-p/home/taiyi/minio-data/# 备份到本地 语法 #/usr/local/minio/mc cp--recursive ${minioA_alias}/${bucket_name}/${local_dir}实例/usr/local/minio/mc cp--recursive minio_data_starrocks/star11//home/taiyi/minio-data/2.2. 将文件上传到minioB因为网络不互通需要将文件从上述位置拷贝到minioB的客户端机器中具体方法不再描述用户自行操作。现在#1.设用户已将数据上传到minioB的客户机目录/home/taiyi/minio-data/下 #2.创建minioB集群别名用于后续操作在任意minioB的客户端节点 语法/usr/local/minio/mc alias set ${minioB_alias}${minioB_server}${minioB_user}${minioB_password}#3.minioB集群创建桶star11用于上传数据备份 语法/usr/local/minio/mc mb ${minioB_alias}/${bucket_name}实例/usr/local/minio/mc mb minio_data_starrocks_restore/star11 #4.将文件夹下/home/taiyi/minio-data/所有数据上传到minioB中star11的桶中/usr/local/minio/mc cp--recursive/home/taiyi/minio-data/minio_data_starrocks_restore/star11/3.minioB数据迁移到集群B迁移到集群B新集群:3.1. 通过mysqlclient与starrocks进行关联3.2. 在新集群中创建仓库3.3. 恢复数据到新集群如上过程参考集群互通时的操作参考https://blog.csdn.net/ult_me/article/details/123235041https://blog.csdn.net/gongxiucheng/article/details/132675927