Skip to content

Releases: vitessio/vitess

Vitess v16.0.7

20 Dec 14:09
6c9f87d
Compare
Choose a tag to compare

Release of Vitess v16.0.7

The entire changelog for this release can be found here.

The release includes 18 merged Pull Requests.

Thanks to all our contributors: @GuptaManan100, @deepthi, @frouioui, @harshit-gangal, @maxenglander, @shlomi-noach, @systay

Vitess v18.0.1

22 Nov 08:53
aa72dc8
Compare
Choose a tag to compare

Release of Vitess v18.0.1

The entire changelog for this release can be found here.

The release includes 17 merged Pull Requests.

Thanks to all our contributors: @app/vitess-bot, @frouioui, @harshit-gangal, @shlomi-noach

Vitess v17.0.4

13 Nov 08:15
9a3d0f4
Compare
Choose a tag to compare

Release of Vitess v17.0.4

The entire changelog for this release can be found here.

The release includes 23 merged Pull Requests.

Thanks to all our contributors: @GuptaManan100, @app/github-actions, @app/vitess-bot, @mattlord, @shlomi-noach

Vitess v16.0.6

13 Nov 07:55
a7f80a8
Compare
Choose a tag to compare

Release of Vitess v16.0.6

The entire changelog for this release can be found here.

The release includes 21 merged Pull Requests.

Thanks to all our contributors: @app/github-actions, @app/vitess-bot, @harshit-gangal, @shlomi-noach

Vitess v18.0.0

06 Nov 12:13
9a6f526
Compare
Choose a tag to compare

Release of Vitess v18.0.0

Summary

Table of Contents

Major Changes

Breaking Changes

Local examples now use etcd v3 storage and API

In previous releases the local examples were
explicitly using etcd v2 storage (etcd --enable-v2=true) and API (ETCDCTL_API=2) mode. We have now
removed this legacy etcd usage and instead use the new (default) etcd v3 storage and API. Please see
PR #13791 for details. If you are using the local
examples in any sort of long-term non-testing capacity, then you will need to explicitly use the v2 storage
and API mode or migrate your existing data from v2 to v3.

New command line flags and behavior

VTOrc flag --allow-emergency-reparent

VTOrc has a new flag --allow-emergency-reparent that specifies whether VTOrc is allowed to run emergency
failover operations. Users that want VTOrc to fix replication issues, but don't want it to run any failovers
should use this flag. This flag defaults to true which corresponds to the default behavior from prior releases.

VTOrc flag --change-tablets-with-errant-gtid-to-drained

VTOrc has a new flag --change-tablets-with-errant-gtid-to-drained that allows users to choose whether VTOrc should change the
tablet type of tablets with errant GTIDs to DRAINED. By default, this flag is disabled.

This feature allows users to configure VTOrc such that any tablet that encounters errant GTIDs is automatically taken out of the
serving graph. These tablets can then be inspected for what the errant GTIDs are, and once fixed, they can rejoin the cluster.

ERS sub flag --wait-for-all-tablets

vtctldclient command EmergencyReparentShard has a new sub-flag --wait-for-all-tablets that makes EmergencyReparentShard wait
for a response from all the tablets. Originally EmergencyReparentShard was meant only to be run when a primary tablet is unreachable.
We have realized now that there are cases when replication is broken but all tablets are reachable. In these cases, it is advisable to
call EmergencyReparentShard with --wait-for-all-tablets so that it does not ignore any of the tablets.

VTGate GRPC stream execute session flag --grpc-send-session-in-streaming

This flag enables transaction support on VTGate's StreamExecute gRPC API.
When this is enabled, StreamExecute will return the session in the last packet of the response.
Users should enable this flag only after client code has been changed to expect such a packet.

It is disabled by default.

Experimental Foreign Key Support

A new optional field foreignKeyMode has been added to the VSchema. This field can be provided for each keyspace. The VTGate flag --foreign_key_mode has been deprecated in favor of this field.

