成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

帶你輕松玩轉MySQL Shell for GreatSQL

數據庫 MySQL
MySQL Shell 是 MySQL 的一個高級客戶端和代碼編輯器,是第二代 MySQL 客戶端。第一代 MySQL 客戶端即我們常用的 MySQL 。

一、引言

1.1 什么是MySQL Shell ?

MySQL Shell 是 MySQL 的一個高級客戶端和代碼編輯器,是第二代 MySQL 客戶端。第一代 MySQL 客戶端即我們常用的 MySQL 。除了提供類似于 MySQL 的 SQL 功能外,MySQL Shell 還提供 JavaScript 和 Python 腳本功能,并包括與 MySQL 一起使用的 API 。MySQL Shell 除了可以對數據庫里的數據進行操作,還可以對數據庫進行管理,特別是對MGR的支持,使用MySQL Shell 可以非常方便的對MGR進行搭建、管理、配置等

1.2 什么是MySQL Shell for GreatSQL ?

MySQL Shell for GreatSQL 的出現是因為在 GreatSQL 8.0.25-16 版本的時候引入了MGR仲裁節點(投票節點)的新特性,MySQL提供的MySQL Shell無法識別該特性,因此我們提供了 MySQL Shell for GreatSQL 版本,以下就稱為MySQL Shell for GreatSQL

但是!因為 JS 庫中含有商業庫,所以GreatSQL社區在編譯的時候就沒有加上 JS 的腳本功能。

大家使用的時候不要一直輸入\js說怎么切換不過去了 :)

不過Python模式的語法和JavaScript模式的語法是大同小異的,舉個例子:

JavaScript 語法

Python 語法

var c=dba.getCluster()

c=dba.get_cluster()

c.status()

c.statsu()

c.setPrimaryInstance()

c.set_primary_instance()

不過就是變量名命名風格些許不同而已,本質上是沒有區別的。本文也將使用 GreatSQL Shell-8.0.25-16 中 Python 模式來帶你玩轉 MySQL Shell for GreatSQL

二、安裝與配置

2.1 安裝 MySQL Shell for GreatSQL

首先我們先下載MySQL Shell for GreatSQL,下載地址在GreatSQL的gitee倉庫,和我們的GreatSQL 8.0.32-24新版本放在一起:?https://gitee.com/GreatSQL/GreatSQL/releases/tag/GreatSQL-8.0.32-24進入下載文件列表最下方就是我們的MySQL Shell for GreatSQL,大家按機器和架構下載對應版本

本文機器環境是CentOS7.9-x86-64所以下載第一個即可

$ cat /etc/system-release
CentOS Linux release 7.9.2009 (Core)

$ uname -a
Linux hy 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

下載完成后解壓:

$ tar -xvf greatsql-shell-8.0.25-16-Linux-glibc2.17-x86_64.tar.xz

接著把 bin 目錄添加到環境變量中:

$ echo "export PATH=$PATH:/usr/local/greatsql-shell-8.0.25-16-Linux-glibc2.17-x86_64/bin" >> /root/.bash_profile

MySQL Shell for GreatSQL 需要 Python 3.6 的環境,如果沒有環境的話,需要安裝yum install python3 -y

$ python3 -V
Python 3.6.8

一切準備就緒!就可以開始使用 MySQL Shell for GreatSQL 了

$ mysqlsh

2.2 界面特征

MySQL Shell for GreatSQL 的界面如下:

細心的同學就會發現,有一個 WARNING ,沒關系我們根據提示看下 mysqlsh.log

$ cat /root/.mysqlsh/mysqlsh.log

在日志中發現這樣一段提示,意思就是少了一個 Python 的模塊 certifi

ModuleNotFoundError: No module named 'certifi'

解決方法就是用pip來安裝下這個缺失的模塊即可:

$ pip3.6 install --user certifi

再次進入MySQL Shell for GreatSQL $ mysqlsh

現在就沒有討厭的 WARNING 了。

MySQL Shell for GreatSQL 同時也是支持定義自己的提示符的,在 promt 目錄下,有許多的模板可供使用

