The "Night-Up" Level MySQL Documentation for Database Deploy, Upgrade, Backup and Restore
The "Night-Up" Level MySQL Documentation for Database Deploy, Upgrade, Backup and Restore | 「起夜」級 MySQL 數據庫部署、升級、備份及恢復文檔
1. Self Introduction of Documentation | 文檔自述
This documentation is for the installation, deployment, upgrading, main/duplicated database, backup and restoration.
本文檔適用於 MySQL 喺 Linux 服務器環境之下嘅安裝部署、系統升級、主備數據庫搭建以及備份恢復之操作。
Under the Linux system environment, there are mainly 3 ways to install MySQL: install via rpm, install via binary packages and build from source code. Installing via rpm is simple, but it is not flexible enough, and one machine can only install one copy of MySQL database. The way building from source code is complex and may take a long time, but it can be configured by hand, so we do not take this way in general. This documentation recommends the second method to complete the installation.
喺 Linux 系統環境下, MySQL 嘅安裝主要有三種方式:通過 rpm 安裝、使用二進制軟件包安裝以及使用源碼編譯安裝。採用 rpm 包安裝嘅方式操作簡單,但其缺點係唔夠靈活,而且一台機器只可以安裝一個 MySQL 數據庫;採用二進制軟件包安裝嘅方式操作較為繁瑣且耗時較長,但可以根據實際情況手動優化編譯選項,一般情況下唔需要使用呢種方法進行安裝部署。本文檔描述採用 MySQL 二進制軟件包進行安裝部署之操作步驟。
For version upgrade operations in MySQL, this document stipulates that the number before the first decimal point from left to right in the post-MySQL version number is the large version number, and the number after the decimal point is the small version number. For example, in MySQL 8.0.36, 8 is the major version and 0.36 is the minor version; Small version upgrades adopt direct upgrade scheme, large version upgrade adopts logical data migration upgrade scheme. It should be noted that in the event of a MySQL version upgrade involving changes to configuration items in the MySQL configuration file and scrapping, the operation should be treated as a major version upgrade regardless of the version number size.
對於 MySQL 嘅版本升級操作,本文檔規定 MySQL 後版本數字中由左至右第一個小數點前嘅數字係大版本,小數點後嘅數字係小版本。例如 MySQL 8.0.36 中 8 係大版本,0.36 係小版本; MySQL 8.1 中 8 係大版本,1 係小版本。小版本升級採用直接升級方案,大版本升級採用邏輯數據遷移升級方案。需要注意嘅係,若涉及到 MySQL 配置文件中嘅配置項嘅更改及廢棄嘅 MySQL 版本升級,無論版本數字大小,都應該當做大版本升級嚟進行操作。
The MySQL main and duplicated database construction described in this document contains two architectures, a main-duplicated architecture (data is synchronized from the main to the duplicate) and a two-host architecture (two mains synchronize data with each other and are each other's duplicates). Building a main-duplicated library generally adopts a main-duplicated architecture, in which there must be a main node, the main library, and one or more duplicated nodes, the duplicated library. All data is written to the main node first, and then other nodes copy the incremental data on the main node, thus guaranteeing the consistency of the data. Building a main-duplicated database using a main-duplicated replication scheme will improve the availability and performance of the database. In a one-main-duplicated architecture, all data from the duplicated node (duplicated library) comes from the main node, and in general, the use of read-write separation model on this architecture is able to adequately resource, sending the client's read data request to the duplicated, the client's write request to the host, and then the duplicated synchronizes the newly written data from the main. In this case the throughput of the database can be greatly improved since the read-write requests are distributed to the duplicated and main processing respectively.
本文檔描述之 MySQL 主備數據庫搭建包含兩種架構,分別係一個主一從架構(數據從主機同步到從機)同兩個主機架構(兩台主機互相同步數據,互相係對方嘅從機)。搭建主備庫一般採用主從架構,其中必須有一個主節點,即主庫,以及一個或者多個嘅從節點,即備庫。所有數據都會先寫入到主節點,然後其他節點會複製主節點上嘅增量數據,從而保證數據嘅一致性。使用主從複製方案搭建主備庫將提升數據庫嘅可用性及性能。喺一主一從嘅架構中,從節點(備庫)嘅所有數據都係來自主節點,一般而言,喺呢個架構上使用讀寫分離嘅模式能夠充分資源,將客戶端嘅讀數據請求發送畀備機,將客戶端嘅寫數據請求發送畀主機,然後備機從主機處同步新寫入嘅數據。呢種情況下由於讀寫請求分別分攤到咗備機同主機上處理,所以可以極大提升數據庫嘅吞吐量。
Database backup derives and stores the data and structure of the database in an external location so that the database can be recovered in the event of data loss or corruption. There are two types of MySQL database backups described in this document: physical backup (raw backup) and logical backup. Among them, physical backups (logical backups) directly copy database files, including but not limited to data table files and log files, and logical backups backup SQL statement files, deriving all SQL statements that record data and structure operations.
數據庫備份將數據庫嘅數據同結構導出並儲存喺外部位置,令數據庫喺數據丟失或者損壞之時可以恢復。本文件描述嘅 MySQL 數據庫備份方式有物理備份(原始備份)同邏輯備份兩種。其中,物理備份(邏輯備份)直接複製數據庫文件,包括但唔限於數據表文件同日誌文件;邏輯備份則備份 SQL 語句文件,將記錄數據同結構操作嘅所有 SQL 語句導出。
Finally, this document contains some of the problems encountered during the testing process during MySQL installation, deployment, upgrade, backup, etc., and provides a problem analysis and solution for reference when actually deploying MySQL.
最後,本文件收錄咗一啲喺測試過程中喺 MySQL 安裝、部署、升級、備份等過程中遇到嘅問題,並提供咗問題分析及解決方法,以供實際部署 MySQL 時參考。
2. Command Line Prompt Examples | 命令提示示例
The text in this document using isowidth font with dark underprint is the command line raw text in the terminal. where the command that needs to be entered is preceded by a one-character permission prompt. The # symbol indicates that the next command was entered under the test machine's root privileges, the $ symbol indicates that the next command was entered under the test machine's ordinary user privileges, and the > symbol indicates that the next command requires a login to the MySQL command line console for operation. The permission prompt is automatically displayed by the computer terminal when the command is actually entered, eliminating the need for the user to manually enter this permission prompt as well as the space immediately following the symbol.
本文中使用等寬字體並帶有深色底紋嘅文本係終端中嘅命令行原始文本。其中需要輸入嘅命令前帶有一個字符嘅權限提示符。# 符號表示接下來嘅一條命令喺測試機嘅 root 權限下輸入;$ 符號表示接下來嘅一條命令喺測試機嘅普通用戶權限下輸入;> 符號表示接下來嘅命令需要登入 MySQL 命令行控制台進行操作。實際輸入命令時權限提示符號由電腦終端自動顯示,唔需要用戶手動輸入呢個權限提示符號以及符號後緊跟嘅空格。
3. Installation and Deployment | 安裝部署
3.1. Check the current environment of the machine | 檢查機器當前嘅環境
Check the current system information about the computer, and make sure they are matched with the MySQL for installation. Use uname tool can check the current system and architecture information easily.
檢查當前機器嘅系統信息,確保呢啲信息同需要安裝嘅 MySQL 數據庫軟件相匹配。使用 uname 工具可以方便地查看當前嘅系統和架構信息。
# uname -a
Linux clz-db-t2 3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6 19:56:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
Use ldd tool to check the version of system's GNU libc (Glibc).
使用 ldd 工具來檢查系統嘅 GNU libc (Glibc) 版本。
# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
The compatibility of the current machine with the required MySQL version is determined based on the system version, architecture, and glibc version, thus deciding which MySQL version to use. For example, the test machine in this case runs Red Hat Enterprise Linux 7, an x86_64 architecture, and uses GNU libc 2.17. Therefore, when selecting the MySQL binary package, a version compatible with el7, an x86_64 architecture, and based on glibc 2.17 should be chosen.
兼容性要求當前呢台機器需要對應嘅 glibc 版本,因此亦都會決定邊啲 MySQL 版本可以使用。例如,依家情況下有一台測試機運行著 Red Hat Enterprise Linux,並且使用 GNU libc 2.17。因此,當選擇 MySQL 二進制包版本嘅時候就應該選擇一個兼容 el7,x86_64 架構,並且基於 glibc 2.17 嘅 MySQL 版本。
If the system architecture is displayed as aarch64, then an aarch64 or arm64 package should be selected; if the system architecture is displayed as x86_64, then an x86_64, x64, or amd64 package should be selected. The specific naming of the architecture used by the package depends on the software distributor.
如果系統架構顯示為 aarch64,咁應該選擇 aarch64 或者 arm64 包;如果系統架構顯示為 x86_64,咁應該選擇 x86_64、 x64 或者 amd64 包。包所用嘅架構嘅具體命名取決於軟件分銷商。
3.2. Download MySQL package | 下載 MySQL 軟件包
This document describes how to deploy MySQL using a binary package installation. From the official MySQL archive download page (https://downloads.mysql.com/archives/community/), select the required MySQL package and copy the link to that binary archive. On the machine where you want to deploy MySQL, use the wget tool to pull the MySQL binary package from that link and place it in the /usr/local directory. On the machine without an internet connection, use the ssh tool to upload the MySQL binary package from your local machine to the server.
呢份文檔會講解點樣用二進制包安裝部署 MySQL。喺官方嘅 MySQL 封存檔案下載頁面(https://downloads.mysql.com/archives/community/),選擇所需嘅 MySQL 包,然後將連結複製去嗰個二進制封存檔案。喺你想部署 MySQL 嘅機器上面,用 wget 工具喺嗰個連結度拉出 MySQL 二進制包,然後將佢放入 /usr/local 目錄。喺冇互聯網連線嘅機器上面,用 ssh 工具將 MySQL 二進制包由你嘅本地機器上載去伺服器。
# cd /usr/local
# wget "https://cdn.mysql.com/archives/mysql-8.0/mysql-8.1.0-linux-glibc2.17-x86_64.tar.xz"
You can use the ls command in the /usr/local directory to view the files and directories in the current directory, ensuring that the MySQL binary package has been downloaded and placed in the specified location.
你可以用 /usr/local 目錄入面嘅 ls 命令嚟睇返當前目錄入面嘅檔案同目錄,確保 MySQL 二進制包已經下載好,然後放喺指定位置。
# ls -lah
total 428M
drwxr-xr-x. 16 root root 4.0K Jul 31 17:27 .
drwxr-xr-x. 14 root root 166 Feb 27 2019 ..
drwxr-xr-x. 2 root root 37 Aug 10 2020 bin
drwxr-xr-x. 2 root root 6 Mar 10 2016 etc
drwxr-xr-x. 2 root root 6 Mar 10 2016 games
drwxr-xr-x. 3 root root 21 Aug 10 2020 include
drwxr-xr-x. 2 root root 6 Mar 10 2016 lib
drwxr-xr-x. 4 root root 159 Aug 10 2020 lib64
drwxr-xr-x. 2 root root 6 Mar 10 2016 libexec
-rw-r--r-- 1 root root 428M Jun 28 2023 mysql-8.1.0-linux-glibc2.17-x86_64.tar.xz
drwxr-xr-x 5 root root 44 Mar 26 2018 openssh.bak
drwxr-xr-x. 2 root root 6 Mar 10 2016 sbin
drwxr-xr-x. 6 root root 60 Aug 10 2020 share
drwxr-xr-x. 4 root root 106 Feb 27 2019 src
drwxr-xr-x 9 root root 188 Aug 10 2020 ssl
Use the tar tool to extract the package (in this example, "mysql-8.1.0-linux-glibc2.17-x86_64.tar.xz") and place it in the same directory.
用「tar」工具去解壓縮個包(喺呢個例子入面,係「mysql-8.1.0-linux-glibc2.17-x86_64.tar.xz」),然後將佢放入同一個目錄。
# tar -xvf mysql-8.1.0-linux-glibc2.17-x86_64.tar.xz
The directory /usr/local/mysql-8.1.0-linux-glibc2.17-x86_64 is obtained.
得到咗個目錄「/usr/local/mysql-8.1.0-linux-glibc2.17-x86_64」。
3.3. Setup users and groups | 建立用戶和組
Use the useradd command to create the mysql user group, and then create a new mysql user within that group.
用 useradd 命令去建立 mysql 用戶群組,然後喺嗰個群組入面建立一個新嘅 mysql 用戶。
# groupadd mysql
# useradd -r -g mysql -s /bin/false mysql
3.4. Setup configuration files and directories | 建立配置文件和相關目錄
Configure the my.cnf configuration file as follows and save it in the /etc directory. You can open and paste it using the Vim editor.
配置 my.cnf 配置文件,然後將佢放入 /etc 目錄之中。你可以喺 Vim 編輯器之中打開並且貼上內容。
# vim /etc/my.cnf
Paste the following contents.
貼上下面呢啲內容。
[client]
#ssl-mode=REQUIRED
port = 3366
socket = /tmp/mysql.sock
[mysql]
prompt="\\u@\\h:\p \\R:\\m:\\s [\\d]>"
#tee=/data/mysql/mysql_3366/data/query.log
no-auto-rehash
default-character-set=utf8
socket = /tmp/mysql.sock
[mysqld]
#time_zone='+8:00'
require_secure_transport=off
basedir = /usr/local/mysql
#misc
user = mysql
datadir =/data/mysql/data/
port = 3366
socket = /tmp/mysql.sock
event_scheduler = off
#tmp
tmpdir=/tmp
#timeout
interactive_timeout = 1800
wait_timeout = 1800
#character set
character-set-server = utf8
lower_case_table_names=1
#character-set-server = utf8mb4
#sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
open_files_limit = 10240
max_connections =1000
max_connect_errors = 100
#monitor
#userstat=1
skip-name-resolve = on
#logs
log-output=file
slow_query_log = 1
slow_query_log_file = /data/mysql/logs/mysqlslow.log
log-error = /data/mysql/logs/mysqlerror.log
#log_error_verbosity =
pid-file = /tmp/mysql.pid
long_query_time = 0.1
#log-slow-admin-statements =
#log-queries-not-using-indexes =
log-slow-slave-statements = off
#binlog
binlog_checksum = CRC32
binlog_format = row
server-id = 22567
log-bin = /data/mysql/binlog/mysql-bin
log-bin-index = /data/mysql/binlog/mysql-bin.index
binlog_cache_size = 32M
max_binlog_size = 1G
max_binlog_cache_size = 1G
sync_binlog = 1
expire_logs_days = 7
sync_master_info=10000
#skip-log-bin
#relay log
relay-log = /data/mysql/binlog/mysql-relay-bin
skip_slave_start =on
max_relay_log_size = 1G
relay_log_purge =on
relay_log_recovery =on
log_slave_updates = on
#slave-skip-errors=,,
sync_relay_log_info=10000
slave_rows_search_algorithms=INDEX_SCAN,HASH_SCAN
explicit_defaults_for_timestamp=off
#buffers & cache
table_open_cache = 10000
table_definition_cache = 10000
max_allowed_packet = 1073741824
max_heap_table_size = 256M
sort_buffer_size = 16M
join_buffer_size = 16M
#thread_cache_size = 0
#query_cache_size = 0
#query_cache_type = 0
#query_cache_limit = 256K
thread_stack = 192K
tmp_table_size = 96M
key_buffer_size = 8M
read_buffer_size = 16M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 32M
#myisam
#myisam_sort_buffer_size = 128M
#myisam_max_sort_file_size = 10G
#myisam_repair_threads =
#innodb
innodb_adaptive_hash_index=off
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 43
innodb_data_file_path = ibdata1:1G:autoextend
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 1G
innodb_log_file_size = 2G
innodb_log_files_in_group = 3
#innodb_max_dirty_pages_pct =
innodb_file_per_table = on
#innodb_rollback_on_timeout
#innodb_status_file =
#innodb_io_capacity = 50000
innodb_io_capacity=200
innodb_io_capacity_max=400
transaction_isolation = REPEATABLE-READ
#innodb_flush_method = O_DIRECT
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay-log-info-repository = TABLE
innodb_undo_tablespaces=0
innodb_undo_log_truncate = on
innodb_lock_wait_timeout=10
# replication
#rpl_semi_sync_master_enabled = 0;
#rpl_semi_sync_master_timeout = 3600;
# Two-Master configure
#server-
#auto-increment-offset =
#auto-increment-increment =
#server-
#auto-increment-offset =
#auto-increment-increment =
slave_preserve_commit_order = on
slave_transaction_retries = 10
log_timestamps = system
#show_compatibility_56 = on
slave_parallel_workers = 4
slave_parallel_type = LOGICAL_CLOCK
interactive_timeout=3600
wait_timeout=3600
lock_wait_timeout=60
max_user_connections=800
#log_warnings=0
#log_error_verbosity=0
#optimizer_switch='index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=off,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=on,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=on,derived_merge=on,favor_range_scan=off'
[mysqld_safe]
nice=-19
open-files-limit=10240
Save this configuration file after pasting. Create the MySQL-related directories to store the database's data files and logs.
貼上之後儲存呢個設定檔案。建立 MySQL 相關目錄嚟儲存資料庫嘅數據檔案同記錄。
# mkdir -p /data/mysql/data
# mkdir -p /data/mysql/binlog
# mkdir -p /data/mysql/logs
After creating the directory, switch the current directory to /data and grant ownership of the directory to the mysql user and group.
建立目錄之後,將當前目錄切換為 /data,並將目錄嘅擁有權授予 mysql 用戶同群組。
# cd /data
# chown -R mysql:mysql /data/mysql/
3.5. Install | 安裝
Switch to the directory where the MySQL package is located, /usr/local.
切入去 MySQL 包嘅目錄,即係 /usr/local。
# cd /usr/local
To facilitate subsequent deployment and use, create a symbolic link to the MySQL package: /usr/local/mysl.
為咗方便部署及使用,創建一個軟鏈接,連接到 MySQL 嘅軟件包 /usr/local/mysl。
# ln -s /usr/local/mysql-8.1.0-linux-glibc2.17-x86_64 /usr/local/mysql
Check if the symbolic link was created successfully.
檢查此軟鏈接係咪已經成功創建。
# ls -l | grep mysql
lrwxrwxrwx 1 root root 45 Jul 24 13:50 mysql -> /usr/local/mysql-8.1.0-linux-glibc2.17-x86_64
drwxr-xr-x 9 root root 129 Jul 24 13:40 mysql-8.1.0-linux-glibc2.17-x86_64
-rw-r--r-- 1 root root 448377800 Jun 28 2023 mysql-8.1.0-linux-glibc2.17-x86_64.tar.xz
3.6. Initialization | 初始化
Use the mysqld program to initialize the MySQL server.
使用 mysqld 程式來初始化 MySQL 伺服器。
# /usr/local/mysql/bin/mysqld --initialize --user=mysql
Copy the startup script that comes with the MySQL support files and place it in the /etc/init.d directory.
複製 MySQL 支援檔案隨附嘅啟動指令腳本,然後將佢放入 /etc/init.d 目錄。
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server
Use service tool to start the MySQL services.
使用 service 工具來啟動 MySQL 服務。
# service mysql.server start
When you see the message "Starting MySQL... SUCCESS!", it means the MySQL database has started successfully. The temporary password generated upon initial startup can be found in the MySQL logs. This password will be required for the first login, and you should change your account password immediately after logging into MySQL. According to the configuration file my.cnf, the MySQL error log is stored in /data/mysql/logs/mysqlerror.log. You can directly use the cat and grep tools to search for the keyword "password" to find the temporary password generated by MySQL.
當你見到「Starting MySQL... SUCCESS!」嘅訊息,即係 MySQL 資料庫已經成功啟動。初次啟動時產生嘅臨時密碼可以喺 MySQL 記錄入面搵到。第一次登入需要呢個密碼,而你應該喺登入 MySQL 之後即刻更改你嘅帳戶密碼。根據配置檔案 my.cnf, MySQL 錯誤記錄儲存喺 /data/mysql/logs/mysqlerror.log。你可以直接用 cat 同 grep 工具去搜尋關鍵字「password」嚟搵 MySQL 生成嘅臨時密碼。
# cat /data/mysql/logs/mysqlerror.log | grep password
2025-07-21T17:10:07.293097+08:00 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: jnPW*+Lse52Z
"jnPW*+Lse52Z" is the temporary password generated in this example. It's important to note that the temporary password initialized after each MySQL deployment is different; therefore, you must check the logs for this password after each deployment and initialization. Use this password to log in to the MySQL server.
「jnPW*+Lse52Z」係呢個例子入面生成嘅臨時密碼。重要嘅係要留意,每次 MySQL 部署之後初始化嘅臨時密碼都唔同;所以,你必須喺每次部署同初始化之後檢查呢個密碼嘅記錄。用呢個密碼登入 MySQL 伺服器。
# /usr/local/mysql/bin/mysql -uroot -p
Follow the prompts to enter your password. The appearance of the ">" sign indicates successful login to the MySQL command-line interface. Change the password for the root account.
跟住啲提示輸入你嘅密碼。出現「>」號表示成功登入 MySQL 命令行介面。更改 root 帳戶嘅密碼。
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
3.7. Create application account | 創建應用帳戶
Using the MySQL root user for application connections is insecure; therefore, a dedicated account should be created for the application. Following the principle of least privilege, the application-specific account should be granted the necessary permissions. The application account name should be related to the current database ID or the application itself to avoid confusion. For example, on a server with server-id 13, create an account for the application, name it "apn_13", and grant it read and write permissions. The CREATE, DELETE, and DROP permissions should be granted cautiously based on the specific application requirements.
用 MySQL 根用戶嚟連接應用程式係唔安全嘅;所以,應該為個應用程式建立一個專用嘅帳戶。根據最低特權原則,應用程式專用帳戶應該獲得必要嘅權限。應用程式帳戶名稱應該同當前嘅資料庫 ID 或者應用程式本身有關,以免混淆。例如,喺伺服器 ID 為 13 嘅伺服器上面,為應用程式建立一個帳戶,將佢命名為「apn_13」,然後授予佢讀寫權限。應該根據特定嘅應用程式要求,謹慎噉授予 CREATE、DELETE 同 DROP 權限。
> CREATE USER 'apn_13'@'localhost' IDENTIFIED BY 'newpassword';
> GRANT SELECT, INSERT, UPDATE ON database_name.database_table TO 'apn_13'@'localhost';
In the command to create a user, the "newpassword" field needs to be set to a new password that meets the security requirements and is different from the root user's password. In the command to grant permissions, the "database_name" and "database_table" fields should be filled in according to the application's usage. If the application uses all databases and tables in the database, you can fill in "*.*" to represent all databases and tables, for example:
喺建立用戶嘅命令入面,「newpassword」欄位需要設定為一個符合安全要求嘅新密碼,同埋同 root 用戶嘅密碼唔同。喺授予權限嘅命令入面,應該根據應用程式嘅用途填寫「database_name」同「database_table」欄位。如果應用程式用咗資料庫入面嘅所有資料庫同表,你可以填「*.*」嚟表示所有資料庫同表,例如:
> GRANT SELECT, INSERT, UPDATE ON *.* TO 'apn_13'@'localhost';
4. Upgrade | 版本升級
つづく…
5. Data Importing | 數據導入
つづく…
6. Main and Duplicate Database Preparing | 主備數據庫搭建
つづく…
7. Backup and Restore | 備份及恢復
つづく…
8. Diagnose | 問題排查及解決方法
つづく…