Skip to content

Releases: vitessio/vitess

Vitess v21.0.1

03 Dec 05:31
3d4f41d
Compare
Choose a tag to compare

Release of Vitess v21.0.1

The entire changelog for this release can be found here.

The release includes 25 merged Pull Requests.

Thanks to all our contributors: @GuptaManan100, @app/vitess-bot, @frouioui, @vitess-bot

Vitess v20.0.4

03 Dec 05:18
1cea0b8
Compare
Choose a tag to compare

Release of Vitess v20.0.4

The entire changelog for this release can be found here.

The release includes 10 merged Pull Requests.

Thanks to all our contributors: @app/vitess-bot, @frouioui

Vitess v19.0.8

03 Dec 05:03
2665aa2
Compare
Choose a tag to compare

Release of Vitess v19.0.8

The entire changelog for this release can be found here.

The release includes 11 merged Pull Requests.

Thanks to all our contributors: @app/vitess-bot, @frouioui, @vitess-bot

Vitess v20.0.3

06 Nov 05:41
6eddcae
Compare
Choose a tag to compare

Release of Vitess v20.0.3

The entire changelog for this release can be found here.

The release includes 23 merged Pull Requests.

Thanks to all our contributors: @app/vitess-bot, @frouioui, @timvaillancourt, @vitess-bot

Vitess v19.0.7

06 Nov 05:24
087964b
Compare
Choose a tag to compare

Release of Vitess v19.0.7

The entire changelog for this release can be found here.

The release includes 24 merged Pull Requests.

Thanks to all our contributors: @app/vitess-bot, @frouioui, @systay, @timvaillancourt, @vitess-bot

Vitess v18.0.8

06 Nov 05:06
d3ff598
Compare
Choose a tag to compare

Release of Vitess v18.0.8

The entire changelog for this release can be found here.

The release includes 22 merged Pull Requests.

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

Vitess v21.0.0

29 Oct 05:11
d9bc0da
Compare
Choose a tag to compare

Release of Vitess v21.0.0

Summary

Table of Contents

Known Issue

Backup reports itself as successful despite failures

In this release, we identified an issue where a backup may succeed even if a file fails to be backed up.
Leading to a successful backup, even if some errors occurred.
This only happen with the Builtin Backup Engine, and when all files have already been initiated in the backup process.
For more details, please refer to the related GitHub Issue #17063.

Major Changes

Deprecations and Deletions

Deprecated VTTablet Flags

  • queryserver-enable-settings-pool flag, added in v15, has been on by default since v17.
    It is now deprecated and will be removed in a future release.

Deletion of deprecated metrics

The following VTOrc metrics were deprecated in v20. They have now been deleted.

Metric Name
analysis.change.write
audit.write
discoveries.attempt
discoveries.fail
discoveries.instance_poll_seconds_exceeded
discoveries.queue_length
discoveries.recent_count
instance.read
instance.read_topology
emergency_reparent_counts
planned_reparent_counts
reparent_shard_operation_timings

Deprecated Metrics

The following metrics are now deprecated and will be deleted in a future release, please use their replacements.

Component Metric Name Replaced By
vttablet QueryCacheLength QueryEnginePlanCacheLength
vttablet QueryCacheSize QueryEnginePlanCacheSize
vttablet QueryCacheCapacity QueryEnginePlanCacheCapacity
vttablet QueryCacheEvictions QueryEnginePlanCacheEvictions
vttablet QueryCacheHits QueryEnginePlanCacheHits
vttablet QueryCacheMisses QueryEnginePlanCacheMisses

Traffic Mirroring

Traffic mirroring is intended to help reduce some of the uncertainty inherent to MoveTables SwitchTraffic. When
traffic mirroring is enabled, VTGate will mirror a percentage of traffic from one keyspace to another.

Mirror rules may be enabled through vtctldclient with MoveTables MirrorTraffic. For example:

$ vtctldclient --server :15999 MoveTables --target-keyspace customer --workflow commerce2customer MirrorTraffic --percent 5.0

Mirror rules can be inspected with GetMirrorRules.

Atomic Distributed Transaction Support