$ ls /usr/local/GreatSQLshell/greatsql-shell-8.0.25-16-Linux-glibc2.17-x86_64/share/mysqlsh/prompt
prompt_16.json      prompt_256.json       prompt_256pl.json    prompt_dbl_256.json       prompt_dbl_256pl.json  README.prompt
prompt_256inv.json  prompt_256pl+aw.json  prompt_classic.json  prompt_dbl_256pl+aw.json  prompt_nocolor.json

使用方式如下,例如我想換成這個模板prompt_16.json

$ export MYSQLSH_PROMPT_THEME=/usr/local/GreatSQLshell/greatsql-shell-8.0.25-16-Linux-glibc2.17-x86_64/share/mysqlsh/prompt/prompt_16.json

再進入 MySQL Shell for GreatSQL 看看已經變了個樣子

當然也可以自行修改.json文件,修改成你喜歡的自定義配置,這都是沒問題的。

現在的 MySQL Shell for GreatSQL 是沒法使用的,因為我們是用 $ mysqlsh 命令直接登錄到 Shell 環境,由于未攜帶登錄驗證信息(user、host、password)等處于未連接服務狀態,在內部使用 \c \h 等簡易命令外,執行其它獲取服務器信息的命令會報 Not Connected.

三、基本操作和使用

3.1 連接數據庫實例

MySQL Shell for GreatSQL 提供了多種連接實例登錄方式,可以根據自己喜好選擇

$ mysqlsh --help

...上面省略部分...
Usage examples:
$ mysqlsh root@localhost/schema
$ mysqlsh mysqlx://root@some.server:3307/world_x
$ mysqlsh --uri root@localhost --py -f sample.py sample param
$ mysqlsh root@targethost:33070 -s world_x -f sample.js
$ mysqlsh -- util check-for-server-upgrade root@localhost --output-format=JSON
$ mysqlsh mysqlx://user@host/db --import ~/products.json shop

這里選擇MySQL Shell for GreatSQL sock的方式連接數據庫實例

$ mysqlsh -S/data/GreatSQL/mgr01/mysql.sock root@localhost

用sock方式連接數據庫實例會讓輸入密碼,然后會問是否保存密碼

Please provide the password for 'root@localhost': //這里輸入密碼
Save password for 'root@localhost'? [Y]es/[N]o/Ne[v]er (default No): y //是否保存密碼

一旦存儲了服務器 URL 的密碼,每當 MySQL Shell for GreatSQL 打開會話時,它都會從已配置的 Secret Store Helper 中檢索密碼,登錄到服務器,而無需交互輸入密碼。MySQL Shell for GreatSQL 執行的腳本也是如此。如果未配置任何 Secret Store Helper,則以交互方式請求密碼。

注意!MySQL Shell for GreatSQL 僅通過 Secret Store 保留服務器 URL 和密碼,而不自行保留密碼。

密碼只有在 手動輸入 時才會保留。如果在運行  MySQL Shell for GreatSQL時使用類似于服務器 URI 的連接字符串或在命令行中提供了密碼,則該密碼不會保留。

連接到 MySQL Shell for GreatSQL 所接受的最大密碼長度為128個字符。

3.2 基本命令

MySQL Shell for GreatSQL 的由于命令需要獨立于執行模式而可用,因此它們以轉義序列 \ 字符開頭,簡單列舉幾個:

命令

別名或縮寫

描述

\help

\h or ?

幫助

\quit

\q or \exit

退出

\status

\s

顯示當前狀態

\js


切換為 JavaScript 語言模式

\py


切換為 Python 語言模式

\sql


切換為 SQL 語言模式

\history


查看和編輯命令行歷史記錄

\connet

\c

連接到 MySQL 服務器

\reconnect


重新連接到 MySQL 服務器

3.3 基本用法

Ⅰ、切換SQL模式 \sql,在 SQL 模式下按 Tab鍵 可以實現自動補全哦!

GreatSQL Py > \sql
Switching to SQL mode... Commands end with ;

Ⅱ、可在任何語言狀態執行操作系統命令 \system

GreatSQL Py > \system ls /usr/local
greatsql-shell-8.0.25-16-Linux-glibc2.17-x86_64.tar.xz    GreatSQL8.0.32

Ⅲ、查看歷史命令 \history ,選項 history.maxSize 為 MySQL Shell for GreatSQL 的最大存儲條數,默認為 1000 條輪替。