There are 3 foreign key modes now supported in Vitess -

  1. unmanaged -
    This mode represents the default behavior in Vitess, where it does not manage foreign key column references. Users are responsible for configuring foreign keys in MySQL in such a way that related rows, as determined by foreign keys, reside within the same shard.
  2. managed [EXPERIMENTAL] -
    In this experimental mode, Vitess is fully aware of foreign key relationships and actively tracks foreign key constraints using the schema tracker. VTGate will handle DML operations with foreign keys and correctly cascade updates and deletes.
    It will also verify restrict constraints and validate the existence of parent rows before inserting child rows.
    This ensures that all child operations are logged in binary logs, unlike the InnoDB implementation of foreign keys.
    This allows the usage of VReplication workflows with foreign keys.
    Implementation details are documented in the RFC for foreign keys.
  3. disallow -
    In this mode Vitess explicitly disallows any DDL statements that try to create a foreign key constraint. This mode is equivalent to running VTGate with the flag --foreign_key_mode=disallow.

In addition to query support, there is a new flag to MoveTables called --atomic-copy which should be used to import data into Vitess from databases which have foreign keys defined in the schema.

Upgrade process

After upgrading from v17 to v18, users should specify the correct foreign key mode for all their keyspaces in the VSchema using the new property.
Once this change has taken effect, the deprecated flag --foreign_key_mode can be dropped from all VTGates. Note that this is only required if running in disallow mode.
No action is needed to use unmanaged mode.

VTAdmin

vtadmin-web updated to node v18.16.0 (LTS)

Building vtadmin-web now requires node >= v18.16.0 (LTS). Breaking changes from v16 to v18 are listed
in https://nodejs.org/en/blog/release/v18, but none apply to VTAdmin. Full details on node v18.16.0 are listed
on https://nodejs.org/en/blog/release/v18.16.0.

Deprecations and Deletions

Legacy Client Binaries

vtctldclient is our new modern Vitess controller daemon (vtctld) client – which you will use to perform commands
and take actions in your Vitess clusters. It is replacing the legacy vtctl/vtctlclient binaries.
Some of the benefits are:

In Vitess 18 we have completed migrating all client commands to vtctldclient – the last ones being the OnlineDDL
and VReplication commands. With this work now completed, the
legacy vtctl/vtctlclient binaries are now fully deprecated and we plan to remove them in Vitess 19. You should
begin your transition before upgrading to Vitess 18.

Deprecated Command Line Flags

Throttler related vttablet flags:

  • --throttle_threshold is deprecated and will be removed in v19
  • --throttle_metrics_query is deprecated and will be removed in v19
  • --throttle_metrics_threshold is deprecated and will be removed in v19
  • --throttle_check_as_check_self is deprecated and will be removed in v19
  • --throttler-config-via-topo is deprecated after assu...
Read more

Vitess v18.0.0-rc1

03 Oct 14:24
6ab165a
Compare
Choose a tag to compare
Vitess v18.0.0-rc1 Pre-release
Pre-release

Release of Vitess v18.0.0-rc1

Summary

Table of Contents

Major Changes

Breaking Changes

Local examples now use etcd v3 storage and API

In previous releases the local examples were
explicitly using etcd v2 storage (etcd --enable-v2=true) and API (ETCDCTL_API=2) mode. We have now
removed this legacy etcd usage and instead use the new (default) etcd v3 storage and API. Please see
PR #13791 for additional info. If you are using the local
examples in any sort of long-term non-testing capacity, then you will need to explicitly use the v2 storage
and API mode or migrate your existing data from v2 to v3.

New command line flags and behavior

VTOrc flag --allow-emergency-reparent

VTOrc has a new flag --allow-emergency-reparent that allows the users to toggle the ability of VTOrc to run emergency
reparent operations. Users that want VTOrc to fix the replication issues, but don't want it to run any reparents
should start using this flag. By default, VTOrc will be able to run EmergencyReparentShard. Users must specify the
flag to false to change the behaviour.

