pingcap / tiflow

This repo maintains DM (a data migration platform) and TiCDC (change data capture for TiDB)
Apache License 2.0
430 stars 286 forks source link

Incremental sync mode may cause DM cluster to crash #10658

Open rogerszy opened 9 months ago

rogerszy commented 9 months ago

What did you do?

The relevant description of incremental in DM official documentation can automatically start synchronization without setting binlog-name, binlog-pos, and binlog-gtid. https://docs.pingcap.com/tidb/v6.5/task-configuration-file-full

The position where the binlog replication starts when task-mode is incremental and the downstream database checkpoint does not exist. If the checkpoint exists, the checkpoint is used. If neither the meta configuration item nor the downstream database checkpoint exists, the migration starts from the latest binlog position of the upstream.


During the actual test, synchronization can occasionally be started normally. Occasionally, dm-master reports an error and then the cluster restarts. During the restart, the cluster crashes for more than ten seconds and dmctl reports an error.

» start-task roger_test_240227.yaml
fail to run: [start-task roger_test_240227.yaml]
Error: [code=48001:class=dmctl:scope=internal:level=high], Message: can't connect to x.x.x.84:8466, RawCause: context deadline exceeded, Workaround: Please check your network connection.
» query-status --more
can not query  task's status(in sources [])
fail to run: [query-status --more]
Error: rpc error: code = Canceled desc = grpc: the client connection is closing

At present, I personally suspect that the difference is caused by inconsistent mariadb user permissions. The mariadb permission is all and synchronization can be started normally.

GRANT ALL PRIVILEGES ON *.* TO 'dmsyncnew'@'%' IDENTIFIED BY PASSWORD ''

Only some permissions will cause the cluster to crash

GRANT SELECT, RELOAD, PROCESS, SHOW DATABASES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW ON *.* TO 'dmsyncnew'@'%' IDENTIFIED BY PASSWORD ''

The following is the dm-master log during the two tests