GreatSQL Py > \history
    1  \system ls /usr/local
    2  /history
    3  history
    4  help()
    5  /hasattr()

默認歷史只能保存當前會話命令,全局不可見,退出后自動刪除。可通過啟用 history.autoSave 選項保存會話之間的歷史記錄。

3.4 全局對象

MySQL Shell for GreatSQL 啟動時,可以使用以下模塊和對象

  • dba:用于InnoDB Cluster、ReplicaSet 管理;
  • mysql:支持使用經典 MySQL 協議連接到 MySQL 服務器,允許執行 SQL;
  • mysqlx:用于通過 MySQL X DevAPI 處理 X 協議會話;
  • os:允許訪問允許與操作系統交互的功能;
  • session:代表當前打開的MySQL會話;
  • shell:允許訪問通用功能和屬性;
  • sys:允許訪問系統特定的參數;
  • util:對諸如升級檢查器和JSON導入之類的各種工具進行了分組;

四、備份和恢復

MySQL Shell for GreatSQL有Dump & Load工具,比 mydumper 更快的邏輯備份工具,與 myloader 不一樣的是,MySQL Shell for GreatSQL Load 是通過 LOAD DATA LOCAL INFILE 命令來導入數據的。而 LOAD DATA 操作,按照官方文檔的說法,比 INSERT 操作快 20 倍。該序列工具包括:

  • util.dump_instance():備份整個數據庫實例,包括用戶
  • util.dump_schemas():備份指定數據庫 schema
  • util.dump_tables():備份指定的表或視圖
  • util.load_dump():恢復備份

我們來動手操作下,準備一個表空間有 724MB 的表內含七百萬條數據

greatsql> select count(*) from student1;
+----------+
| count(*) |
+----------+
|  7000000 |
+----------+
1 row in set (2.62 sec)

greatsql> system ls -l /data/GreatSQL/mgr01/test
-rw-r----- 1 mysql mysql 759169024 7月  25 12:15 student1.ibd

4.1 備份整個數據庫實例,包括用戶

dump_instance(outputUrl[, options]),備份整個數據庫實例,包括用戶

  • outputUrl 是備份目錄,不能為空。
  • options 是可指定的選項

options 有什么選項可以使用 \? dump_instance查看

GreatSQL Py > \? dump_instance
The following options are supported://找到這句下面就是

使用起來也是有限制的,官方原文:

Requirements
- MySQL Server 5.7 or newer is required.
- File size limit for files uploaded to the OCI bucket is 1.2 TiB.
- Columns with data types which are not safe to be stored in text form
  (i.e. BLOB) are converted to Base64, hence the size of such columns
  cannot exceed approximately 0.74 * max_allowed_packet bytes, as
  configured through that system variable at the target server.
- Schema object names must use latin1 or utf8 character set.
- Only tables which use the InnoDB storage engine are guaranteed to be
dumped with consistent data.

簡單來說就是

  • "最好是INNODB的數據引擎"
  • "版本在5.7及以上"
  • "必須使用latin1或utf8字符集"
  • "要有BACKUP_ADMIN權限"

話不多說,開始動手嘗試吧

GreatSQL Py > util.dump_instance("/data/backups",{"compression": "none","threads":"16"})
Acquiring global read lock
Global read lock acquired
Gathering information - done
All transactions have been started
Locking instance for backup
Global read lock has been released
Writing global DDL files
Writing users DDL
...中間省略
1 thds dumping - 109% (19.00M rows / ~17.37M rows), 263.77K rows/s, 54.42 MB/s            
Duration: 00:01:05s                                                           
Schemas dumped: 3                                                             
Tables dumped: 11                                                             
Data size: 3.05 GB                                                            
Rows written: 19000005                                                        
Bytes written: 3.05 GB                                                        
Average throughput: 46.80 MB/s

注意!compression: “none” 指的是不壓縮,這里設置為不壓縮主要是為了方便查看數據文件的內容。線上使用建議開啟壓縮

開啟16線程,速度還是蠻快的,接下來我們看下數據目錄