We have introduced atomic distributed transactions as an experimental feature.
Users can now run multi-shard transactions with stronger guarantees.
Vitess now provides two modes of transactional guarantees for multi-shard transactions: Best Effort and Atomic.
These can be selected based on the user’s requirements and the trade-offs they are willing to make.

Follow the documentation to enable Atomic Distributed Transaction

For more details on the implementation and trade-offs, please refer to the RFC

New VTGate Shutdown Behavior

We added a new option to VTGate to disallow new connections while VTGate is shutting down,
while allowing existing connections to finish their work until they manually disconnect or until
the --onterm_timeout is reached, without getting a Server shutdown in progress error.

This new behavior can be enabled by specifying the new --mysql-server-drain-onterm flag to VTGate.

You can find more information about this option in the RFC.

Tablet Throttler: Multi-Metric support

Up until v20, the tablet throttler would only monitor and use a single metric. That would be replication lag, by
default, or could be the result of a custom query. In this release, we introduce a major redesign so that the throttler
monitors and uses multiple metrics at the same time, including the above two.

The default behavior now is to monitor all metrics, but only use lag (if the custom query is undefined) or the custom
metric (if the custom query is defined). This is backwards-compatible with v20. A v20 PRIMARY is compatible with
a v21 REPLICA, and a v21 PRIMARY is compatible with a v20 REPLICA.

However, it is now possible to assign any combination of one or more metrics for a given app. The throttler
would then accept or reject the app's requests based on the health of all assigned metrics. We have provided a pre-defined
list of metrics:

  • lag: replication lag based on heartbeat injection.
  • threads_running: concurrent active threads on the MySQL server.
  • loadavg: per core load average measured on the tablet instance/pod.
  • custom: the result of a custom query executed on the MySQL server.

Each metric has a default threshold which can be overridden by the UpdateThrottlerConfig command.

The throttler also supports the catch-all "all" app name, and it is thus possible to assign metrics to all apps.
Explicit app to metric assignments will override the catch-all configuration.

Metrics are assigned a default scope, which could be self (isolated to the tablet) or shard (max, aka worst
value among shard tablets). It is further possible to require a different scope for each metric.

Allow Cross Cell Promotion in PRS

Up until now if the users wanted to promote a replica in a different cell from the current primary
using PlannedReparentShard, they had to specify the new primary with the --new-primary flag.

We have now added a new flag --allow-cross-cell-promotion that lets PlannedReparentShard choose a primary in a
different cell even if no new primary is provided explicitly.

Experimental support for recursive CTEs

We have added experimental support for recursive CTEs in Vitess. We are marking it as experimental because it is not yet
fully tested and may have some limitations. We are looking for feedback from the community to improve this feature.

VTGate Tablet Balancer

When a VTGate routes a query and has multiple available tablets for a given shard / tablet type (e.g. REPLICA), the
current default behavior routes the query with local cell affinity and round robin policy. The VTGate Tablet Balancer
provides an alternate mechanism that routes queries to maintain an even distribution of query load to each tablet, while
preferentially routing to tablets in the same cell as the VTGate.

The tablet balancer is enabled by a new flag --enable-balancer and configured by --balancer-vtgate-cells
and --balancer-keyspaces.

See the RFC for more details on the design and configuration of this feature.

Query Timeout Override

VTGate sends an authoritative query timeout to VTTablet when the QUERY_TIMEOUT_MS comment directive,
query_timeout session system variable, or query-timeout flag is set.
The order of precedence is: comment directive > session variable > VTGate flag.
VTTablet overrides its default query timeout with the value received from VTGate.
All timeouts are specified in milliseconds.

When a query is executed inside a transaction, there is an additional nuance. The actual timeout used will be the smaller
of the transaction timeout and the query timeout.

A query can also be set to have no timeout by using the QUERY_TIMEOUT_MS comment d...

Read more

Vitess v21.0.0-rc2

23 Oct 05:13
54fa8d8
Compare
Choose a tag to compare
Vitess v21.0.0-rc2 Pre-release
Pre-release

Release of Vitess v21.0.0

Summary

Table of Contents

Major Changes

Deprecations and Deletions