[2024/02/27 16:23:55.103 +08:00] [INFO] [server.go:2668] [payload=] [request=QueryStatus]
[2024/02/27 16:23:55.103 +08:00] [INFO] [server.go:807] ["get sources"]
[2024/02/27 16:24:02.419 +08:00] [INFO] [server.go:2668] [payload="{......}"] [request=StartTask]
[2024/02/27 16:24:02.420 +08:00] [WARN] [task.go:741] ["mysql-instance doesn't set meta for incremental mode, user should specify start_time to start task."] [sourceID=x.x.x.8_4011]
[2024/02/27 16:24:04.006 +08:00] [INFO] [checker.go:380] ["\n************ task roger_test_240227 checking items ************\ntarget db privilege checker\nmysql_server_id\nmysql_binlog_enable\nmysql_binlog_format\nmysql_binlog_row_image\nsource db replication privilege checker\nonline ddl checker\nbinlog_do_db/binlog_ignore_db check\ntable structure compatibility check\n************ task roger_test_240227 checking items ************"] [unit="task check"]
[2024/02/27 16:24:04.349 +08:00] [INFO] [table_structure.go:158] ["check table structure over"] ["spend time"=343.228368ms]
[2024/02/27 16:24:02.420 +08:00] [WARN] [task.go:741] ["mysql-instance doesn't set meta for incremental mode, user should specify start_time to start task."] [sourceID=x.x.x.8_4011]
[2024/02/27 16:24:04.006 +08:00] [INFO] [checker.go:380] ["\n************ task roger_test_240227 checking items ************\ntarget db privilege checker\nmysql_server_id\nmysql_binlog_enable\nmysql_binlog_format\nmysql_binlog_row_image\nsource db replication privilege checker\nonline ddl checker\nbinlog_do_db/binlog_ignore_db check\ntable structure compatibility check\n************ task roger_test_240227 checking items ************"] [unit="task check"]
[2024/02/27 16:24:04.349 +08:00] [INFO] [table_structure.go:158] ["check table structure over"] ["spend time"=343.228368ms]
[2024/02/27 16:24:04.350 +08:00] [INFO] [server.go:519] ["task name"=roger_test_240227] [task="{......}"] [request=StartTask]
[2024/02/27 16:24:04.360 +08:00] [INFO] [server.go:1994] ["fail to get expect operation result"] [retryNum=0] [task=roger_test_240227] [source=x.x.x.8_4011] [expect=Running] [resp="result:true msg:\"no sub task started\" sourceStatus:<source:\"x.x.x.8_4011\" worker:\"dm-x.x.x.84-8292\" > "]
[2024/02/27 16:24:11.514 +08:00] [INFO] [keeper.go:247] ["update source tables"] ["old source table"="{\"task\":\"\",\"source\":\"\",\"tables\":null}"] ["new source table"="{\"task\":\"roger_test_240227\",\"source\":\"x.x.x.8_4011\",\"tables\":{\"test\":{\"r1\":{\"roger_test\":{\"r1\":{}}}}}}"]
[2024/02/27 16:24:12.245 +08:00] [WARN] [interceptor.go:197] ["request stats"] [component="embed etcd"] ["start time"=2024/02/27 16:24:02.419 +08:00] ["time spent"=9.826508437s] [remote=x.x.x.8:30514] ["response type"=/pb.Master/StartTask] ["request count"=-1] ["request size"=-1] ["response count"=-1] ["response size"=-1] ["request content"=]
[2024/02/27 16:24:28.038 +08:00] [INFO] [server.go:2668] [payload="name:\"roger_test_240227\" "] [request=QueryStatus]
[2024/02/27 16:27:39.501 +08:00] [INFO] [server.go:2668] [payload="op:Delete name:\"roger_test_240227\" "] [request=OperateTask]
[2024/02/27 16:27:40.519 +08:00] [WARN] [interceptor.go:197] ["request stats"] [component="embed etcd"] ["start time"=2024/02/27 16:27:39.501 +08:00] ["time spent"=1.017550249s] [remote=x.x.x.8:30514] ["response type"=/pb.Master/OperateTask] ["request count"=-1] ["request size"=-1] ["response count"=-1] ["response size"=-1] ["request content"=]
[2024/02/27 16:27:40.519 +08:00] [INFO] [keeper.go:231] ["delete source tables"] ["source table"="{\"task\":\"roger_test_240227\",\"source\":\"x.x.x.8_4011\",\"tables\":null}"]
[2024/02/27 16:32:45.971 +08:00] [INFO] [server.go:2668] [payload="{......}"] [request=StartTask]
[2024/02/27 16:32:45.971 +08:00] [WARN] [task.go:741] ["mysql-instance doesn't set meta for incremental mode, user should specify start_time to start task."] [sourceID=x.x.x.8_4011]
[2024/02/27 16:32:48.435 +08:00] [INFO] [checker.go:380] ["\n************ task roger_test_240227 checking items ************\ntarget db privilege checker\nmysql_server_id\nmysql_binlog_enable\nmysql_binlog_format\nmysql_binlog_row_image\nsource db replication privilege checker\nonline ddl checker\nbinlog_do_db/binlog_ignore_db check\ntable structure compatibility check\n************ task roger_test_240227 checking items ************"] [unit="task check"]
[2024/02/27 16:32:48.776 +08:00] [INFO] [table_structure.go:158] ["check table structure over"] ["spend time"=340.787866ms]
[2024/02/27 16:32:48.776 +08:00] [INFO] [server.go:519] ["task name"=roger_test_240227] [task="{......}"] [request=StartTask]
[2024/02/27 16:32:48.785 +08:00] [INFO] [server.go:1994] ["fail to get expect operation result"] [retryNum=0] [task=roger_test_240227] [source=x.x.x.8_4011] [expect=Running] [resp="result:true msg:\"no sub task started\" sourceStatus:<source:\"x.x.x.8_4011\" worker:\"dm-x.x.x.84-8292\" > "]
[2024/02/27 16:32:55.636 +08:00] [INFO] [keeper.go:247] ["update source tables"] ["old source table"="{\"task\":\"\",\"source\":\"\",\"tables\":null}"] ["new source table"="{\"task\":\"roger_test_240227\",\"source\":\"x.x.x.8_4011\",\"tables\":{\"test\":{\"r1\":{\"roger_test\":{\"r1\":{}}}}}}"]
[2024/02/27 16:32:56.353 +08:00] [WARN] [interceptor.go:197] ["request stats"] [component="embed etcd"] ["start time"=2024/02/27 16:32:45.971 +08:00] ["time spent"=10.3822469s] [remote=x.x.x.8:35062] ["response type"=/pb.Master/StartTask] ["request count"=-1] ["request size"=-1] ["response count"=-1] ["response size"=-1] ["request content"=]
[2024/02/27 16:33:01.547 +08:00] [INFO] [server.go:2668] [payload="name:\"roger_test_240227\" "] [request=QueryStatus]
[2024/02/27 16:37:32.671 +08:00] [INFO] [server.go:2668] [payload="op:Delete name:\"roger_test_240227\" "] [request=OperateTask]
[2024/02/27 16:37:32.812 +08:00] [INFO] [keeper.go:231] ["delete source tables"] ["source table"="{\"task\":\"roger_test_240227\",\"source\":\"x.x.x.8_4011\",\"tables\":null}"]
[2024/02/27 16:42:26.134 +08:00] [INFO] [server.go:2668] [payload="{HidePasswordObject=\"op:StartSource config:\\\"source-id: \\\\\\\"10.107.108.252\\\\\\\"\\\\n\\\\nenable-gtid: true\\\\n\\\\nenable-relay: false\\\\nrelay-binlog-name: '' \\\\nrelay-binlog-gtid: '' \\\\n\\\\nfrom:\\\\n  host: \\\\\\\"10.107.108.252\\\\\\\"\\\\n  user: \\\\\\\"dmsyncnew\\\\\\\"\\\\n  password: \\\\\\\"******\\\\\\\"\\\\n  port: 3306\\\\n\\\\n\\\" \"}"] [request=OperateSource]
[2024/02/27 16:42:26.485 +08:00] [INFO] [scheduler.go:2383] ["found free worker when source bound"] [component=scheduler] [worker=dm-x.x.x.85-8292] [source=10.107.108.252]
[2024/02/27 16:42:26.486 +08:00] [INFO] [scheduler.go:2427] ["bound the source to worker"] [component=scheduler] [bound="{\"source\":\"10.107.108.252\",\"worker\":\"dm-x.x.x.85-8292\"}"]
[2024/02/27 16:42:27.579 +08:00] [WARN] [interceptor.go:197] ["request stats"] [component="embed etcd"] ["start time"=2024/02/27 16:42:26.134 +08:00] ["time spent"=1.445084176s] [remote=x.x.x.8:39842] ["response type"=/pb.Master/OperateSource] ["request count"=-1] ["request size"=-1] ["response count"=-1] ["response size"=-1] ["request content"=]
[2024/02/27 16:42:31.515 +08:00] [INFO] [server.go:2668] [payload="{......}"] [request=StartTask]
[2024/02/27 16:42:31.515 +08:00] [WARN] [task.go:741] ["mysql-instance doesn't set meta for incremental mode, user should specify start_time to start task."] [sourceID=10.1107.108.252]
[2024/02/27 16:42:47.292 +08:00] [INFO] [version.go:47] ["Welcome to dm-master"] [release-version=v6.5.3-20231229-5120c7b] [git-hash=5120c7bf52d74d30860f9fec917a4561abaddbb8] [git-branch=heads/refs/tags/v6.5.3-20231229-5120c7b] [utc-build-time="2023-12-29 10:30:27"] [go-version="go version go1.19.13 linux/amd64"] [failpoint-build=false]
[2024/02/27 16:42:47.292 +08:00] [INFO] [main.go:63] ["dm-master config"="{\"log-level\":\"info\",\"log-file\":\"/data/dm-patch-deploy/dm-master-8466/log/dm-master.log\",\"log-format\":\"text\",\"log-rotate\":\"\",\"rpc-timeout\":\"30s\",\"rpc-rate-limit\":10,\"rpc-rate-burst\":40,\"master-addr\":\"0.0.0.0:8466\",\"advertise-addr\":\"x.x.x.84:8466\",\"config-file\":\"conf/dm-master.toml\",\"name\":\"master1\",\"data-dir\":\"/data/dm-patch-data/dm-master-8466\",\"peer-urls\":\"http://0.0.0.0:8496\",\"advertise-peer-urls\":\"http://x.x.x.84:8496\",\"initial-cluster\":\"master1=http://x.x.x.84:8496,master2=http://x.x.x.85:8496,master3=http://x.x.x.86:8496\",\"initial-cluster-state\":\"new\",\"join\":\"\",\"max-txn-ops\":2048,\"max-request-bytes\":1572864,\"auto-compaction-mode\":\"periodic\",\"auto-compaction-retention\":\"1h\",\"quota-backend-bytes\":2147483648,\"openapi\":false,\"v1-sources-path\":\"\",\"ssl-ca\":\"\",\"ssl-cert\":\"\",\"ssl-key\":\"\",\"cert-allowed-cn\":null,\"ExperimentalFeatures\":{\"OpenAPI\":false}}"]
[2024/02/27 16:42:47.293 +08:00] [INFO] [config.go:462] ["Set log level of etcd to `warn`, if you want to log more message about etcd, change log-level to `debug` in master configuration file"]
[2024/02/27 16:42:47.293 +08:00] [INFO] [server.go:161] ["config after join prepared"] [config="{\"log-level\":\"info\",\"log-file\":\"/data/dm-patch-deploy/dm-master-8466/log/dm-master.log\",\"log-format\":\"text\",\"log-rotate\":\"\",\"rpc-timeout\":\"30s\",\"rpc-rate-limit\":10,\"rpc-rate-burst\":40,\"master-addr\":\"0.0.0.0:8466\",\"advertise-addr\":\"x.x.x.84:8466\",\"config-file\":\"conf/dm-master.toml\",\"name\":\"master1\",\"data-dir\":\"/data/dm-patch-data/dm-master-8466\",\"peer-urls\":\"http://0.0.0.0:8496\",\"advertise-peer-urls\":\"http://x.x.x.84:8496\",\"initial-cluster\":\"master1=http://x.x.x.84:8496,master2=http://x.x.x.85:8496,master3=http://x.x.x.86:8496\",\"initial-cluster-state\":\"new\",\"join\":\"\",\"max-txn-ops\":2048,\"max-request-bytes\":1572864,\"auto-compaction-mode\":\"periodic\",\"auto-compaction-retention\":\"1h\",\"quota-backend-bytes\":2147483648,\"openapi\":false,\"v1-sources-path\":\"\",\"ssl-ca\":\"\",\"ssl-cert\":\"\",\"ssl-key\":\"\",\"cert-allowed-cn\":null,\"ExperimentalFeatures\":{\"OpenAPI\":false}}"]
[2024/02/27 16:42:47.322 +08:00] [WARN] [store.go:1220] ["simple token is not cryptographically signed"] [component="embed etcd"]
[2024/02/27 16:42:47.362 +08:00] [INFO] [server.go:281] ["listening gRPC API and status request"] [address=0.0.0.0:8466]
[2024/02/27 16:42:47.364 +08:00] [INFO] [election.go:300] ["get response from election observe"] [component=election] [key=/dm-master/leader/76758de9a8e10804] [value="{\"id\":\"master1\",\"addr\":\"x.x.x.84:8466\"}"]
[2024/02/27 16:42:47.364 +08:00] [INFO] [election.go:331] ["become leader"] [component=election] ["current member"="{\"id\":\"master1\",\"addr\":\"x.x.x.84:8466\"}"]
[2024/02/27 16:42:47.364 +08:00] [INFO] [election.go:56] ["current member become the leader"] ["current member"=master1]
[2024/02/27 16:42:47.364 +08:00] [INFO] [bootstrap.go:72] ["bootstrap before scheduler start"]
[2024/02/27 16:42:47.365 +08:00] [INFO] [upgrade.go:109] ["fetch previous version"] [preVer="{\"internal-no\":4,\"release-ver\":\"v6.5.0\"}"]
[2024/02/27 16:42:47.365 +08:00] [INFO] [scheduler.go:222] ["the scheduler is starting"] [component=scheduler]
[2024/02/27 16:42:47.373 +08:00] [INFO] [scheduler.go:2286] ["no unbound sources need to bound"] [component=scheduler] [worker="{\"name\":\"dm-x.x.x.86-8292\",\"addr\":\"x.x.x.86:8292\"}"]
[2024/02/27 16:42:47.373 +08:00] [INFO] [scheduler.go:300] ["the scheduler has started"] [component=scheduler]
[2024/02/27 16:42:47.373 +08:00] [INFO] [pessimist.go:72] ["the shard DDL pessimist is starting"] [component="shard DDL pessimist"]
[2024/02/27 16:42:47.374 +08:00] [INFO] [pessimist.go:137] ["get history shard DDL info"] [component="shard DDL pessimist"] [info={}] [revision=294]
[2024/02/27 16:42:47.375 +08:00] [INFO] [pessimist.go:146] ["get history shard DDL lock operation"] [component="shard DDL pessimist"] [operation={}] [revision=294]
[2024/02/27 16:42:47.375 +08:00] [INFO] [pessimist.go:93] ["the shard DDL pessimist has started"] [component="shard DDL pessimist"]
[2024/02/27 16:42:47.375 +08:00] [INFO] [optimist.go:66] ["the shard DDL optimist is starting"] [component="shard DDL optimist"]
[2024/02/27 16:42:47.376 +08:00] [INFO] [optimist.go:405] ["get history initial source tables"] [component="shard DDL optimist"] [revision=294]
[2024/02/27 16:42:47.376 +08:00] [INFO] [optimist.go:413] ["get history shard DDL info"] [component="shard DDL optimist"] [revision=294]
[2024/02/27 16:42:47.377 +08:00] [INFO] [optimist.go:421] ["get history shard DDL lock operation"] [component="shard DDL optimist"] [revision=294]
[2024/02/27 16:42:47.378 +08:00] [INFO] [optimist.go:90] ["the shard DDL optimist has started"] [component="shard DDL optimist"]
[2024/02/27 16:42:47.378 +08:00] [INFO] [server.go:434] ["init cluster id begin"]
[2024/02/27 16:42:47.378 +08:00] [INFO] [server.go:463] ["init cluster id success"] [cluster_id=7182842293442053991]
[2024/02/27 16:42:47.378 +08:00] [INFO] [bootstrap.go:51] ["start bootstrapping"]
[2024/02/27 16:42:47.379 +08:00] [INFO] [upgrade.go:67] ["fetch previous version"] [preVer="{\"internal-no\":4,\"release-ver\":\"v6.5.0\"}"]
[2024/02/27 16:42:47.379 +08:00] [INFO] [bootstrap.go:67] ["successful bootstrapped"]
[2024/02/27 16:42:49.318 +08:00] [INFO] [server.go:2668] [payload="leader:true master:true names:\"master1\" "] [request=ListMember]
[2024/02/27 16:42:49.420 +08:00] [INFO] [server.go:2668] [payload="leader:true master:true names:\"master2\" "] [request=ListMember]
[2024/02/27 16:42:49.421 +08:00] [INFO] [server.go:2668] [payload="leader:true master:true names:\"master3\" "] [request=ListMember]
[2024/02/27 16:42:49.426 +08:00] [INFO] [server.go:2668] [payload="worker:true names:\"dm-x.x.x.84-8292\" "] [request=ListMember]
[2024/02/27 16:42:49.426 +08:00] [INFO] [server.go:2668] [payload="worker:true names:\"dm-x.x.x.85-8292\" "] [request=ListMember]
[2024/02/27 16:42:49.426 +08:00] [INFO] [server.go:2668] [payload="worker:true names:\"dm-x.x.x.86-8292\" "] [request=ListMember]
[2024/02/27 16:43:34.360 +08:00] [INFO] [election.go:401] ["fail to watch, the leader is deleted"] [component=election] [key=/dm-master/leader/76758de9a8e10804]
[2024/02/27 16:43:34.360 +08:00] [INFO] [election.go:334] ["retire from leader"] [component=election] ["current member"="{\"id\":\"master1\",\"addr\":\"x.x.x.84:8466\"}"]
[2024/02/27 16:43:34.360 +08:00] [INFO] [pessimist.go:121] ["pessimist will quit now"]
[2024/02/27 16:43:34.360 +08:00] [INFO] [pessimist.go:221] ["the shard DDL pessimist has closed"] [component="shard DDL pessimist"]
[2024/02/27 16:43:34.360 +08:00] [INFO] [optimist.go:112] ["the shard DDL optimist has closed"] [component="shard DDL optimist"]
[2024/02/27 16:43:34.360 +08:00] [INFO] [scheduler.go:313] ["the scheduler is closing"] [component=scheduler]
[2024/02/27 16:43:34.360 +08:00] [INFO] [scheduler.go:2561] ["observeLoadTask will quit now"]
[2024/02/27 16:43:34.360 +08:00] [INFO] [keepalive.go:198] ["watch keepalive worker quit due to context canceled"]
[2024/02/27 16:43:34.361 +08:00] [INFO] [scheduler.go:2106] ["observeWorkerEvent will quit now"]
[2024/02/27 16:43:34.361 +08:00] [INFO] [scheduler.go:327] ["the scheduler has closed"] [component=scheduler]
[2024/02/27 16:43:34.361 +08:00] [INFO] [election.go:45] ["current member retire from the leader"] ["current member"=master1]
[2024/02/27 16:43:34.362 +08:00] [INFO] [election.go:278] ["fail to campaign"] [component=election] ["current member"="{\"id\":\"master1\",\"addr\":\"x.x.x.84:8466\"}"] [error="context canceled"]
[2024/02/27 16:43:34.363 +08:00] [INFO] [election.go:300] ["get response from election observe"] [component=election] [key=/dm-master/leader/22e98de9a8e6c904] [value="{\"id\":\"master2\",\"addr\":\"x.x.x.85:8466\"}"]
[2024/02/27 16:43:34.363 +08:00] [INFO] [election.go:324] ["current member is not the leader"] [component=election] ["current member"="{\"id\":\"master1\",\"addr\":\"x.x.x.84:8466\"}"] [leader="{\"id\":\"master2\",\"addr\":\"x.x.x.85:8466\"}"]
[2024/02/27 16:43:34.363 +08:00] [INFO] [election.go:96] ["get new leader"] [leader=master2] ["current member"=master1]
[2024/02/27 16:43:34.364 +08:00] [INFO] [election.go:273] ["successful manually clean election key"] [component=election] ["campaign error"="context canceled"]
[2024/02/27 16:43:34.365 +08:00] [INFO] [election.go:278] ["fail to campaign"] [component=election] ["current member"="{\"id\":\"master1\",\"addr\":\"x.x.x.84:8466\"}"] [error="context canceled"]
[2024/02/27 16:43:34.365 +08:00] [INFO] [election.go:300] ["get response from election observe"] [component=election] [key=/dm-master/leader/22e98de9a8e6c904] [value="{\"id\":\"master2\",\"addr\":\"x.x.x.85:8466\"}"]
[2024/02/27 16:55:13.993 +08:00] [INFO] [server.go:2668] [payload=] [request=QueryStatus]
[2024/02/27 16:55:13.993 +08:00] [INFO] [server.go:2683] ["will forward after a short interval"] [from=master1] [to=master2] [request=QueryStatus]
[2024/02/27 16:55:14.894 +08:00] [WARN] [interceptor.go:197] ["request stats"] [component="embed etcd"] ["start time"=2024/02/27 16:55:13.993 +08:00] ["time spent"=901.52325ms] [remote=x.x.x.8:46504] ["response type"=/pb.Master/QueryStatus] ["request count"=-1] ["request size"=-1] ["response count"=-1] ["response size"=-1] ["request content"=]
[2024/02/27 16:55:22.419 +08:00] [INFO] [server.go:2668] [payload="{HidePasswordObject=\"op:StopSource sourceID:\\\"10.107.108.252\\\" \"}"] [request=OperateSource]
[2024/02/27 16:55:22.419 +08:00] [INFO] [server.go:2683] ["will forward after a short interval"] [from=master1] [to=master2] [request=OperateSource]
[2024/02/27 16:55:28.802 +08:00] [INFO] [server.go:2668] [payload="{HidePasswordObject=\"op:StopSource sourceID:\\\"x.x.x.8_4011\\\" \"}"] [request=OperateSource]
[2024/02/27 16:55:28.802 +08:00] [INFO] [server.go:2683] ["will forward after a short interval"] [from=master1] [to=master2] [request=OperateSource]
[2024/02/27 16:56:13.697 +08:00] [INFO] [server.go:2668] [payload="leader:true master:true names:\"master1\" "] [request=ListMember]
[2024/02/27 16:56:13.697 +08:00] [INFO] [server.go:2683] ["will forward after a short interval"] [from=master1] [to=master2] [request=ListMember]