$ ll /data/backups/
#有好多這里就列舉幾個
-rw-r----- 1 root root     5773 8月   2 11:28 @.done.json
-rw-r----- 1 root root     1119 8月   2 11:27 @.json
-rw-r----- 1 root root      231 8月   2 11:27 @.post.sql
-rw-r----- 1 root root      231 8月   2 11:27 @.sql
-rw-r----- 1 root root      458 8月   2 11:27 test.json
-rw-r----- 1 root root 24536863 8月   2 11:27 test@student1@0.tsv
  • @.done.json:會記錄備份的結束時間,備份集的大小,備份結束時生成。
  • @.json:會記錄備份的一些元數據信息,包括備份時的一致性位置點信息:binlogFile,binlogPosition 和 gtidExecuted,這些信息可用來建立復制。
  • @.sql,@.post.sql:這兩個文件只有一些注釋信息。不過在通過 util.loadDump 導入數據時,我們可以通過這兩個文件自定義一些 SQL。其中,@.sql 是數據導入前執行,@.post.sql 是數據導入后執行。
  • sbtest.json:記錄 sbtest 中已經備份的表、視圖、定時器、函數和存儲過程。
  • *.tsv:數據文件。

我們看看數據文件的內容:

$ head -3 test@student1@0.tsv
1       Kathleen Ford   F       344 Jiangnan West Road, Haizhu District 139-1119-0424   163     lin4brNtHD      918
2       David Mitchell  M       355 Papworth Rd, Trumpington    5892 672144     702     qoA6axcT6u      218
3       Lin Yunxi       M       620 Hanover Street      7091 590385     194     Tl4LY3UmgY      765

TSV 格式,每一行儲存一條記錄,字段與字段之間用制表符(\t)分隔。

  • test@student1.json:記錄了表相關的一些元數據信息,如列名,字段之間的分隔符(fieldsTerminatedBy)等。
  • test@student1.sql:sbtest.sbtest1 的建表語句。
  • test.sql:建庫語句。如果這個庫中存在存儲過程、函數、定時器,也是寫到這個文件中。
  • @.users.sql:創建賬號及授權語句。默認不會備份 mysql.infoschema,mysql.session,mysql.sys 這三個內部賬號。

4.2 備份指定數據庫

util.dump_schemas(schemas, outputUrl[, options])備份指定庫的數據。

其中,第一個schemas參數必須為數組,第二個是備份目錄

GreatSQL Py > util.dump_schemas(["test"],"/data/backup_schemas",{"threads":"16"})
Acquiring global read lock
Global read lock acquired
Gathering information - done
All transactions have been started
...中間省略...
1 thds dumping - 109% (19.00M rows / ~17.37M rows), 530.98K rows/s, 49.34 MB/s uncompressed, 22.02 MB/s compressed    
Duration: 00:00:58s                                                                      
Schemas dumped: 1    
Tables dumped: 4
Uncompressed data size: 3.05 GB
Compressed data size: 1.57 GB
Compression ratio: 1.9
Rows written: 19000000
Bytes written: 1.57 GB
Average uncompressed throughput: 52.35 MB/s
Average compressed throughput: 26.96 MB/s

當然從MySQL Shell 8.0.28版本開始,可直接使用 util.dumpInstance 中的 includeSchemas 選項進行指定庫的備份。

下面展示下在MySQL Shell version 8.0.34版本下的內容和介紹

- includeSchemas: list of strings (default: empty) - List of schemas to
  be included in the dump.
GreatSQL Py > util.dump_instance("/data/backups",{"includeSchemas":["test"],"threads":"16"})

如果想要更高的版本的MySQL Shell for GreatSQL,可以參考文章 MySQL Shell 8.0.32 for GreatSQL編譯安裝

4.3 備份指定表

util.dump_tables(schema, tables, outputUrl[, options])備份指定表的數據

用法和上面兩個相同,tables參數必須為數組

GreatSQL localhost  Py > util.dump_tables("test",["student1"],"/data/backup_table",{"threads":"16"})
Acquiring global read lock
Global read lock acquired
Gathering information - done
All transactions have been started
...中間省略...
1 thds dumping - 110% (7.00M rows / ~6.31M rows), 539.12K rows/s, 44.17 MB/s uncompressed, 18.75 MB/s compressed   
Duration: 00:00:12s
Schemas dumped: 1
Tables dumped: 1
Uncompressed data size: 572.88 MB
Compressed data size: 242.92 MB
Compression ratio: 2.4
Rows written: 7000000
Bytes written: 242.92 MB
Average uncompressed throughput: 44.50 MB/s      
Average compressed throughput: 18.87 MB/s

