-
Notifications
You must be signed in to change notification settings - Fork 688
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
*: add TiDB 2.1 Upgrade Guide #780
Merged
Merged
Changes from 4 commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
fd54613
*: add TiDB 2.1 Upgrade Guide
lilin90 cf66f46
op-guide, tools: update tidb-binlog and ansible
lilin90 1c596c6
op-guide: add code fencing to address comments
lilin90 2058ac1
tools: address comments
lilin90 403ed8a
op-guide: address the comment
lilin90 510702a
v2.0/readme: change one title back
lilin90 1733a1a
op-guide: add upgrade caveat
lilin90 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
--- | ||
title: TiDB 2.1 Upgrade Guide | ||
summary: Learn how to upgrade from TiDB 2.0 (TiDB 2.0.1 or later) or TiDB 2.1 RC version to TiDB 2.1 GA version. | ||
category: deployment | ||
--- | ||
|
||
# TiDB 2.1 Upgrade Guide | ||
|
||
This document describes how to upgrade from TiDB 2.0 (TiDB 2.0.1 or later) or TiDB 2.1 RC version to TiDB 2.1 GA version. TiDB 2.1 is not compatible with the Kafka version of TiDB-Binlog. If your current TiDB cluster has already been using the [Kafka version of TiDB-Binlog](../tools/tidb-binlog-kafka.md), you need to [upgrade it to the cluster version of TiDB-Binlog](../tools/tidb-binlog-cluster.md#tidb-binlog-upgrade). | ||
|
||
## Step 1: Install Ansible and dependencies on the Control Machine | ||
|
||
TiDB-Ansible release-2.1 depends on Ansible 2.4.2 ~ 2.7.0 (`ansible>=2.4.2,<2.7.0`) and the Python module `jinja2>=2.9.6` and `jmespath>=0.9.0`. | ||
|
||
To make it easy to manage dependencies, use `pip` to install Ansible and its dependencies. For details, see [Install Ansible and its dependencies on the Control Machine](../op-guide/ansible-deployment.md#step-4-install-ansible-and-its-dependencies-on-the-control-machine). For offline environment, see [Install Ansible and its dependencies offline on the Control Machine](../op-guide/offline-ansible-deployment.md#step-3-install-ansible-and-its-dependencies-offline-on-the-control-machine). | ||
|
||
After the installation is finished, you can view the version information using the following command: | ||
|
||
```bash | ||
$ ansible --version | ||
ansible 2.6.8 | ||
$ pip show jinja2 | ||
Name: Jinja2 | ||
Version: 2.10 | ||
$ pip show jmespath | ||
Name: jmespath | ||
Version: 0.9.3 | ||
``` | ||
|
||
> **Note:** | ||
> | ||
> - You must install Ansible and its dependencies following the above procedures. | ||
> - Make sure that the Jinja2 version is correct, otherwise an error occurs when you start Grafana. | ||
> - Make sure that the jmespath version is correct, otherwise an error occurs when you perform a rolling update for TiKV. | ||
|
||
## Step 2: Download TiDB-Ansible to the Control Machine | ||
|
||
1. Log in to the Control Machine using the `tidb` user account and enter the `/home/tidb` directory. | ||
|
||
2. Back up the `tidb-ansible` folders of TiDB 2.0 or TiDB 2.1 RC versions using the following command: | ||
|
||
``` | ||
$ mv tidb-ansible tidb-ansible-bak | ||
``` | ||
|
||
3. Download the latest tidb-ansible `release-2.1` branch using the following command. The default folder name is `tidb-ansible`. | ||
|
||
``` | ||
$ git clone -b release-2.1 https://github.com/pingcap/tidb-ansible.git | ||
``` | ||
|
||
## Step 3: Edit the `inventory.ini` file and the configuration file | ||
|
||
Log in to the Control Machine using the `tidb` user account and enter the `/home/tidb/tidb-ansible` directory. | ||
|
||
### Edit the `inventory.ini` file | ||
|
||
Edit the `inventory.ini` file. For IP information, see the `/home/tidb/tidb-ansible-bak/inventory.ini` backup file. | ||
|
||
Pay special attention to the following variables configuration. For variable meaning, see [Description of other variables](../op-guide/ansible-deployment.md#edit-other-variables-optional). | ||
|
||
1. Make sure that `ansible_user` is the normal user. For unified privilege management, remote installation using the root user is no longer supported. The default configuration uses the `tidb` user as the SSH remote user and the program running user. | ||
|
||
```ini | ||
## Connection | ||
# ssh via normal user | ||
ansible_user = tidb | ||
``` | ||
|
||
You can refer to [How to configure SSH mutual trust and sudo rules on the Control Machine](../op-guide/ansible-deployment.md#step-5-configure-the-ssh-mutual-trust-and-sudo-rules-on-the-control-machine) to automatically configure the mutual trust among hosts. | ||
|
||
2. Keep the `process_supervision` variable consistent with that in the previous version. It is recommended to use `systemd` by default. | ||
|
||
```ini | ||
# process supervision, [systemd, supervise] | ||
process_supervision = systemd | ||
``` | ||
|
||
If you need to modify this variable, see [How to modify the supervision method of a process from `supervise` to `systemd`](../op-guide/ansible-deployment.md#how-to-modify-the-supervision-method-of-a-process-from-supervise-to-systemd). Before you upgrade, first use the `/home/tidb/tidb-ansible-bak/` backup branch to modify the supervision method of a process. | ||
|
||
### Edit the configuration file of TiDB cluster components | ||
|
||
If you have previously customized the configuration file of TiDB cluster components, refer to the backup file to modify the corresponding configuration file in `/home/tidb/tidb-ansible/conf`. | ||
|
||
In TiKV configuration, `end-point-concurrency` is changed to three parameters: `high-concurrency`, `normal-concurrency` and `low-concurrency`. | ||
|
||
```yaml | ||
readpool: | ||
coprocessor: | ||
# Notice: if CPU_NUM > 8, default thread pool size for coprocessors | ||
# will be set to CPU_NUM * 0.8. | ||
# high-concurrency: 8 | ||
# normal-concurrency: 8 | ||
# low-concurrency: 8 | ||
``` | ||
|
||
For the cluster topology of multiple TiKV instances on a single machine, you need to modify the three parameters above. Recommended configuration: `number of instances * parameter value = number of CPU cores * 0.8`. | ||
|
||
## Step 4: Download TiDB 2.1 binary to the Control Machine | ||
|
||
Make sure that `tidb_version = v2.1.0` in the `tidb-ansible/inventory.ini` file, and then run the following command to download TiDB 2.1 binary to the Control Machine: | ||
|
||
``` | ||
$ ansible-playbook local_prepare.yml | ||
``` | ||
|
||
## Step 5: Perform a rolling update to TiDB cluster components | ||
|
||
``` | ||
$ ansible-playbook rolling_update.yml | ||
``` | ||
|
||
## Step 6: Perform a rolling update to TiDB monitoring component | ||
|
||
``` | ||
$ ansible-playbook rolling_update_monitor.yml | ||
``` |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a description of how to do a rolling update without Ansible?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@gregwebs Currently, we only provide the Ansible approach, which is also the recommended one. (I've checked with @liubo0127 )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we describe in abstract terms what Ansible is doing?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We do have such a description here:) https://github.com/pingcap/docs/blob/master/op-guide/ansible-deployment.md#overview
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
okay, I see it here, would be good to link there.