With MySQL Shell 8.0.16, a new very interesting feature was released: the Reporting Framework.
Jesper already blogged about it and I recommend you to read his articles if you are interested in writing your own report:
- https://mysql.wisborg.dk/2019/04/26/mysql-shell-8-0-16-built-in-reports/
- https://mysql.wisborg.dk/2019/04/27/mysql-shell-8-0-16-user-defined-reports/
I this post, I will show you one user-defined report that can be used to monitor your MySQL InnoDB Cluster / Group Replication.
Preparation
Before being able to use the report, you need to download 2 files. The first one is the addition in sys
that I often use to monitor MySQL InnoDB Cluster:
And the second one is the report:
Once downloaded, you can unzip them and install them:
On your Primary-Master run:
mysqlsh --sql clusteradmin@mysql1 < addition_to_sys_GR.sql
Now install the report on your MySQL Shell client’s machine:
$ mdkir -p ~/.mysqlsh/init.d
mv gr_info.py ~/.mysqlsh/init.d
Usage
Once installed, you just need to relaunch the Shell and you are ready to call the new report using the \show
command:
Now let’s see the report in action when I block all writes on mysql2
with a FTWRL and call the report with \watch
:
Conclusion
Yet another nice addition to MySQL Shell. With this report you can see which member still has quorum, how many transactions each nodes have to apply, …
Don’t hesitate to also share your reports too !
[…] explained in this previous post, it’s now (since 8.0.16) possible to use the MySQL Shell Reporting Framework to monitor MySQL […]
[…] explained in this previous post, it’s now (since 8.0.16) possible to use the MySQL Shell Reporting Framework to monitor MySQL […]
using mysql shell 8.0.16
try to use the report but getting below error
IndexError: unknown attribute: sql
Hi Abdullah,
Are you connected to one of the members ? And are you using the X Protocol ? (port 33060 by default)
Cheers,
Thanks 🙂 port 33060 by default working
Regards
Thanks 🙂 port 33060 by default working
Regards
JS > \show gr_info
reports.gr_info: User-defined function threw an exception:
Traceback (most recent call last):
File “gr_info.py”, line 2, in gr_info
query = session.sql(“select concat(member_host,’:’,member_port) as server, member_role as ‘role’, member_version as ‘version’, sys.gr_member_in_primary_partition() as ‘quorum’, Count_Transactions_Remote_In_Applier_Queue as ‘tx behind’, Count_Transactions_in_queue as ‘tx to cert’, count_transactions_remote_applied as ‘remote tx’, count_transactions_local_proposed as ‘local tx’ from performance_schema.replication_group_member_stats t1 join performance_schema.replication_group_members t2 on t2.member_id = t1.member_id”)
AttributeError: unknown attribute: sql
Please check
This error is because you are connected using the classic protocol and not MySQL X protocol (port 33060 by default). I should add a check.