當然從 MySQL Shell 8.0.28 開始,可直接使用 util.dumpInstance 中的 includeTables 選項進行指定表的備份。

- includeTables: list of strings (default: empty) - List of tables or
  views to be included in the dump in the format of schema.table.
GreatSQL Py > util.dump_instance("/data/backups",{"includeTables":["test.test"],"threads":"16"})

4.4 導入生成的備份

util.load_dump(url[, options])用于導入通過 dump 命令生成的備份集

導入前,記得先打開"local_infile"參數設置set global local_infile = ON;

GreatSQL Py > util.load_dump("/data/backup_table",{"threads":"16"})

如果想再導入一次,要把 resetProgress 設置為 True

GreatSQL Py > util.load_dump("/data/backup_table",{"threads":"16","resetProgress":True})

當然,我們也做過導入速度測試,下附測試結果,詳細對比文章見 myloader導入更快嗎?并沒有。。。

從上面圖表看出,雖然util.load_dump很快,但還是比GreatSQL 8.0.32-24 自帶的并行load data速度慢了一些,并行load data適用于頻繁導入大批量數據的應用場景,性能可提升約20+倍。詳情可見?https://gitee.com/GreatSQL/GreatSQL-Manual/blob/master/5-enhance/5-1-highperf-parallel-load.md

4.5 參數解析

  • analyzeTables:可選參數 on/off/histogram;表加載完畢后,是否執行 ANALYZE TABLE 操作。默認是 off(不執行),histogram(只對有直方圖信息的表執行)
  • characterSet:字符集,無需顯式設置,默認會從備份集中獲取。
  • createInvisiblePKs:是否創建隱式主鍵,默認從備份集中獲取。
  • deferTableIndexes:可選參數 off(不延遲)/fulltext(只延遲創建全文索引,默認值)/all(延遲創建所有索引);是否延遲(數據加載完畢后)創建二級索引。
  • dryRun:試運行。此時只會打印備份信息,不會執行備份操作。
  • excludeSchemas:忽略某些庫的備份,多個庫之間用逗號隔開excludeSchemas: ["db1", "db2"]
  • excludeTables:忽略某些表的備份,表必須是 庫名.表名 的格式,多個表之間用逗號隔開excludeTables: ["sbtest.sbtest1", "sbtest.sbtest2"]
  • excludeUsers:忽略某些賬號的備份,可指定多個賬號。
  • ignoreExistingObjects:是否忽略已經存在的對象,默認為 off。
  • ignoreVersion:忽略 MySQL 的版本檢測。默認情況下,要求備份實例和導入實例的大版本一致。
  • includeSchemas:指定某些庫的備份。
  • includeTables:指定某些表的備份。
  • includeUsers:指定某些賬號的備份,可指定多個賬號。
  • loadData:是否導入數據,默認為 true。
  • loadDdl:是否導入 DDL 語句,默認為 true。
  • loadIndexes:與 deferTableIndexes 一起使用,用來決定數據加載完畢后,最后的二級索引是否創建,默認為 true。
  • loadUsers:是否導入賬號,默認為 false。注意,即使將 loadUsers 設置為 true,也不會導入當前正在執行導入操作的用戶。
  • progressFile:在導入的過程中,會在備份目錄生成一個progressFile,用于記錄加載過程中的進度信息,這個進度信息可用來實現斷點續傳功能。默認為 load-progress…progress。
  • resetProgress:如果備份目錄中存在progressFile,默認會從上次完成的地方繼續執行。如果要從頭開始執行,需將 resetProgress 設置為 true。該參數默認為 off。
  • schema:將表導入到指定 schema 中,適用于通過 util.dumpTables 創建的備份。
  • showMetadata:導入時是否打印一致性備份時的位置點信息。
  • showProgress:是否打印進度信息。
  • skipBinlog:是否設置 sql_log_bin=0 ,默認 false。這一點與 mysqldump、mydumper 不同,后面這兩個工具默認會禁用 Binlog。
  • threads:并發線程數,默認為 4。
  • updateGtidSet:更新 GTID_PURGED。可設置:off(不更新,默認值), replace(替代目標實例的 GTID_PURGED), append(追加)。
  • waitDumpTimeout:util.loadDump 可導入當前正在備份的備份集。處理完所有文件后,如果備份還沒有結束(具體來說,是備份集中沒有生成 @.done.json),util.loadDump 會報錯退出,可指定 waitDumpTimeout 等待一段時間,單位秒。
  • osBucketName:osNamespace,ociConfigFile,ociProfile,ociParManifest,ociParExpireTime:OCI 對象存儲相關。
  • osNamespace:OCI 對象存儲相關。
  • ociConfigFile:OCI 對象存儲相關。
  • ociProfile:OCI 對象存儲相關。