Deprecated VTTablet Flags

  • queryserver-enable-settings-pool flag, added in v15, has been on by default since v17.
    It is now deprecated and will be removed in a future release.

Deletion of deprecated metrics

The following VTOrc metrics were deprecated in v20. They have now been deleted.

Metric Name
analysis.change.write
audit.write
discoveries.attempt
discoveries.fail
discoveries.instance_poll_seconds_exceeded
discoveries.queue_length
discoveries.recent_count
instance.read
instance.read_topology
emergency_reparent_counts
planned_reparent_counts
reparent_shard_operation_timings

Deprecated Metrics

The following metrics are now deprecated and will be deleted in a future release, please use their replacements.

Component Metric Name Replaced By
vttablet QueryCacheLength QueryEnginePlanCacheLength
vttablet QueryCacheSize QueryEnginePlanCacheSize
vttablet QueryCacheCapacity QueryEnginePlanCacheCapacity
vttablet QueryCacheEvictions QueryEnginePlanCacheEvictions
vttablet QueryCacheHits QueryEnginePlanCacheHits
vttablet QueryCacheMisses QueryEnginePlanCacheMisses

Traffic Mirroring

Traffic mirroring is intended to help reduce some of the uncertainty inherent to MoveTables SwitchTraffic. When
traffic mirroring is enabled, VTGate will mirror a percentage of traffic from one keyspace to another.

Mirror rules may be enabled through vtctldclient with MoveTables MirrorTraffic. For example:

$ vtctldclient --server :15999 MoveTables --target-keyspace customer --workflow commerce2customer MirrorTraffic --percent 5.0

Mirror rules can be inspected with GetMirrorRules.

New VTGate Shutdown Behavior

We added a new option to VTGate to disallow new connections while VTGate is shutting down,
while allowing existing connections to finish their work until they manually disconnect or until
the --onterm_timeout is reached, without getting a Server shutdown in progress error.

This new behavior can be enabled by specifying the new --mysql-server-drain-onterm flag to VTGate.

You can find more information about this option in the RFC.

Tablet Throttler: Multi-Metric support

Up until v20, the tablet throttler would only monitor and use a single metric. That would be replication lag, by
default, or could be the result of a custom query. In this release, we introduce a major redesign so that the throttler
monitors and uses multiple metrics at the same time, including the above two.

The default behavior now is to monitor all metrics, but only use lag (if the custom query is undefined) or the custom
metric (if the custom query is defined). This is backwards-compatible with v20. A v20 PRIMARY is compatible with
a v21 REPLICA, and a v21 PRIMARY is compatible with a v20 REPLICA.

However, it is now possible to assign any combination of one or more metrics for a given app. The throttler
would then accept or reject the app's requests based on the health of all assigned metrics. We have provided a pre-defined
list of metrics:

  • lag: replication lag based on heartbeat injection.
  • threads_running: concurrent active threads on the MySQL server.
  • loadavg: per core load average measured on the tablet instance/pod.
  • custom: the result of a custom query executed on the MySQL server.

Each metric has a default threshold which can be overridden by the UpdateThrottlerConfig command.

The throttler also supports the catch-all "all" app name, and it is thus possible to assign metrics to all apps.
Explicit app to metric assignments will override the catch-all configuration.

Metrics are assigned a default scope, which could be self (isolated to the tablet) or shard (max, aka worst
value among shard tablets). It is further possible to require a different scope for each metric.

Allow Cross Cell Promotion in PRS

Up until now if the users wanted to promote a replica in a different cell from the current primary
using PlannedReparentShard, they had to specify the new primary with the --new-primary flag.

We have now added a new flag --allow-cross-cell-promotion that lets PlannedReparentShard choose a primary in a
different cell even if no new primary is provided explicitly.

Experimental support for recursive CTEs

We have added experimental support for recursive CTEs in Vitess. We are marking it as experimental because it is not yet
fully tested and may have some limitations. We are looking for feedback from the community to improve this feature.

VTGate Tablet Balancer