What did you expect to see?

As stated in the documentation, incremental mode can start synchronization normally without setting binlog-name, binlog-pos, and binlog-gtid. Even if parameters must be specified, an error message should be reported in dmctl instead of causing a crash.

What did you see instead?

No response

Versions of the cluster

DM version (run dmctl -V or dm-worker -V or dm-master -V):

dm version
v6.5.3
---
dm-master
Release Version: v6.5.3-20231229-5120c7b
Git Commit Hash: 5120c7bf52d74d30860f9fec917a4561abaddbb8
Git Branch: heads/refs/tags/v6.5.3-20231229-5120c7b
UTC Build Time: 2023-12-29 10:30:27
Go Version: go version go1.19.13 linux/amd64
Failpoint Build: false
---
dm-worker
Release Version: v6.5.3-20231229-5120c7b
Git Commit Hash: 5120c7bf52d74d30860f9fec917a4561abaddbb8
Git Branch: heads/refs/tags/v6.5.3-20231229-5120c7b
UTC Build Time: 2023-12-29 10:30:27
Go Version: go version go1.19.13 linux/amd64
Failpoint Build: false
---
dmctl
Release Version: v6.5.3-20230926-7e90ede
Git Commit Hash: 7e90ede585d3bb1cd152c8eeff88957839f16bd4
Git Branch: heads/refs/tags/v6.5.3-20230926-7e90ede
UTC Build Time: 2023-09-26 05:21:14
Go Version: go version go1.19.12 linux/amd64
Failpoint Build: false