4.6 使用注意事項

  • 導入時,注意 max_allowed_packet 的限制,導入之前,需將目標實例的 local_infile 設置為 ON。
  • 該工具屬于客戶端工具,生成的文件在客戶端。
  • 導出的時候,導出路徑下不能有文件。
  • 表上存在主鍵或唯一索引才能進行 chunk 級別的并行備份。字段的數據類型不限。不像 mydumper,分片鍵只能是整數類型。
  • 對于不能進行并行備份的表,目前會備份到一個文件中。如果該文件過大,不用擔心大事務的問題,util.loadDump 在導入時會自動進行切割。
  • util.dumpInstance 只能保證 InnoDB 表的備份一致性。
  • 默認不會備份 information_schema,mysql,ndbinfo,performance_schema,sys。
  • 備份實例支持 GreatSQL/MySQL 5.6 及以上版本,導入實例支持 GreatSQL/MySQL 5.7 及以上版本。
  • 備份的過程中,會將 BLOB 等非文本安全的列轉換為 Base64,由此會導致轉換后的數據大小超過原數據。

五、快速搭建MGR集群

可以用MySQL Shell for GreatSQL來搭建 MGR集群 或接管現有集群非常的方便快捷。加上GreatSQL針對MGR做了大量的改進和提升工作,進一步提升MGR的高可靠等級。

快捷的部署 + 好用的GreatSQL MGR為什么不用呢?

5.1 部署準備

IP

端口

角色

172.17.139.77

3306

mgr1

172.17.139.77

3307

mgr2

采用的是一個單機多實例的部署方式,如何部署單機多實例可以前往?https://gitee.com/GreatSQL/GreatSQL-Manual/blob/master/6-oper-guide/6-6-multi-instances.md

接下來再把MySQL Shell for GreatSQL下載安裝完成,即可開始部署。

注意!本次部署皆采用Shell 的 Python 模式

5.2 開始部署

利用MySQL Shell for GreatSQL構建MGR集群比較簡單,主要有幾個步驟:

  1. 檢查實例是否滿足條件。
  2. 創建并初始化一個集群。
  3. 逐個添加實例。

首先,用管理員賬號 root 連接到第一個節點:

$ mysqlsh -S/data/GreatSQL/mgr01/mysql.sock root@localhost
MySQL Shell 8.0.25

使用\s命令查看當前節點狀態,確保連接正常可用

執行 dba.configure_instance() 命令開始檢查當前實例是否滿足安裝MGR集群的條件,如果不滿足可以直接配置成為MGR集群的一個節點:

GreatSQL Py > dba.configure_instance()
Configuring local MySQL instance listening at port 3306 for use in an InnoDB cluster...

This instance reports its own address as 172.17.139.77:3306
#提示當前的用戶是管理員,不能直接用于MGR集群,需要新建一個賬號
ERROR: User 'root' can only connect from 'localhost'. New account(s) with proper source address specification to allow remote connection from all instances must be created to manage the cluster.
1) Create remotely usable account for 'root' with same grants and password
2) Create a new admin account for InnoDB cluster with minimal required grants
3) Ignore and continue
4) Cancel
Please select an option [1]: 2 #這里選擇2,即創建一個最小權限賬號

接著輸入要創建用戶的用戶名、密碼即可

Please provide an account name (e.g: icroot@%) to have it created with the necessary
privileges or leave empty and press Enter to cancel.
Account Name: GreatSQL  #用戶名
Password for new account:  #密碼
Confirm password:    #確認密碼

applierWorkerThreads will be set to the default value of 4.

The instance '172.17.139.77:3306' is valid to be used in an InnoDB cluster.