When a VTGate routes a query and has multiple available tablets for a given shard / tablet type (e.g. REPLICA), the
current default behavior routes the query with local cell affinity and round robin policy. The VTGate Tablet Balancer
provides an alternate mechanism that routes queries to maintain an even distribution of query load to each tablet, while
preferentially routing to tablets in the same cell as the VTGate.

The tablet balancer is enabled by a new flag --enable-balancer and configured by --balancer-vtgate-cells
and --balancer-keyspaces.

See the RFC for more details on the design and configuration of this feature.

Query Timeout Override

VTGate sends an authoritative query timeout to VTTablet when the QUERY_TIMEOUT_MS comment directive,
query_timeout session system variable, or query-timeout flag is set.
The order of precedence is: comment directive > session variable > VTGate flag.
VTTablet overrides its default query timeout with the value received from VTGate.
All timeouts are specified in milliseconds.

When a query is executed inside a transaction, there is an additional nuance. The actual timeout used will be the smaller
of the transaction timeout and the query timeout.

A query can also be set to have no timeout by using the QUERY_TIMEOUT_MS comment directive with a value of 0.

Example usage:
select /*vt+ QUERY_TIMEOUT_MS=30 */ col from tbl

New Backup Engine (EXPERIMENTAL)

We are introducing a new backup engine for logical backups in order to support use cases that require something other
than physical backups. This feature is experimental and is based on MySQL Shell.

The new engine is enabled by using --backup_engine_implementation=mysqlshell. There are other options that are required,
so please read the documentation to learn which options are required and how to configure them.

Dynamic VReplication Configuration

Previously, many of the configuration options for VReplication Workflows had to be provided using VTTablet flags. This
meant that any change to VReplication configuration required restarting VTTablets. We now allow these to be overridden
while creating a workflow or dynamically after the workflow is already in progress.

Reference Table Materialization

