diff --git a/doc/releasenotes/16_0_0_changelog.md b/doc/releasenotes/16_0_0_changelog.md index 97190048243..53b503bc6e1 100644 --- a/doc/releasenotes/16_0_0_changelog.md +++ b/doc/releasenotes/16_0_0_changelog.md @@ -292,7 +292,7 @@ * Add support for Views DDL [#11896](https://github.com/vitessio/vitess/pull/11896) * notify view change to vtgate [#12115](https://github.com/vitessio/vitess/pull/12115) * Views Support: Updating Views in VSchema for query serving [#12124](https://github.com/vitessio/vitess/pull/12124) -#### web UI +#### Admin Web UI * [VTAdmin] Topology Browser [#11496](https://github.com/vitessio/vitess/pull/11496) ### Internal Cleanup #### Backup and Restore @@ -343,7 +343,7 @@ * VReplication: Remove Deprecated V1 Client Commands [#11705](https://github.com/vitessio/vitess/pull/11705) #### VTAdmin * move react-scripts to dev dependencies [#11767](https://github.com/vitessio/vitess/pull/11767) -#### web UI +#### Admin Web UI * [vtctld2] Remove vtctld2 UI and vtctld server components that serve the app UI [#11851](https://github.com/vitessio/vitess/pull/11851) ### Performance #### Cluster management diff --git a/doc/releasenotes/16_0_0_release_notes.md b/doc/releasenotes/16_0_0_release_notes.md index 49f48360813..514420d53dc 100644 --- a/doc/releasenotes/16_0_0_release_notes.md +++ b/doc/releasenotes/16_0_0_release_notes.md @@ -49,7 +49,7 @@ - **[Refactor](#refactor)** - **[VTTablet sidecar schema maintenance refactor](#vttablet-sidecar-schema)** -## Major Changes +## Major Changes ### VReplication @@ -62,7 +62,7 @@ In [PR #11103](https://github.com/vitessio/vitess/pull/11103) we introduced the We are marking [VDiff v2](https://vitess.io/docs/16.0/reference/vreplication/vdiff2/) as Generally Available or production-ready in v16. We now recommend that you use v2 rather than v1 going forward. V1 will be deprecated and eventually removed in future releases. If you wish to use v1 for any reason, you will now need to specify the `--v1` flag. -### Tablet throttler +### Tablet throttler The tablet throttler can now be configured dynamically. Configuration is now found in the topo service, and applies to all tablets in all shards and cells of a given keyspace. For backwards compatibility `v16` still supports `vttablet`-based command line flags for throttler ocnfiguration. @@ -70,7 +70,7 @@ It is possible to enable/disable, to change throttling threshold as well as the See https://github.com/vitessio/vitess/pull/11604 -### Incremental backup and point in time recovery +### Incremental backup and point in time recovery In [PR #11097](https://github.com/vitessio/vitess/pull/11097) we introduced native incremental backup and point in time recovery: @@ -80,28 +80,28 @@ In [PR #11097](https://github.com/vitessio/vitess/pull/11097) we introduced nati - A server restored to a point in time remains in `DRAINED` tablet type, and does not join the replication stream (thus, "frozen" in time). - It is possible to take incremental backups from different tablets. It is OK to have overlaps in incremental backup contents. The restore process chooses a valid path, and is valid as long as there are no gaps in the backed up binary log content. -### Replication manager removal and VTOrc becomes mandatory +### Replication manager removal and VTOrc becomes mandatory VTOrc is now a **required** component of Vitess starting from v16. If the users want VTOrc to manage replication, then they must run VTOrc. Replication manager is removed from vttablets since the responsibility of fixing replication lies entirely with VTOrc now. The flag `disable-replication-manager` is deprecated and will be removed in a later release. -### Breaking Changes +### Breaking Changes -#### VTGate Advertised MySQL Version +#### VTGate Advertised MySQL Version VTGate now advertises MySQL version 8.0.31. This is a breaking change for clients that rely on the VTGate advertised MySQL version and still use MySQL 5.7. The users can set the `mysql_server_version` flag to advertise the correct version. -#### Default MySQL version on Docker +#### Default MySQL version on Docker The default major MySQL version used by our `vitess/lite:latest` image is going from `5.7` to `8.0`. Additionally, the default patch version of the `vitess/lite:mysql80` image goes from `8.0.23` to `8.0.31`. -#### vtctld UI Removal +#### vtctld web UI Removal In v13, the vtctld UI was deprecated. As of this release, the `web/vtctld2` directory is deleted and the UI will no longer be included in any Vitess images going forward. All build scripts and the Makefile have been updated to reflect this change. However, the vtctld HTTP API will remain at `{$vtctld_web_port}/api`. -#### vtctld Flag Deprecation & Deletions +#### vtctld Flag Deprecation & Deletions With the removal of the vtctld UI, the following vtctld flags have been deprecated: - `--vtctld_show_topology_crud`: This was a flag that controlled the display of CRUD topology actions in the vtctld UI. The UI is removed, so this flag is no longer necessary. @@ -114,17 +114,17 @@ The following deprecated flags have also been removed: - `--workflow_manager_use_election` - `--workflow_manager_disable` -#### Orchestrator Integration Deletion +#### Orchestrator Integration Deletion Orchestrator integration in `vttablet` was deprecated in the previous release and is deleted in this release. Consider using `VTOrc` instead of `Orchestrator`. -#### mysqlctl Flags +#### mysqlctl Flags The [`mysqlctl` command-line client](https://vitess.io/docs/16.0/reference/programs/mysqlctl/) had some leftover (ignored) server flags after the [v15 pflag work](https://github.com/vitessio/enhancements/blob/main/veps/vep-4.md). Those unused flags have now been removed. If you are using any of the following flags with `mysqlctl` in your scripts or other tooling, they will need to be removed prior to upgrading to v16: `--port --grpc_auth_static_client_creds --grpc_compression --grpc_initial_conn_window_size --grpc_initial_window_size --grpc_keepalive_time --grpc_keepalive_timeout` -#### Query Serving Errors +#### Query Serving Errors In this release, we are introducing a new way to report errors from Vitess through the query interface. Errors will now have an error code for each error, which will make it easy to search for more information on the issue. @@ -146,25 +146,25 @@ If you have code searching for error strings from Vitess, this is a breaking cha Many error strings have been tweaked. If your application is searching for specific errors, you might need to update your code. -#### Logstats Table and Keyspace removed +#### Logstats Table and Keyspace removed Information about which tables are used is now reported by the field TablesUsed added in v15, that is a string array, listing all tables and which keyspace they are in. The Table/Keyspace fields were deprecated in v15 and are now removed in the v16 release of Vitess. -#### Removed Stats +#### Removed Stats The stat `QueryRowCounts` is removed in v16. `QueryRowsAffected` and `QueryRowsReturned` can be used instead to gather the same information. -#### Deprecated Stats +#### Deprecated Stats The stats `QueriesProcessed` and `QueriesRouted` are deprecated in v16. The same information can be inferred from the stats `QueriesProcessedByTable` and `QueriesRoutedByTable` respectively. These stats will be removed in the next release. -#### Removed flag +#### Removed flag The following flag is removed in v16: - `enable_semi_sync` -#### `lock-timeout` and `remote_operation_timeout` Changes +#### `lock-timeout` and `remote_operation_timeout` Changes Earlier, the shard and keyspace locks used to be capped by the `remote_operation_timeout`. This is no longer the case and instead a new flag called `lock-timeout` is introduced. For backward compatibility, if `lock-timeout` is unspecified and `remote_operation_timeout` flag is provided, then its value will also be used for `lock-timeout` as well. @@ -173,19 +173,19 @@ The default value for `remote_operation_timeout` has also changed from 30 second During upgrades, if the users want to preserve the same behaviour as previous releases, then they should provide the `remote_operation_timeout` flag explicitly before upgrading. After the upgrade, they should then alter their configuration to also specify `lock-timeout` explicitly. -#### Normalized labels in the Prometheus Exporter +#### Normalized labels in the Prometheus Exporter The Prometheus metrics exporter now properly normalizes _all_ label names into their `snake_case` form, as it is idiomatic for Prometheus metrics. Previously, Vitess instances were emitting inconsistent labels for their metrics, with some of them being `CamelCase` and others being `snake_case`. -### New command line flags and behavior +### New command line flags and behavior -#### VTGate: Support query timeout --query-timeout +#### VTGate: Support query timeout --query-timeout `--query-timeout` allows you to specify a timeout for queries. This timeout is applied to all queries. It can be overridden by setting the `query_timeout` session variable. Setting it as command line directive with `QUERY_TIMEOUT_MS` will override other values. -#### VTTablet: VReplication parallel insert workers --vreplication-parallel-insert-workers +#### VTTablet: VReplication parallel insert workers --vreplication-parallel-insert-workers `--vreplication-parallel-insert-workers=[integer]` enables parallel bulk inserts during the copy phase of VReplication (disabled by default). When set to a value greater than 1 the bulk inserts — each @@ -201,15 +201,15 @@ Other aspects of the VReplication copy-phase logic are preserved: Other phases, catchup, fast-forward, and replicating/"running", are unchanged. -#### VTTablet: --queryserver-config-pool-conn-max-lifetime +#### VTTablet: --queryserver-config-pool-conn-max-lifetime `--queryserver-config-pool-conn-max-lifetime=[integer]` allows you to set a timeout on each connection in the query server connection pool. It chooses a random value between its value and twice its value, and when a connection has lived longer than the chosen value, it'll be removed from the pool the next time it's returned to the pool. -#### vttablet --throttler-config-via-topo +#### vttablet --throttler-config-via-topo The flag `--throttler-config-via-topo` switches throttler configuration from `vttablet`-flags to the topo service. This flag is `false` by default, for backwards compatibility. It will default to `true` in future versions. -#### vtctldclient UpdateThrottlerConfig +#### vtctldclient UpdateThrottlerConfig Tablet throttler configuration is now supported in `topo`. Updating the throttler configuration is done via `vtctldclient UpdateThrottlerConfig` and applies to all tablet in all cells for a given keyspace. @@ -237,7 +237,7 @@ $ vtctldclient UpdateThrottlerConfig --custom_query "" --check_as_check_shard -- See https://github.com/vitessio/vitess/pull/11604 -#### vtctldclient Backup --incremental_from_pos +#### vtctldclient Backup --incremental_from_pos The `Backup` command now supports `--incremental_from_pos` flag, which can receive a valid position or the value `auto`. For example: @@ -258,7 +258,7 @@ The incremental backup fails if it is unable to attain binary logs from given po The manifest of an incremental backup has a non-empty `FromPosition` value, and a `Incremental = true` value. -#### vtctldclient RestoreFromBackup --restore_to_pos +#### vtctldclient RestoreFromBackup --restore_to_pos - `--restore_to_pos`: request to restore the server up to the given position (inclusive) and not one step further. - `--dry_run`: when `true`, calculate the restore process, if possible, evaluate a path, but exit without actually making any changes to the server. @@ -286,7 +286,7 @@ The `RestoreFromBackup --restore_to_pos` ends with: - the restored server in intentionally broken replication setup - tablet type is `DRAINED` -#### New `vexplain` command +#### New `vexplain` command A new `vexplain` command has been introduced with the following syntax - ``` VEXPLAIN [ALL|QUERIES|PLAN] explainable_stmt @@ -297,14 +297,14 @@ and see the vtgate plan along with the MySQL explain output for the executed que The formats `VTEXPLAIN` and `VITESS` for `EXPLAIN` queries are deprecated, and these newly introduced commands should be used instead. -### Important bug fixes +### Important bug fixes -#### Corrupted results for non-full-group-by queries with JOINs +#### Corrupted results for non-full-group-by queries with JOINs An issue in versions `<= v14.0.3` and `<= v15.0.0` that generated corrupted results for non-full-group-by queries with a JOIN is now fixed. The full issue can be found [here](https://github.com/vitessio/vitess/issues/11625), and its fix [here](https://github.com/vitessio/vitess/pull/11633). -### Deprecations and Removals +### Deprecations and Removals - The V3 planner is deprecated as of the v16 release, and will be removed in the v17 release of Vitess. @@ -327,9 +327,9 @@ is now fixed. The full issue can be found [here](https://github.com/vitessio/vit - VTAdmin's `VTExplain` endpoint has been deprecated. Users can use the new `vexplain` query format instead. The endpoint will be deleted in a future release. -### MySQL Compatibility +### MySQL Compatibility -#### Transaction Isolation Level +#### Transaction Isolation Level Support added for `set [session] transaction isolation level ` @@ -350,7 +350,7 @@ level: { This will set the transaction isolation level for the current session. This will be applied to any shard where the session will open a transaction. -#### Transaction Access Mode +#### Transaction Access Mode Support added for `start transaction` with transaction characteristic. @@ -367,7 +367,7 @@ transaction_characteristic: { This will allow users to start a transaction with these characteristics. -#### Support for views +#### Support For Views Vitess now supports views in sharded keyspace. Views are not created on the underlying database but are logically stored in vschema. @@ -386,24 +386,24 @@ VSchema Example } ``` -### VTOrc +### VTOrc -#### Flag Deprecations +#### Flag Deprecations The flag `lock-shard-timeout` has been deprecated. Please use the newly introduced `lock-timeout` instead. More detail [here](#lock-timeout-introduction). -### VTTestServer +### VTTestServer -#### Performance Improvement +#### Performance Improvement Creating a database with vttestserver was taking ~45 seconds. This can be problematic in test environments where testcases do a lot of `create` and `drop` database. In an effort to minimize the database creation time, we have changed the value of `tablet_refresh_interval` to 10s while instantiating vtcombo during vttestserver initialization. We have also made this configurable so that it can be reduced further if desired. For any production cluster the default value of this flag is still [1 minute](https://vitess.io/docs/15.0/reference/programs/vtgate/). Reducing this value might put more stress on Topo Server (since we now read from Topo server more often) but for testing purposes this shouldn't be a concern. -## Minor changes +## Minor changes -### Backup compression benchmarks +### Backup Compression Benchmarks Compression benchmarks have been added to the `mysqlctl` package. @@ -437,9 +437,9 @@ BenchmarkCompressLz4Builtin cleaning up "/var/folders/96/k7gzd7q10zdb749vr02q7sjh0000gn/T/ee7d47b45ef09786c54fa2d7354d2a68.dat" ``` -## Refactor +## Refactor -### VTTablet sidecar schema maintenance refactor +### VTTablet Sidecar Schema Maintenance Refactor This is an internal refactor and should not change the behavior of Vitess as seen by users.