Upstream MySQL/MariaDB server version:

--------------
mysql  Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:          
Current database:
Current user:           
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.1.9-MariaDBV1.0R012D003-20180427-1600 Source distribution
Protocol version:       10
Connection:              via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:               3306
Uptime:                 208 days 1 hour 49 min 1 sec

Threads: 2011  Questions: 20601214022  Slow queries: 1276853  Opens: 51871031  Flush tables: 1  Open tables: 10240  Queries per second avg: 1145.928
--------------

Downstream TiDB cluster version (execute SELECT tidb_version(); in a MySQL client):

Release Version: v5.4.1-20230302
Edition: Enterprise
Git Commit Hash: cfa1040ba44041baf341b8a42cbfe0c7acb577df
Git Branch: heads/refs/tags/v5.4.1-20230302
UTC Build Time: 2023-03-02 07:45:07
GoVersion: go1.16.4
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false

How did you deploy DM: tiup or manually?

TiUP

Other interesting information (system version, hardware config, etc):

>
>

current status of DM cluster (execute query-status <task-name> in dmctl)

tiup is checking updates for component dm ...
Starting component `dm`: /data1/tiup_home/components/dm/v1.12.3/tiup-dm display dm-patch-test
Cluster type:       dm
Cluster name:       dm-patch-test
Cluster version:    v6.5.3
Deploy user:        tidb
SSH type:           builtin
ID                  Role                 Host           Ports      OS/Arch       Status     Data Dir                            Deploy Dir
--                  ----                 ----           -----      -------       ------     --------                            ----------
xxx.84:8466  dm-master (patched)  xxx.84  8466/8496  linux/x86_64  Healthy    /data/dm-patch-data/dm-master-8466  /data/dm-patch-deploy/dm-master-8466
xxx.85:8466  dm-master (patched)  xxx.85  8466/8496  linux/x86_64  Healthy|L  /data/dm-patch-data/dm-master-8466  /data/dm-patch-deploy/dm-master-8466
xxx.86:8466  dm-master (patched)  xxx.86  8466/8496  linux/x86_64  Healthy    /data/dm-patch-data/dm-master-8466  /data/dm-patch-deploy/dm-master-8466
xxx.84:8292  dm-worker (patched)  xxx.84  8292       linux/x86_64  Free       /data/dm-patch-data/dm-worker-8292  /data/dm-patch-deploy/dm-worker-8292
xxx.85:8292  dm-worker (patched)  xxx.85  8292       linux/x86_64  Free       /data/dm-patch-data/dm-worker-8292  /data/dm-patch-deploy/dm-worker-8292
xxx.86:8292  dm-worker (patched)  xxx.86  8292       linux/x86_64  Free       /data/dm-patch-data/dm-worker-8292  /data/dm-patch-deploy/dm-worker-8292
Total nodes: 6
fubinzh commented 9 months ago

/severity major