There is a new option in Materialize workflows to keep a synced copy of [reference or...

Read more

Vitess v21.0.0-rc1

15 Oct 05:07
7908b43
Compare
Choose a tag to compare
Vitess v21.0.0-rc1 Pre-release
Pre-release

Release of Vitess v21.0.0

Summary

Table of Contents

Major Changes

Deprecations and Deletions

Deprecated VTTablet Flags

  • queryserver-enable-settings-pool flag, added in v15, has been on by default since v17.
    It is now deprecated and will be removed in a future release.

Deletion of deprecated metrics

The following VTOrc metrics were deprecated in v20. They have now been deleted.

Metric Name
analysis.change.write
audit.write
discoveries.attempt
discoveries.fail
discoveries.instance_poll_seconds_exceeded
discoveries.queue_length
discoveries.recent_count
instance.read
instance.read_topology
emergency_reparent_counts
planned_reparent_counts
reparent_shard_operation_timings

Deprecated Metrics

The following metrics are now deprecated and will be deleted in a future release, please use their replacements.

Component Metric Name Replaced By
vttablet QueryCacheLength QueryEnginePlanCacheLength
vttablet QueryCacheSize QueryEnginePlanCacheSize
vttablet QueryCacheCapacity QueryEnginePlanCacheCapacity
vttablet QueryCacheEvictions QueryEnginePlanCacheEvictions
vttablet QueryCacheHits QueryEnginePlanCacheHits
vttablet QueryCacheMisses QueryEnginePlanCacheMisses

Traffic Mirroring

Traffic mirroring is intended to help reduce some of the uncertainty inherent to MoveTables SwitchTraffic. When
traffic mirroring is enabled, VTGate will mirror a percentage of traffic from one keyspace to another.

Mirror rules may be enabled through vtctldclient with MoveTables MirrorTraffic. For example:

$ vtctldclient --server :15999 MoveTables --target-keyspace customer --workflow commerce2customer MirrorTraffic --percent 5.0

Mirror rules can be inspected with GetMirrorRules.

New VTGate Shutdown Behavior

We added a new option to VTGate to disallow new connections while VTGate is shutting down,
while allowing existing connections to finish their work until they manually disconnect or until
the --onterm_timeout is reached, without getting a Server shutdown in progress error.

This new behavior can be enabled by specifying the new --mysql-server-drain-onterm flag to VTGate.

You can find more information about this option in the RFC.

Tablet Throttler: Multi-Metric support

Up until v20, the tablet throttler would only monitor and use a single metric. That would be replication lag, by
default, or could be the result of a custom query. In this release, we introduce a major redesign so that the throttler
monitors and uses multiple metrics at the same time, including the above two.

The default behavior now is to monitor all metrics, but only use lag (if the custom query is undefined) or the custom
metric (if the custom query is defined). This is backwards-compatible with v20. A v20 PRIMARY is compatible with
a v21 REPLICA, and a v21 PRIMARY is compatible with a v20 REPLICA.

However, it is now possible to assign any combination of one or more metrics for a given app. The throttler
would then accept or reject the app's requests based on the health of all assigned metrics. We have provided a pre-defined
list of metrics:

  • lag: replication lag based on heartbeat injection.
  • threads_running: concurrent active threads on the MySQL server.
  • loadavg: per core load average measured on the tablet instance/pod.
  • custom: the result of a custom query executed on the MySQL server.

Each metric has a default threshold which can be overridden by the UpdateThrottlerConfig command.

The throttler also supports the catch-all "all" app name, and it is thus possible to assign metrics to all apps.
Explicit app to metric assignments will override the catch-all configuration.

Metrics are assigned a default scope, which could be self (isolated to the tablet) or shard (max, aka worst
value among shard tablets). It is further possible to require a different scope for each metric.

Allow Cross Cell Promotion in PRS

Up until now if the users wanted to promote a replica in a different cell from the current primary
using PlannedReparentShard, they had to specify the new primary with the --new-primary flag.

We have now added a new flag --allow-cross-cell-promotion that lets PlannedReparentShard choose a primary in a
different cell even if no new primary is provided explicitly.

Experimental support for recursive CTEs

We have added experimental support for recursive CTEs in Vitess. We are marking it as experimental because it is not yet
fully tested and may have some limitations. We are looking for feedback from the community to improve this feature.

VTGate Tablet Balancer

When a VTGate routes a query and has multiple available tablets for a given shard / tablet type (e.g. REPLICA), the
current default behavior routes the query with local cell affinity and round robin policy. The VTGate Tablet Balancer
provides an alternate mechanism that routes queries to maintain an even distribution of query load to each tablet, while
preferentially routing to tablets in the same cell as the VTGate.

The tablet balancer is enabled by a new flag --enable-balancer and configured by --balancer-vtgate-cells
and --balancer-keyspaces.

See the RFC for more details on the design and configuration of this feature.

Query Timeout Override

VTGate sends an authoritative query timeout to VTTablet when the QUERY_TIMEOUT_MS comment directive,
query_timeout session system variable, or query-timeout flag is set.
The order of precedence is: comment directive > session variable > VTGate flag.
VTTablet overrides its default query timeout with the value received from VTGate.
All timeouts are specified in milliseconds.

When a query is executed inside a transaction, there is an additional nuance. The actual timeout used will be the smaller
of the transaction timeout and the query timeout.

A query can also be set to have no timeout by using the QUERY_TIMEOUT_MS comment directive with a value of 0.

Example usage:
select /*vt+ QUERY_TIMEOUT_MS=30 */ col from tbl

New Backup Engine (EXPERIMENTAL)

We are introducing a new backup engine for logical backups in order to support use cases that require something other
than physical backups. This feature is experimental and is based on MySQL Shell.

The new engine is enabled by using --backup_engine_implementation=mysqlshell. There are other options that are required,
so please read the documentation to learn which options are required and how to configure them.

Dynamic VReplication Configuration

Previously, many of the configuration options for VReplication Workflows had to be provided using VTTablet flags. This
meant that any change to VReplication configuration required restarting VTTablets. We now allow these to be overridden
while creating a workflow or dynamically after the workflow is already in progress.

Reference Table Materialization

There is a new option in Materialize workflows to keep a synced copy of reference or lookup tables
(countries,...

Read more

Vitess v20.0.2

11 Sep 08:11
2592c59
Compare
Choose a tag to compare

Release of Vitess v20.0.2

The entire changelog for this release can be found here.

The release includes 25 merged Pull Requests.

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