VTOrc flag --change-tablets-with-errant-gtid-to-drained

VTOrc has a new flag --change-tablets-with-errant-gtid-to-drained that allows users to choose whether VTOrc should change the
tablet type of tablets with errant GTIDs to DRAINED. By default, it is disabled.

This feature allows users to configure VTOrc such that any tablet that encounters errant GTIDs is automatically taken out of the
serving graph. These tablets can then be inspected for what the errant GTIDs are, and once fixed, they can rejoin the cluster.

ERS sub flag --wait-for-all-tablets

Running EmergencyReparentShard from the vtctldclient has a new sub-flag --wait-for-all-tablets that makes EmergencyReparentShard wait
for a response from all the tablets. Originally EmergencyReparentShard was meant only to be run when a primary tablet is unreachable.
We have realized now that there are cases when the replication is broken but all the tablets are reachable. In these cases, it is advisable to
call EmergencyReparentShard with --wait-for-all-tablets so that it does not ignore one of the tablets.

VTGate GRPC stream execute session flag --grpc-send-session-in-streaming

This flag enables transaction support on StreamExecute api.
Once enabled, VTGate StreamExecute gRPC api will send session as the last packet in the response.
The client should enable it only when they have made the required changes to expect such a packet.

It is disabled by default.

Experimental Foreign Key Support

A new field foreignKeyMode has been added to the VSchema. This field can be provided for each keyspace. The VTGate flag --foreign_key_mode has been deprecated in favour of this field.

There are 3 foreign key modes now supported in Vitess -

  1. unmanaged -
    This mode represents the default behaviour in Vitess, where it does not manage foreign keys column references. Users are responsible for configuring foreign keys in MySQL in such a way that related rows, as determined by foreign keys, reside within the same shard.
  2. managed [EXPERIMENTAL] -
    In this experimental mode, Vitess is fully aware of foreign key relationships and actively tracks foreign key constraints using the schema tracker. Vitess takes charge of handling DML operations with foreign keys cascading updates, deletes and verifying restrict. It will also validate parent row existence.
    This ensures that all the operations are logged in binary logs, unlike MySQL implementation of foreign keys.
    This enables seamless integration of VReplication with foreign keys.
    For more details on what operations Vitess takes please refer to the design document for foreign keys.
  3. disallow -
    In this mode Vitess explicitly disallows any DDL statements that try to create a foreign key constraint. This mode is equivalent to running VTGate with the flag --foreign_key_mode=disallow.

Upgrade process

After upgrading from v17 to v18, the users should specify the correct foreign key mode for all their keyspaces in the VSchema using the new property.
Once this change has taken effect, the deprecated flag --foreign_key_mode can be dropped from all the VTGates.

VTAdmin

vtadmin-web updated to node v18.16.0 (LTS)

Building vtadmin-web now requires node >= v18.16.0 (LTS). Breaking changes from v16 to v18 are listed
in https://nodejs.org/en/blog/release/v18.0.0, but none apply to VTAdmin. Full details on v18.16.0 are listed
on https://nodejs.org/en/blog/release/v18.16.0.

Deprecations and Deletions

Deprecated Command Line Flags

Throttler related vttablet flags:

  • --throttle_threshold is deprecated and will be removed in v19.0
  • --throttle_metrics_query is deprecated and will be removed in v19.0
  • --throttle_metrics_threshold is deprecated and will be removed in v19.0
  • --throttle_check_as_check_self is deprecated and will be removed in v19.0
  • --throttler-config-via-topo is deprecated after assumed true in v17.0. It will be removed in a future version.

Cache related vttablet flags:

  • --queryserver-config-query-cache-lfu is deprecated and will be removed in v19.0. The query cache always uses a LFU implementation now.
  • --queryserver-config-query-cache-size is deprecated and will be removed in v19.0. This option only applied to LRU caches, which are now unsupported.

Buffering related vtgate flags:

  • --buffer_implementation is deprecated and will be removed in v19.0

