From c254e010503d21d9e5df61615db9670d7af6db56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Thu, 8 Feb 2024 22:23:45 -0600 Subject: [PATCH 01/20] rm vtworker section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- content/zh/docs/19.0/overview/architecture.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/content/zh/docs/19.0/overview/architecture.md b/content/zh/docs/19.0/overview/architecture.md index a10456030..be221a31b 100644 --- a/content/zh/docs/19.0/overview/architecture.md +++ b/content/zh/docs/19.0/overview/architecture.md @@ -44,12 +44,4 @@ Vitess平台由许多服务器进程、命令行实用程序和基于Web的实 **vtctld** vtctld是一个HTTP服务器,允许您浏览存储在lockserver中的信息。它对于故障排除或获取服务器及其当前状态的高层概观非常有用。 -## vtworker - -**vtworker** 托管长时间运行的进程。它支持插件架构并提供代码库,以便您可以轻松选择要使用的vttablet。插件可用于以下类型的作业: - -* 水平拆分或合并过程中检查数据的完整性 -* 垂直拆分或合并过程中检查数据的完整性 - -vtworker还可以让您轻松添加其他验证程序。例如,如果一个keyspace中的索引表引用到另一keyspace中的数据,则可以执行片内完整性检查以验证类似外键的关系或跨分片完整性检查。 From ff8f10a95fbb582c3534edfe4b1865f446ef168d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Thu, 8 Feb 2024 22:28:31 -0600 Subject: [PATCH 02/20] replace architecture diagram MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- .DS_Store | Bin 0 -> 6148 bytes content/.DS_Store | Bin 0 -> 6148 bytes content/zh/.DS_Store | Bin 0 -> 6148 bytes content/zh/docs/.DS_Store | Bin 0 -> 6148 bytes content/zh/docs/19.0/.DS_Store | Bin 0 -> 6148 bytes content/zh/docs/19.0/overview/.DS_Store | Bin 0 -> 6148 bytes content/zh/docs/19.0/overview/architecture.md | 2 +- .../docs/19.0/overview/img/VitessOverview.png | Bin 35460 -> 0 bytes .../zh/docs/19.0/overview/img/architecture.png | Bin 0 -> 36433 bytes 9 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 .DS_Store create mode 100644 content/.DS_Store create mode 100644 content/zh/.DS_Store create mode 100644 content/zh/docs/.DS_Store create mode 100644 content/zh/docs/19.0/.DS_Store create mode 100644 content/zh/docs/19.0/overview/.DS_Store delete mode 100644 content/zh/docs/19.0/overview/img/VitessOverview.png create mode 100644 content/zh/docs/19.0/overview/img/architecture.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..77fc116c8688e264cd0241fc54e0c2b277deb329 GIT binary patch literal 6148 zcmeHKF>V4u473xZAkk1#?iccd6(TR-15tnu<%%TzRe4vQmKobc&_M?U(OB}%uGh1x zo#K2pGhcu0pUswLHir}Ko5R$&PoLOBMH~pn83%i}&;7^l_%=+k&j-kTvYicN{^bux zZpoy86p#W^Knh5KD=Sb1cD}gsxjIe?NP+uTfZvA(C-%ZIF+Lp_q6GlX5DvpUdI?}- z0N4x1L_}boRA5rQS`1G*;;r&};h30o^J+f4ZuaU>JZ{JNEz-? z$fJC|7|$c|NvHr77>NS*eJF5aO}3zaIuLvW0B0z>VePX7SgZinWDBAK(`W^wRecPx zy0?QR_tj(zM!RSZADVYon_^%Z?V<$&NR^{g72#H#q3q5#D|Rkl0bYguCH-u?1L@Er<$?KLRcT0~PqG0#E;d B5I+C_ literal 0 HcmV?d00001 diff --git a/content/zh/.DS_Store b/content/zh/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b1bc858e925d93fb375ed4bdb59c7154b9b72c92 GIT binary patch literal 6148 zcmeH~F>b>!3`IX%4*|M(?5HIN=naG*JwYxI#2y292)gU&`J}kS%^VoPCqO=tGGY4< zmI=TPfAbG80@%@=*n3!+F&{8v!Gzm5@b5#RJ8QCa#;1cJMgVePIgIO=CCK6hvL;(6D>TdL!Lrq2 z4DoujlO?aK$=2E1VL5zQ-r0PLp;>Q-6(%&R0R<@_1y%}t_I&j7|Cj!3{$I5yl>$=W z%@nZVcsd^VQhB!idp)n8v+Cx@qaLyQ3Az;YPZF-wre3uH~UPF84^(}QKJ z#TerCXeUcvSCg%?x5IMyu)MSR6hpJ#4l7J(Rs#xBKnhG0`0V-U=l_xZZvLOND3tOunD|k=q=#|8_=2p-*2xM@KLR0xf)w~u F1s=0_5zPPq literal 0 HcmV?d00001 diff --git a/content/zh/docs/19.0/.DS_Store b/content/zh/docs/19.0/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..15fc565f4bf4be77115d109d26267d8cf63b45ea GIT binary patch literal 6148 zcmeHKJ8r`;3?>(oxgyW1)`H)Gz_NVtlll^Hg$K#o*^3fwC2 z7|Y)3{|o$&{{NQ56&0WYccp-C#@#sJNm*N)$62i{@K?CyT;OJyI|YN6W1yE~EUX+q dds5^Tn`6HwE`d%*-0496445u7D)8S5TmgAa6~O=i literal 0 HcmV?d00001 diff --git a/content/zh/docs/19.0/overview/.DS_Store b/content/zh/docs/19.0/overview/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f10092a748eb11a1cd69ed548d0241d9576a5818 GIT binary patch literal 6148 zcmeH~JqiLr422WdLa^D=avBfd4F=H@cmYvC1jRz^=jgutG_KaN$O|OjB(q_6U$L_h z5nVq|E0JDAW^kh{EeuSNcXE-NoKKJA^>Dvmt>iXIS^?h6U_ZABDnJFO02QDDRA593 zET z-P^&E*VSYTM!RSZADVYon_^%Z?V<$hojhD)^_2c!dzR#+y8yxh@5#D|Rkl0bYfV*M8*aED{7DNTc9|4zvfeQRoffuO! B5o!Pc literal 0 HcmV?d00001 diff --git a/content/zh/docs/19.0/overview/architecture.md b/content/zh/docs/19.0/overview/architecture.md index be221a31b..2f33d4c82 100644 --- a/content/zh/docs/19.0/overview/architecture.md +++ b/content/zh/docs/19.0/overview/architecture.md @@ -12,7 +12,7 @@ Vitess平台由许多服务器进程、命令行实用程序和基于Web的实 下图说明了Vitess的组件 -![Vitess Overview Architecture Diagram](../img/VitessOverview.png) +![Vitess Overview Architecture Diagram](../img/architecture.png) ## Topology diff --git a/content/zh/docs/19.0/overview/img/VitessOverview.png b/content/zh/docs/19.0/overview/img/VitessOverview.png deleted file mode 100644 index e8e1b17fc19a428c665ac189db7ebab82f71ccc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35460 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 diff --git a/content/zh/docs/19.0/overview/img/architecture.png b/content/zh/docs/19.0/overview/img/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..bef49e4fccb8a4e0d5986a6ec6f9d020d98ad180 GIT binary patch literal 36433 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 literal 0 HcmV?d00001 From 3938b9adac1f9095d0dc206e48cdf874571a6acb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Thu, 8 Feb 2024 22:36:30 -0600 Subject: [PATCH 03/20] amend diagram svg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- content/zh/docs/19.0/overview/architecture.md | 2 +- .../docs/19.0/overview/img/architecture.png | Bin 36433 -> 0 bytes .../docs/19.0/overview/img/architecture.svg | 86 ++++++++++++++++++ 3 files changed, 87 insertions(+), 1 deletion(-) delete mode 100644 content/zh/docs/19.0/overview/img/architecture.png create mode 100644 content/zh/docs/19.0/overview/img/architecture.svg diff --git a/content/zh/docs/19.0/overview/architecture.md b/content/zh/docs/19.0/overview/architecture.md index 2f33d4c82..fd0bb73cf 100644 --- a/content/zh/docs/19.0/overview/architecture.md +++ b/content/zh/docs/19.0/overview/architecture.md @@ -12,7 +12,7 @@ Vitess平台由许多服务器进程、命令行实用程序和基于Web的实 下图说明了Vitess的组件 -![Vitess Overview Architecture Diagram](../img/architecture.png) +Architecture Diagram ## Topology diff --git a/content/zh/docs/19.0/overview/img/architecture.png b/content/zh/docs/19.0/overview/img/architecture.png deleted file mode 100644 index bef49e4fccb8a4e0d5986a6ec6f9d020d98ad180..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36433 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 diff --git a/content/zh/docs/19.0/overview/img/architecture.svg b/content/zh/docs/19.0/overview/img/architecture.svg new file mode 100644 index 000000000..f5fecc21c --- /dev/null +++ b/content/zh/docs/19.0/overview/img/architecture.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 89ca84448cf04dbb127e1b3e0b3dc705f2790844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Thu, 8 Feb 2024 22:55:39 -0600 Subject: [PATCH 04/20] remove topology paragraph: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- content/zh/docs/19.0/overview/architecture.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/content/zh/docs/19.0/overview/architecture.md b/content/zh/docs/19.0/overview/architecture.md index fd0bb73cf..41693c786 100644 --- a/content/zh/docs/19.0/overview/architecture.md +++ b/content/zh/docs/19.0/overview/architecture.md @@ -14,11 +14,6 @@ Vitess平台由许多服务器进程、命令行实用程序和基于Web的实 Architecture Diagram -## Topology - -[拓扑服务](../../user-guides/topology-service) 一个元数据存储,包含有关正在运行的服务器、分片方案和复制图的信息。拓扑由一致的数据存储支持。您可以使用**vtctl** (命令行) 和 **vtctld** (web)查看拓扑. - -在Kubernetes中,数据存储是etcd。 Vitess源代码还附带[Apache ZooKeeper](http://zookeeper.apache.org/)支持。 ## vtgate From 0df0863722877477e1d951be4f6ae6194cd42f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Thu, 8 Feb 2024 23:07:23 -0600 Subject: [PATCH 05/20] add Execution Plan section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- .../zh/docs/19.0/concepts/execution-plans.md | 7 ++ .../docs/19.0/overview/img/architecture 2.svg | 86 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 content/zh/docs/19.0/concepts/execution-plans.md create mode 100644 content/zh/docs/19.0/overview/img/architecture 2.svg diff --git a/content/zh/docs/19.0/concepts/execution-plans.md b/content/zh/docs/19.0/concepts/execution-plans.md new file mode 100644 index 000000000..7b5eef253 --- /dev/null +++ b/content/zh/docs/19.0/concepts/execution-plans.md @@ -0,0 +1,7 @@ +--- +title: Execution Plan +--- + +Vitess在VTGate和VTTablet层面对查询进行解析,目的是找到执行查询的最优方式。这一过程称为查询规划,其结果是生成一份"Execution Plan"。 + +这个"Execution Plan"既取决于查询本身,也依赖于相关的VSchema。Vitess的规划策略一个核心目标是尽量将工作量下推至底层MySQL实例。当无法实现下推时,Vitess会采取一种方案,通过汇总多个来源的输入并合并结果,以得出正确的查询输出。 diff --git a/content/zh/docs/19.0/overview/img/architecture 2.svg b/content/zh/docs/19.0/overview/img/architecture 2.svg new file mode 100644 index 000000000..f5fecc21c --- /dev/null +++ b/content/zh/docs/19.0/overview/img/architecture 2.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 94cf414ecec020924823c90b2f2ff57647c2d439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Thu, 8 Feb 2024 23:09:57 -0600 Subject: [PATCH 06/20] remove duplicated img MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- content/zh/docs/19.0/overview/.DS_Store | Bin 6148 -> 6148 bytes .../docs/19.0/overview/img/architecture 2.svg | 86 ------------------ 2 files changed, 86 deletions(-) delete mode 100644 content/zh/docs/19.0/overview/img/architecture 2.svg diff --git a/content/zh/docs/19.0/overview/.DS_Store b/content/zh/docs/19.0/overview/.DS_Store index f10092a748eb11a1cd69ed548d0241d9576a5818..3d3a37410d06e34ca073d925f34fa06c7c387c20 100644 GIT binary patch delta 349 zcmZoMXfc=|#>B`mF;R?_gMono$Pkfb0y02=8HgDf7z7xK3zBm3lYqP(Nd*%Vm)CDt|av9Q-%8?~=GK)(L46ZRUF|)9;v2(Cy7CR*tMT2-D`T03X zFm_^6SY~Q@ynu*veqKppW?pI$SVLw?Do{yGcxGNoez{YAX;q8=#2!O6iH zFCbA}ZDwesqhM@dT&tr{ZE0knqhMleR$I%-A*!rz9TcCPlbe^{1#~VDFarGo2E0%j zMs))jQ17G^C+8#qod;416)FoZ%FD^mO9zTT4cM6ek9D$v2+L+}p#Ok@w=wZM^JIPz TMOIM2DNHsL5#H<}vWFP}=si?a delta 111 zcmZoMXfc=|#>AjHu~68Ak%57MnIV%Qmmxi+I5{UNKR*W~1O`k{8YBS30t`_3&4Ntd pST`#$ZDQQa&cV+CGzlp3oq009h$1IQZ30N&WD_3c%`qY?m;rm<6tMsR diff --git a/content/zh/docs/19.0/overview/img/architecture 2.svg b/content/zh/docs/19.0/overview/img/architecture 2.svg deleted file mode 100644 index f5fecc21c..000000000 --- a/content/zh/docs/19.0/overview/img/architecture 2.svg +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 9c6b4fbcbbbf91a9f8f38fabaafee0597beb9f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Thu, 8 Feb 2024 23:26:42 -0600 Subject: [PATCH 07/20] add Move Tables section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- content/zh/docs/19.0/concepts/move-tables.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 content/zh/docs/19.0/concepts/move-tables.md diff --git a/content/zh/docs/19.0/concepts/move-tables.md b/content/zh/docs/19.0/concepts/move-tables.md new file mode 100644 index 000000000..df734f5c4 --- /dev/null +++ b/content/zh/docs/19.0/concepts/move-tables.md @@ -0,0 +1,12 @@ +--- +title: Move Tables +--- + +"MoveTables"基于VReplication的新流程,能让你实现零停机时间内,把表从一个键空间迁移到另一个,即在不同的物理MySQL实例间搬迁数据。 + +## 生产流量影响小秘诀 +内部来说,MoveTables 操作既包含了表的复制,也涉及到对表更改的实时订阅。Vitess利用批处理技术,旨在提升表复制和应用订阅更改的效率。通俗讲,修改频率低的表迁移会更快一些。 + +迁移过程中,数据是从副本而非主库复制的,几乎对生产流量无影响。 + +在 MoveTables 操作的`SwitchTraffic` 阶段,对主库来说,Vitess可能短暂不可用。这种情况通常只持续几秒钟,但如果系统主从复制延迟较大,不可用时间可能会相应增长。 From fecebf51c8568940183f24831e6e470f90b05f22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 10:53:26 -0600 Subject: [PATCH 08/20] add query-rewriting section; fix execution-plans MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- .../zh/docs/19.0/concepts/query-rewriting.md | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 content/zh/docs/19.0/concepts/query-rewriting.md diff --git a/content/zh/docs/19.0/concepts/query-rewriting.md b/content/zh/docs/19.0/concepts/query-rewriting.md new file mode 100644 index 000000000..bbcf1b214 --- /dev/null +++ b/content/zh/docs/19.0/concepts/query-rewriting.md @@ -0,0 +1,59 @@ +--- +title: Query Rewritting +--- + +Vitess致力于创造一种用户似乎与单一数据库建立单一连接的假象。实际上,一个单独的查询可能会与多个数据库互动,并且可能使用对同一数据库的多个连接。这里我们 +将讨论Vitess做了什么以及这可能对您有何影响。 + +## Query Splitting +8 一个复杂的查询,如果涉及跨分片(join)可能需要首先从保持vindex查找表的tablet获取信息。然后使用这些信息查询两个不同的分片以获取更多数据,随后将接收到的结 +果合并成用户收到的单一结果。MySQL接收到的查询往往只是原始查询的一部分,最终结果将在vtgate层面组装完成。 + +## Connection Pooling +11 当一个tablet代表用户与MySQL通讯执行查询时,它不会为每个用户使用专用连接,而是会在用户之间共享底层连接。这意味着在会话中存储任何状态都是不安全的,因为> 您不能确定它会继续在同一连接上执行查询,也不能确定这个连接以后是否会被其他用户使用。 + +## 用户定义的变量 +在与MySQL工作时,用户定义的变量会保留在会话状态中。您可以使用SET命令为它们赋值: + +```sql +SET @my_user_variable = 'foobar' +``` + +随后,可以使用例如SELECT的查询: + +```sql +> SELECT @my_user_variable; ++-------------------+ +| @my_user_variable | ++-------------------+ +| foobar | ++-------------------+ +``` + +如果您通过VTGate执行这些查询,那么第一个SET查询不会被发送到MySQL。而是在VTGate内部进行处理,VTGate会为您维护这个状态。同样,第二个查询也不会下发。像这 +类简单的查询,实际上都是直接在VTGate上完全执行的。 + +如果我们尝试一个更复杂的查询,需要从MySQL获取数据,VTGate会在发送之前重写查询。如果我们要写类似这样的内容: + +```sql +WHERE col = @my_user_variable +``` + +MySQL将看到的是: + +```sql +WHERE col = 'foobar' +``` + +这样一来,在MySQL中评估查询就无需依赖会话状态了。 + +## 服务器系统变量 + +用户可能还希望更改MySQL公开的众多不同系统变量中的一个。Vitess通过五种不同方式处理系统变量: +无操作:对于某些设置,Vitess将默默地忽略。这适用于在分片设置中没有太大意义,且不会以有趣方式改变MySQL行为的系统变量。 +检查并在未预设情况下失败:这些设置不应更改,但如果SET语句尝试将变量设置为其当前值,Vitess会允许。 +不支持:尝试更改这些设置将始终返回错误。 +Vitess感知:这些设置会改变Vitess的行为,不会发送到MySQL。 +保留连接:对于某些设置,允许设置它们是合理的,但这会使使用共享连接变得更加困难。默认情况下,Vitess会首先应用这些系统变量,然后为该用户保留连接。连接池 +对Vitess的性能至关重要,因此这不应成为Vitess上运行应用程序的常态。只需确保应用程序将设置的全局变量与Vitess的设置值相同,Vitess就可以使用连接池。 + 此外,Vitess确保@@version包含模拟的MySQL版本和Vitess版本,如:`5.7.9-vitess-14.0.0`。此值可以通过`--mysql_server_version`标志更改。 From d38b272230752f36a3f7f89ab38ccc3d129bda47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 11:46:12 -0600 Subject: [PATCH 09/20] add VStream section & diagram; fixes topo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- content/zh/docs/19.0/concepts/img/VStream.svg | 1 + content/zh/docs/19.0/concepts/topology-service.md | 2 +- content/zh/docs/19.0/concepts/vstream.md | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 content/zh/docs/19.0/concepts/img/VStream.svg create mode 100644 content/zh/docs/19.0/concepts/vstream.md diff --git a/content/zh/docs/19.0/concepts/img/VStream.svg b/content/zh/docs/19.0/concepts/img/VStream.svg new file mode 100644 index 000000000..47b54d4a1 --- /dev/null +++ b/content/zh/docs/19.0/concepts/img/VStream.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/content/zh/docs/19.0/concepts/topology-service.md b/content/zh/docs/19.0/concepts/topology-service.md index 95ad2ab13..0b2f7d8a9 100644 --- a/content/zh/docs/19.0/concepts/topology-service.md +++ b/content/zh/docs/19.0/concepts/topology-service.md @@ -1,5 +1,5 @@ --- -title: topology-service +title: Topology Service description: 拓扑或分布式锁服务 --- diff --git a/content/zh/docs/19.0/concepts/vstream.md b/content/zh/docs/19.0/concepts/vstream.md new file mode 100644 index 000000000..68cae6529 --- /dev/null +++ b/content/zh/docs/19.0/concepts/vstream.md @@ -0,0 +1,14 @@ +--- +title: VStream +--- + +VStream是通过VTGate访问的变更通知服务。VStream的目的是提供等同于Vitess集群底层MySQL分片的MySQL二进制日志的信息。gRPC客户端,包括Vitess组件如VTTablets>,可以订阅VStream以接收来自其他分片的变更事件。VStream从一个或多个位于VTTablet实例上的VStreamer实例拉取事件,这些VStreamer实例反过来从底层MySQL实例的> 二进制日志中拉取事件。这允许高效执行如VReplication之类的功能,订阅者可以间接地从一个或多个MySQL实例分片的二进制日志接收事件,然后将其应用到目标实例。> 用户可以利用VStream获取关于给定Vitess键空间、分片和位置的数据变更事件的深入信息。单个VStream还可以整合来自键空间中多个分片的变更事件,使其成为一个方便 +的工具,用于将变更数据捕获(CDC)过程从您的Vitess数据存储下游引导。 + +请参考下图: + +![VStream diagram](/img/VStream.svg) + +请注意:VStream与VStreamer是不同的。前者位于VTGate上,后者位于VTTablet上 + + From d2a8ace1deb9eed9356625aa05afdbe2c6fa9ad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 11:52:00 -0600 Subject: [PATCH 10/20] separates vtgate, vtctl & vtctld into its own sections MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- content/zh/docs/19.0/concepts/vtctl.md | 9 +++++++++ content/zh/docs/19.0/concepts/vtctld.md | 7 +++++++ content/zh/docs/19.0/concepts/vtgate.md | 9 +++++++++ 3 files changed, 25 insertions(+) create mode 100644 content/zh/docs/19.0/concepts/vtctl.md create mode 100644 content/zh/docs/19.0/concepts/vtctld.md create mode 100644 content/zh/docs/19.0/concepts/vtgate.md diff --git a/content/zh/docs/19.0/concepts/vtctl.md b/content/zh/docs/19.0/concepts/vtctl.md new file mode 100644 index 000000000..dda676575 --- /dev/null +++ b/content/zh/docs/19.0/concepts/vtctl.md @@ -0,0 +1,9 @@ +--- +title: vtctl +--- + +vtctl vtctl是一个用于管理Vitess集群的命令行工具。它允许用户或应用程序轻松地与Vitess实现交互。使用vtctl,您可以识别主数据库和副本数据库,创建表,启动故障转移,执行分片(和重新分片)操作等。 + +当vtctl执行操作时,它会根据需要更lockserver。其他Vitess服务器会观察这些变化并做出相应的反应。例如,如果使用vtctl故障转移到新的主数据库,则vtgate会查看更改并将将写入流量切到新主服务器。 + + diff --git a/content/zh/docs/19.0/concepts/vtctld.md b/content/zh/docs/19.0/concepts/vtctld.md new file mode 100644 index 000000000..5e4d581ff --- /dev/null +++ b/content/zh/docs/19.0/concepts/vtctld.md @@ -0,0 +1,7 @@ +--- +title: vtctld +--- + +vtctld vtctld是一个HTTP服务器,允许您浏览存储在lockserver中的信息。它对于故障排除或获取服务器及其当前状态的高层概观非常有用。 + + diff --git a/content/zh/docs/19.0/concepts/vtgate.md b/content/zh/docs/19.0/concepts/vtgate.md new file mode 100644 index 000000000..f38708004 --- /dev/null +++ b/content/zh/docs/19.0/concepts/vtgate.md @@ -0,0 +1,9 @@ +--- +title: VTGate +--- + +vtgate 是一个轻型代理服务器,它将流量路由到正确的vttablet,并将合并的结果返回给客户端。应用程序向vtgate发起查询。客户端使用起来非常简单,它只需要能够找到vtgate实例就能使vitess。 + +为了路由查询,vtgate综合考虑了分片方案、数据延迟以及vttablet及其对应底层MySQL实例的可用性。 + + From 9ccd7cb9cfc81a831bef17032e7bac1adf1a111f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 11:58:42 -0600 Subject: [PATCH 11/20] rm vt concepts from architecture section; link concepts in VTGate section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- content/zh/docs/19.0/concepts/vtgate.md | 2 ++ content/zh/docs/19.0/overview/architecture.md | 24 +------------------ 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/content/zh/docs/19.0/concepts/vtgate.md b/content/zh/docs/19.0/concepts/vtgate.md index f38708004..32ca1bfef 100644 --- a/content/zh/docs/19.0/concepts/vtgate.md +++ b/content/zh/docs/19.0/concepts/vtgate.md @@ -6,4 +6,6 @@ vtgate 是一个轻型代理服务器,它将流量路由到正确的vttablet 为了路由查询,vtgate综合考虑了分片方案、数据延迟以及vttablet及其对应底层MySQL实例的可用性。 +相关Vitess文档 +* [Execution Plans](../execution-plans) diff --git a/content/zh/docs/19.0/overview/architecture.md b/content/zh/docs/19.0/overview/architecture.md index 41693c786..400a950db 100644 --- a/content/zh/docs/19.0/overview/architecture.md +++ b/content/zh/docs/19.0/overview/architecture.md @@ -15,28 +15,6 @@ Vitess平台由许多服务器进程、命令行实用程序和基于Web的实 Architecture Diagram -## vtgate - -**vtgate** 是一个轻型代理服务器,它将流量路由到正确的vttablet,并将合并的结果返回给客户端。应用程序向vtgate发起查询。客户端使用起来非常简单,它只需要能够找到vtgate实例就能使vitess。 - -为了路由查询,vtgate综合考虑了分片方案、数据延迟以及vttablet及其对应底层MySQL实例的可用性。 - -## vttablet - -**vttablet** 是一个位于MySQL数据库前面的代理服务器。vitess实现中每个MySQL实例都有一个vttablet。 - -执行的任务试图最大化吞吐量,同时保护mysql不受有害查询的影响。它的特性包括连接池、查询重写和重用重复数据。此外,vtTablet执行vtcl启动的管理任务,并提供用于过滤复制和数据导出的流式服务。 - -通过在MySQL数据库前运行vttablet并更改您的应用程序以使用Vitess客户端而不是MySQL驱动程序,您的应用程序将受益于vttablet的连接池,查询重写和重用数据集等功能。 - -## vtctl - -**vtctl** vtctl是一个用于管理Vitess集群的命令行工具。它允许用户或应用程序轻松地与Vitess实现交互。使用vtctl,您可以识别主数据库和副本数据库,创建表,启动故障转移,执行分片(和重新分片)操作等。 - -当vtctl执行操作时,它会根据需要更lockserver。其他Vitess服务器会观察这些变化并做出相应的反应。例如,如果使用vtctl故障转移到新的主数据库,则vtgate会查看更改并将将写入流量切到新主服务器。 - -## vtctld - -**vtctld** vtctld是一个HTTP服务器,允许您浏览存储在lockserver中的信息。它对于故障排除或获取服务器及其当前状态的高层概观非常有用。 +有关每个组件的更多详情,请参见[概念](../../concepts). From 9bf8e8c4f7b3b6440700605735d5cc9ff3d54d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 12:00:12 -0600 Subject: [PATCH 12/20] small nit with a comma MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- content/zh/docs/19.0/overview/architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/19.0/overview/architecture.md b/content/zh/docs/19.0/overview/architecture.md index 400a950db..1c5a35633 100644 --- a/content/zh/docs/19.0/overview/architecture.md +++ b/content/zh/docs/19.0/overview/architecture.md @@ -16,5 +16,5 @@ Vitess平台由许多服务器进程、命令行实用程序和基于Web的实 -有关每个组件的更多详情,请参见[概念](../../concepts). +有关每个组件的更多详情,请参见[概念](../../concepts). From c02b70b6b9ad42ebd9c4150f5da19aed234fd7e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 12:02:43 -0600 Subject: [PATCH 13/20] rm duplicate 'vtctld' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- content/zh/docs/19.0/concepts/vtctld.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/19.0/concepts/vtctld.md b/content/zh/docs/19.0/concepts/vtctld.md index 5e4d581ff..b1161b9b7 100644 --- a/content/zh/docs/19.0/concepts/vtctld.md +++ b/content/zh/docs/19.0/concepts/vtctld.md @@ -2,6 +2,6 @@ title: vtctld --- -vtctld vtctld是一个HTTP服务器,允许您浏览存储在lockserver中的信息。它对于故障排除或获取服务器及其当前状态的高层概观非常有用。 +vtctld是一个HTTP服务器,允许您浏览存储在lockserver中的信息。它对于故障排除或获取服务器及其当前状态的高层概观非常有用。 From bcd02ec48857f095d9ba7f5dd3d0aa1ac7bc3490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 12:24:42 -0600 Subject: [PATCH 14/20] remove .DS_Store files & add rule to gitignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- .DS_Store | Bin 6148 -> 0 bytes .gitignore | 3 +++ content/.DS_Store | Bin 6148 -> 0 bytes content/zh/.DS_Store | Bin 6148 -> 0 bytes content/zh/docs/.DS_Store | Bin 6148 -> 0 bytes content/zh/docs/19.0/.DS_Store | Bin 6148 -> 0 bytes 6 files changed, 3 insertions(+) delete mode 100644 .DS_Store delete mode 100644 content/.DS_Store delete mode 100644 content/zh/.DS_Store delete mode 100644 content/zh/docs/.DS_Store delete mode 100644 content/zh/docs/19.0/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 77fc116c8688e264cd0241fc54e0c2b277deb329..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKF>V4u473xZAkk1#?iccd6(TR-15tnu<%%TzRe4vQmKobc&_M?U(OB}%uGh1x zo#K2pGhcu0pUswLHir}Ko5R$&PoLOBMH~pn83%i}&;7^l_%=+k&j-kTvYicN{^bux zZpoy86p#W^Knh5KD=Sb1cD}gsxjIe?NP+uTfZvA(C-%ZIF+Lp_q6GlX5DvpUdI?}- z0N4x1L_}boRA5rQS`1G*;;r&};h30o^J+f4ZuaU>JZ{JNEz-? z$fJC|7|$c|NvHr77>NS*eJF5aO}3zaIuLvW0B0z>VePX7SgZinWDBAK(`W^wRecPx zy0?QR_tj(zM!RSZADVYon_^%Z?V<$&NR^{g72#H#q3q5#D|Rkl0bYguCH-u?1L@Er<$?KLRcT0~PqG0#E;d B5I+C_ diff --git a/content/zh/.DS_Store b/content/zh/.DS_Store deleted file mode 100644 index b1bc858e925d93fb375ed4bdb59c7154b9b72c92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~F>b>!3`IX%4*|M(?5HIN=naG*JwYxI#2y292)gU&`J}kS%^VoPCqO=tGGY4< zmI=TPfAbG80@%@=*n3!+F&{8v!Gzm5@b5#RJ8QCa#;1cJMgVePIgIO=CCK6hvL;(6D>TdL!Lrq2 z4DoujlO?aK$=2E1VL5zQ-r0PLp;>Q-6(%&R0R<@_1y%}t_I&j7|Cj!3{$I5yl>$=W z%@nZVcsd^VQhB!idp)n8v+Cx@qaLyQ3Az;YPZF-wre3uH~UPF84^(}QKJ z#TerCXeUcvSCg%?x5IMyu)MSR6hpJ#4l7J(Rs#xBKnhG0`0V-U=l_xZZvLOND3tOunD|k=q=#|8_=2p-*2xM@KLR0xf)w~u F1s=0_5zPPq diff --git a/content/zh/docs/19.0/.DS_Store b/content/zh/docs/19.0/.DS_Store deleted file mode 100644 index 15fc565f4bf4be77115d109d26267d8cf63b45ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJ8r`;3?>(oxgyW1)`H)Gz_NVtlll^Hg$K#o*^3fwC2 z7|Y)3{|o$&{{NQ56&0WYccp-C#@#sJNm*N)$62i{@K?CyT;OJyI|YN6W1yE~EUX+q dds5^Tn`6HwE`d%*-0496445u7D)8S5TmgAa6~O=i From cb607d83c5d7e98a4dc340af5d04b0aca732c47c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 18:25:40 +0000 Subject: [PATCH 15/20] Update content/zh/docs/19.0/concepts/move-tables.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Florent Poinsard <35779988+frouioui@users.noreply.github.com> Signed-off-by: Verónica López --- content/zh/docs/19.0/concepts/move-tables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/19.0/concepts/move-tables.md b/content/zh/docs/19.0/concepts/move-tables.md index df734f5c4..c700632c0 100644 --- a/content/zh/docs/19.0/concepts/move-tables.md +++ b/content/zh/docs/19.0/concepts/move-tables.md @@ -2,7 +2,7 @@ title: Move Tables --- -"MoveTables"基于VReplication的新流程,能让你实现零停机时间内,把表从一个键空间迁移到另一个,即在不同的物理MySQL实例间搬迁数据。 +"MoveTables"基于VReplication的新流程,使你能够在零停机时间内将表从一个键空间迁移到另一个,即在不同的物理MySQL实例间搬迁数据。 ## 生产流量影响小秘诀 内部来说,MoveTables 操作既包含了表的复制,也涉及到对表更改的实时订阅。Vitess利用批处理技术,旨在提升表复制和应用订阅更改的效率。通俗讲,修改频率低的表迁移会更快一些。 From ec7cb8c81720be94dfdbe162f812f2374fe96dcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 12:26:56 -0600 Subject: [PATCH 16/20] one more DS_Store file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Verónica López --- content/zh/docs/19.0/overview/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 content/zh/docs/19.0/overview/.DS_Store diff --git a/content/zh/docs/19.0/overview/.DS_Store b/content/zh/docs/19.0/overview/.DS_Store deleted file mode 100644 index 3d3a37410d06e34ca073d925f34fa06c7c387c20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKPfNov6i>G4I)>1L!j1v21NTRU;-%F21+3^nWwv(AV%LndvxhP0S-+5<#Lwe< zNeT{k@Fe2igXH(}{-ntdn&dIYxVs3ujMXj?%2t`QVjmZD+S`)vcy=?>))f%lvGSy8iqYM^{qDL8<$} zbu`XL_Wrp{GCxYjbCnQfLATcy{geKxEtaRf zPFo!J2dh=XIygK!yBs~o(?q^%IytbdWY1s;Z=jgngy~}(!0Is6m|nbj63b))mU4nJ zk&qZ528aP-V2cS1`Cbq=zva@0Dv_xD*+vA3Cs}& z9fO5N@PKfg3aC@LDKWTC2fHwFj=@5sPG{T{AKZMoEMBWKkjV4VT1 zeL-xz|1aQ|*;wSO5bB5lV&K0rz-vQq=)&&I-TG~xc-IPO571CBu0RC@^tDF-4DcLj fDW~=e)FI9>SZKsq(5}(}=^>y9p^g~%1qMC=Fpy3I From 167b1fec309d5cbca67e84331d53ae17f122e65c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 18:31:53 +0000 Subject: [PATCH 17/20] Update content/zh/docs/19.0/overview/architecture.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Florent Poinsard <35779988+frouioui@users.noreply.github.com> Signed-off-by: Verónica López --- content/zh/docs/19.0/overview/architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/19.0/overview/architecture.md b/content/zh/docs/19.0/overview/architecture.md index 1c5a35633..d2c72767e 100644 --- a/content/zh/docs/19.0/overview/architecture.md +++ b/content/zh/docs/19.0/overview/architecture.md @@ -16,5 +16,5 @@ Vitess平台由许多服务器进程、命令行实用程序和基于Web的实 -有关每个组件的更多详情,请参见[概念](../../concepts). +欲了解每个组件的详细信息,请参考相关[概念文档](../../concepts). From ab254be29b9e6a550a54c190e6fe9095d239975c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 18:52:48 +0000 Subject: [PATCH 18/20] Update content/zh/docs/19.0/concepts/execution-plans.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Frances Thai <31225471+notfelineit@users.noreply.github.com> Signed-off-by: Verónica López --- content/zh/docs/19.0/concepts/execution-plans.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/19.0/concepts/execution-plans.md b/content/zh/docs/19.0/concepts/execution-plans.md index 7b5eef253..4b847ee13 100644 --- a/content/zh/docs/19.0/concepts/execution-plans.md +++ b/content/zh/docs/19.0/concepts/execution-plans.md @@ -4,4 +4,4 @@ title: Execution Plan Vitess在VTGate和VTTablet层面对查询进行解析,目的是找到执行查询的最优方式。这一过程称为查询规划,其结果是生成一份"Execution Plan"。 -这个"Execution Plan"既取决于查询本身,也依赖于相关的VSchema。Vitess的规划策略一个核心目标是尽量将工作量下推至底层MySQL实例。当无法实现下推时,Vitess会采取一种方案,通过汇总多个来源的输入并合并结果,以得出正确的查询输出。 +这个"Execution Plan"既取决于查询本身,也依赖于相关的VSchema。Vitess规划策略目标之一是尽量将工作量下推至底层的MySQL实例。当无法实现下推时,Vitess会采取一种方案,通过汇总多个来源的输入,合并结果,以得出正确的查询输出。 From 4d3425c17c054013a134b9c38759f71e6cbb6a8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 18:52:54 +0000 Subject: [PATCH 19/20] Update content/zh/docs/19.0/concepts/vtctl.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Florent Poinsard <35779988+frouioui@users.noreply.github.com> Signed-off-by: Verónica López --- content/zh/docs/19.0/concepts/vtctl.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/19.0/concepts/vtctl.md b/content/zh/docs/19.0/concepts/vtctl.md index dda676575..cf017f4c9 100644 --- a/content/zh/docs/19.0/concepts/vtctl.md +++ b/content/zh/docs/19.0/concepts/vtctl.md @@ -4,6 +4,6 @@ title: vtctl vtctl vtctl是一个用于管理Vitess集群的命令行工具。它允许用户或应用程序轻松地与Vitess实现交互。使用vtctl,您可以识别主数据库和副本数据库,创建表,启动故障转移,执行分片(和重新分片)操作等。 -当vtctl执行操作时,它会根据需要更lockserver。其他Vitess服务器会观察这些变化并做出相应的反应。例如,如果使用vtctl故障转移到新的主数据库,则vtgate会查看更改并将将写入流量切到新主服务器。 +在执行vtctl操作时,它会根据需要锁定lockserver。其他Vitess服务器会监测这些变化并做出相应的响应。例如,如果使用vtctl 执行主数据库切换以进行故障转移,vtgate将检测到这些变化并将写入流量切换到新的主服务器。 From b00b26fecec8cf42eefd5d44317c5a16de3b2eef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20L=C3=B3pez?= Date: Fri, 9 Feb 2024 20:29:58 +0000 Subject: [PATCH 20/20] Update content/zh/docs/19.0/concepts/vtctl.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Florent Poinsard <35779988+frouioui@users.noreply.github.com> Signed-off-by: Verónica López --- content/zh/docs/19.0/concepts/vtctl.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/zh/docs/19.0/concepts/vtctl.md b/content/zh/docs/19.0/concepts/vtctl.md index cf017f4c9..c0e4f23ef 100644 --- a/content/zh/docs/19.0/concepts/vtctl.md +++ b/content/zh/docs/19.0/concepts/vtctl.md @@ -2,7 +2,7 @@ title: vtctl --- -vtctl vtctl是一个用于管理Vitess集群的命令行工具。它允许用户或应用程序轻松地与Vitess实现交互。使用vtctl,您可以识别主数据库和副本数据库,创建表,启动故障转移,执行分片(和重新分片)操作等。 +vtctl是一个用于管理Vitess集群的命令行工具。它允许用户或应用程序轻松地与Vitess实现交互。使用vtctl,您可以识别主数据库和副本数据库,创建表,启动故障转移,执行分片(和重新分片)操作等。 在执行vtctl操作时,它会根据需要锁定lockserver。其他Vitess服务器会监测这些变化并做出相应的响应。例如,如果使用vtctl 执行主数据库切换以进行故障转移,vtgate将检测到这些变化并将写入流量切换到新的主服务器。