Cluster admin user 'GreatSQL'@'%' created.
The instance '172.17.139.77:3306' is already ready to be used in an InnoDB cluster.

# 這個警告消息是告訴你正在使用的系統變量@@slave_parallel_workers已經被棄用,將在未來的版本中被移除,建議你使用新的變量名replica_parallel_workers來替換。
WARNING: '@@slave_parallel_workers' is deprecated and will be removed in a future release. Please use replica_parallel_workers instead. (Code 1287).

Successfully enabled parallel appliers.

完成檢查并創建完新用戶后,退出當前的管理員賬戶,并用新創建的MGR專用賬戶登入,準備初始化創建一個新集群:

GreatSQL Py > exit()

$ mysqlsh --uri GreatSQL@172.17.139.77:3306
MySQL Shell 8.0.25

這時候就可以使用我們的dba工具了,定義一個變量名c,方便下面引用

GreatSQL 172.17.139.77:3306 ssl  Py > c = dba.create_cluster('MGR1');
A new InnoDB cluster will be created on instance '172.17.139.77:3306'.

Validating instance configuration at 172.17.139.77:3306...

This instance reports its own address as 172.17.139.77:3306

Instance configuration is suitable.
NOTE: Group Replication will communicate with other members using '172.17.139.77:33061'. Use the localAddress option to override.

Creating InnoDB cluster 'MGR1' on '172.17.139.77:3306'...

Adding Seed Instance...

Cluster successfully created. Use Cluster.addInstance() to add MySQL instances.
At least 3 instances are needed for the cluster to be able to withstand up to
one server failure.

這就完成了MGR集群的初始化并加入第一個節點(引導節點)。接下來,用同樣方法先用 root 賬號分別登入到另外兩個節點,完成節點的檢查并創建最小權限級別用戶(此過程略過...注意各節點上創建的用戶名、密碼都要一致),之后回到第一個節點,執行 addInstance()添加另外兩個節點。

GreatSQL 172.17.139.77:3306 ssl  Py > c.add_instance('GreatSQL@172.17.139.77:3307');
#這里要指定MGR專用賬號
...省略...
Please select a recovery method [C]lone/[A]bort (default Abort): Clone  <-- 選擇用Clone方式從第一個節點全量復制數據
Validating instance configuration at 172.17.139.77:3306...
...省略...
The instance '172.17.139.77:3306' was successfully added to the cluster.

這樣節點就加入成功了!用c.describe()看下集群狀態,如果要顯示更詳細信息可以使用c.status()

GreatSQL 172.17.139.77:3306 ssl  Py > c.describe()
{
    "clusterName": "mgr1", 
    "defaultReplicaSet": {
        "name": "default", 
        "topology": [
            {
                "address": "172.17.139.77:3306", 
                "label": "172.17.139.77:3306", 
                "role": "HA"
            }, 
            {
                "address": "172.17.139.77:3307", 
                "label": "172.17.139.77:3307", 
                "role": "HA"
            }
        ], 
        "topologyMode": "Single-Primary"
    }
}

列出下DBA對象所有的命令:

GreatSQL 172.17.139.77:3306 ssl  Py > \help dba*
Found several entries matching dba*
  • dba:命令本身提供對集群管理和實例管理的高級功能的訪問。
  • dba.check_instance_configuration:檢查GreatSQL實例的配置是否符合InnoDB集群的要求。
  • dba.configure_instance:配置實例以加入InnoDB集群,調整設置以滿足集群要求。
  • dba.configure_local_instance:配置本地GreatSQL實例以便用于InnoDB集群。
  • dba.configure_replica_set_instance:配置副本集實例以滿足副本集的要求。
  • dba.create_cluster:創建一個新的InnoDB集群。
  • dba.create_replica_set:創建一個新的GreatSQL副本集。
  • dba.delete_sandbox_instance:刪除一個現有的沙箱實例。
  • dba.deploy_sandbox_instance:在本地計算機上部署一個沙箱GreatSQL Server實例。
  • dba.drop_metadata_schema:刪除現有的InnoDB集群元數據模式。
  • dba.get_cluster:獲取現有的InnoDB集群的引用。
  • dba.get_replica_set:取現有GreatSQL副本集的引用。
  • dba.help:顯示dba模塊的幫助信息。
  • dba.kill_sandbox_instance:殺死沙箱GreatSQL實例。
  • dba.reboot_cluster_from_complete_outage:從完全停機狀態重新啟動InnoDB集群。
  • dba.session:獲取當前GreatSQL會話的引用。
  • dba.start_sandbox_instance:啟動沙箱GreatSQL實例。
  • dba.stop_sandbox_instance:停止沙箱GreatSQL實例。
  • dba.upgrade_metadata:升級集群的元數據模式以使其與當前版本的MySQL Shell for GreatSQL兼容。
  • dba.verbose:用于控制dba命令的詳細輸出。