Cache related vtgate flags:

  • --gate_query_cache_lfu is deprecated and will be removed in v19.0. The query cache always uses a LFU implementation now.
  • --gate_query_cache_size is deprecated and will be removed in v19.0. This option only applied to LRU caches, which are now unsupported.

VTGate flags:

  • --schema_change_signal_user is deprecated and will be removed in v19.0
  • --foreign_key_mode is deprecated and will be removed in v19.0. For more detail read the foreign keys section.

VDiff v1:

VDiff v2 was added in Vitess 15.0 and marked as GA in 16.0.
The legacy v1 client command is now deprecated in Vitess 18.0 and will be removed in 19.0.
Please switch all of your usage to the new VDiff client command ASAP.

Deprecated Stats

The following EmergencyReparentShard stats are deprecated in v18.0 and will be removed in v19.0:

  • ers_counter
  • ers_success_counter
  • ers_failure_counter

These metrics are replaced by new reparenting stats introduced in v18.0.

VTBackup stat DurationByPhase is deprecated. Use the binary-valued Phase stat instead.

Deleted Command Line Flags

Flags in vtcombo:

  • --vtctld_addr

Flags in vtctldclient ApplySchema:

  • --skip-preflight

Flags in vtctl ApplySchema:

  • --skip_preflight

Flags in vtgate:

  • --vtctld_addr

Flags in vttablet:

  • --vtctld_addr
  • --use_super_read_only
  • --disable-replication-manager
  • --init_populate_metadata
  • --queryserver-config-pool-prefill-parallelism
  • `-...
Read more

Vitess v17.0.3

03 Oct 14:42
dced85d
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.17.2...v17.0.3

Vitess v16.0.5

03 Oct 14:29
fd462ff
Compare
Choose a tag to compare

Release of Vitess v16.0.5

The entire changelog for this release can be found here.

The release includes 29 merged Pull Requests.

Thanks to all our contributors: @GuptaManan100, @app/github-actions, @app/vitess-bot, @arthurschreiber, @rohit-nayak-ps

Vitess v15.0.5

03 Oct 14:20
1871cee
Compare
Choose a tag to compare

Release of Vitess v15.0.5

The entire changelog for this release can be found here.

The release includes 20 merged Pull Requests.

Thanks to all our contributors: @GuptaManan100, @app/vitess-bot, @arthurschreiber, @frouioui, @shlomi-noach, @systay

Vitess v17.0.2

18 Aug 12:53
96ac0a6
Compare
Choose a tag to compare

Changelog of Vitess v17.0.2

Bug fixes

Backup and Restore

  • [release-17.0] Address vttablet memory usage with backups to Azure Blob Service (#13770) #13775
  • [release-17.0] Do not drain tablet in incremental backup (#13773) #13789

Cluster management

  • [release-17.0] Flaky tests: Fix race in memory topo (#13559) #13577

Evalengine

  • [release-17.0] Fix a number of encoding issues when evaluating expressions with the evalengine (#13509) #13551
  • [release-17.0] fastparse: Fix bug in overflow detection (#13702) #13705

Online DDL

  • v17 backport: Fix closed channel panic in Online DDL cutover #13731
  • v17 backport: Solve RevertMigration.Comment read/write concurrency issue #13734

Query Serving

  • [release-17.0] Fix flaky vtgate test TestInconsistentStateDetectedBuffering (#13560) #13575
  • [release-17.0] vtgate: fix race condition iterating tables and views from schema tracker (#13673) #13796

CI/Build

Backup and Restore

  • [release-17.0] Fixing backup_pitr flaky tests via wait-for loop on topo reads (#13781) #13790

Online DDL

  • [release-17.0] CI: fix onlineddl_scheduler flakiness (#13754) #13760

Release

General

  • Back to dev mode after v17.0.1 #13663

Testing

Build/CI

  • [release-17.0] Flakes: Delete VTDATAROOT files in reparent test teardown within CI (#13793) #13798