如果要更詳細的某個命令的幫助手冊,則可以 \help 后接具體的命令:

GreatSQL 172.17.139.77:3306 ssl  Py > \help dba.get_cluster

我們GreatSQL社區有"深入淺出MGR系列文章"其中就有使用Shell部署[第四篇]MGR以及管理[第五篇]:

深入淺出MGR系列文章地址?GreatSQL-Doc: GreatSQL-Doc - Gitee.com

4. 利用MySQL Shell安裝部署MGR集群 | 深入淺出MGR

5. MGR管理維護 | 深入淺出MGR

有對MGR想了解的或深入學習的,可以去閱讀下。

六、總結

MySQL Shell for GreatSQL以其強大的功能、靈活性和先進的工具集,確實為數據庫管理人員和開發者打開了全新的大門。從基本的數據庫操作到復雜的集群管理。

對于想要充分利用 GreatSQL 功能的任何人來說,掌握MySQL Shell for GreatSQL都是一項必備技能。無論你是新手還是經驗豐富的數據庫專家,希望這篇文章都能為你的GreatSQL旅程提供寶貴的指導和靈感。

責任編輯:華軒 來源: GreatSQL社區
相關推薦

2023-08-30 08:01:28

MySQLGreatSQLdocker

2023-06-08 08:17:32

GreatSQLMGREL7

2023-06-28 10:24:04

2024-01-31 09:55:53

2022-01-24 20:40:55

JavastreamLambda

2020-09-24 10:57:12

編程函數式前端

2021-11-10 16:07:01

鴻蒙HarmonyOS應用

2021-11-10 16:08:45

鴻蒙HarmonyOS應用

2019-09-27 09:40:06

ElvishShellLinux

2010-07-09 12:09:34

IT運維Mocha BSM摩卡軟件

2022-07-01 17:06:49

Fractio鴻蒙

2022-04-08 09:01:14

CSS自定義屬性前端

2012-04-26 14:02:58

ibmdw

2010-09-01 10:09:32

CSS樣式

2018-03-15 14:07:17

潤乾Excel行列轉換

2013-11-01 10:41:52

Windows 8.1應用技巧

2021-11-29 07:47:56

RocketMQ分布式消息

2015-08-10 14:42:40

Explain SheShell 命令

2025-02-07 08:39:32

Shell部署測試

2015-08-12 10:54:22

架構云
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久久久爱 | 成人小视频在线免费观看 | 日韩在线免费视频 | 久久国产一区二区 | 久久久久久免费免费 | 欧美中文在线 | 日韩在线一区二区三区 | 国产成人一区二 | 国产日韩欧美精品一区二区三区 | 国产日产精品一区二区三区四区 | 老牛影视av一区二区在线观看 | 欧美精品在线一区 | 一区二区三区免费观看 | 一区二区三区不卡视频 | 久久久久精 | 日韩色视频 | 久久久福利 | 成人av一区二区在线观看 | 亚洲三级国产 | 99re视频这里只有精品 | 欧美黄色网 | www.伊人.com| 成人在线观看黄 | 精品久久久久香蕉网 | 欧美一级欧美三级在线观看 | 精品96久久久久久中文字幕无 | 青青草av在线播放 | 欧美久久综合 | 亚洲风情在线观看 | 亚洲第一中文字幕 | 91精品国产91久久久久久最新 | 国产欧美精品一区二区色综合 | 久久国产婷婷国产香蕉 | 免费精品久久久久久中文字幕 | 免费毛片网站 | 一区二区三区精品视频 | 午夜免费视频 | 成人影| 国产欧美日韩在线播放 | 日韩欧美成人精品 | 国产成人精品久久二区二区91 |