Showing entries 1 to 10 of 231
10 Older Entries »
Displaying posts with tag: 8.0 (reset)
A graph a day, keeps the doctor away ! – MySQL Checkpoint Age

In a previous post, I explained how you can collect and plot metrics using MySQL Shell.

This is a new series of article where I will explain how to read and understand some of the generated graphs.

Understanding your workload and seeing the evolution of it over time can help anticipating problems and work on solutions before the breakdown.

Let’s start the series with a concept that is not always well understood or at least not always considered at its true value: MySQL Checkpoint Age.

example of checkpoint age graphInnoDB Checkpointing

Before analyzing the graph, we need to understand what is MySQL InnoDB Checkpointing.

Each change to a data page in the InnoDB Buffer Pool are also written into the Write Ahead Logs.

In the literature they are sometimes called Transaction …

[Read more]
MySQL 8.0.29: thank you for the contributions

When it’s time for a new MySQL release, it’s also time to thank our contributors !

Released on April 26th, MySQL 8.0.29 contains several contributions from our awesome Community and on behalf of the entire MySQL Team, I would like to thank you all !

This new releases contains patches from Vilnis Termanis, Luke Weber, Meik Milevczik, Song Zhibai, Zheng Lai, Øystein Grøvlen, Facebook, Biran Yue, Hope Lee, Rahul Malik, Christopher Chavez, Chen Yi, Ning PeiPei, Jianjian Song, Jack Wotherspon and Bin Wang.

Once again, thank you all for your great contributions and to the company you are working for.

Here is the list of the above contributions and related bugs:

Clients / Connectors

  • #81519 Connector/Python: Guarantee file closing of input files in optionfiles module – Vilnis Termanis
[Read more]
Poorman’s MySQL monitoring/trending

I could have also called this article When Pandas meet Dolphins in MySQL Shell.

Some time ago, I wrote a post related on how to collect initial relevant data when trying to seek help for MySQL.

Since then, the MySQL Shell engineering team implemented another powerful native utility that collect all the essential information and more and store them in a single zip file.

This zip archive contains TSV and YAML files that, for example, the MySQL Support Team could use to solve your eventual issue.

For more information regarding MySQL Shell’s util.debug.collectDiagnostics(), I encourage you to check the manual.

This tool is …

[Read more]
Poorman’s MySQL table audit information – part 3

Recently we saw how we can catch audit information using invisible column, JSON data type and triggers in MySQL 8.0:

Of course, the creation of these triggers can quickly become a tedious operation. Once again, MySQL has all what we need to make it simple.

As you may know, it’s impossible to create triggers from store procedure, so using a sys schema function would not be something possible. However, MySQL Shell is again the answer ! It’s very easy to use a python plugin to perform the necessary operations.

I’ve written such example, available on …

[Read more]
Poorman’s MySQL table audit information – part 2

I really enjoyed to dig into the solution I described yesterday in this post, to generate table audit information using invisible columns and triggers.

In this post, I will focus only on the solution using a JSON column to store the audit information.

Yesterday, I wrote that it’s also possible to track all changes an not only the last one but also keep information about what changed.

I wanted to illustrate that with an example, let’s start with the output:

This is exactly what I was looking for !

And of course we can search in that audit information. For example let’s search for all records that have been modified and where the old or new name was/is frederic:

We can verify that indeed that record had frederic as initial value.


Compare …

[Read more]
Poorman’s MySQL table audit information

Today, somebody asked me how he could track the creation of a record (who created it and when) and who and when it was last modified.

Usually, this is performed in a different table, called audit table. In MySQL you can create an audit table and populate it using triggers.

But of course, this person had some constraints, otherwise it would have been too easy:

  1. no other table could be used/created
  2. the application should keep working without any changes

He was desperate for help…

MySQL 8.0 Invisible Columns

The answer is : Invisible Columns.

Let’s have a look at a simple table, containing an ID as primary key, a first name and a last name. And of course the application must work as expected… and unfortunately, it seems the application is …

[Read more]
Deploying Apache Airflow on OCI with MySQL HeatWave Database Service

Apache Airflow is an open-source workflow management platform for data engineering pipelines.

Today we will see how we can deploy very easily Apache Airflow on a Compute instance in Oracle Cloud Infrastructure (OCI) using MySQL HeatWave Database Service (MDS).

I am sharing Terraform modules you can use to deploy in your architecture:


With the modules you can deploy architectures like these:

with a single MDS instancewith MDS High Availabilitywith HeatWave Cluster

We will use the exact same modules built into a stack for OCI’s Resource Manager. This will allow us to deploy the architecture just in few clicks.


We open in a browser the following GitHub repository: …

[Read more]
How to modify a JSON field in SQL ?

Let’s start with some info about how MySQL Document Store handles JSON documents.

Document Store and CRUD

We know that MySQL 8.0 Document Store handles JSON documents with CRUD operations. We can add, delete and modify those documents very easily:

 JS >db.mycollection.find()
    "_id": "0000624d3e890000000000000001",
    "name": "my_iot1",
    "type": "sensor",
    "capabilities": "{'temperature':'true','humidity':'true'}"
    "_id": "0000624d3e890000000000000002",
    "name": "my_iot2",
    "type": "sensor",
    "capabilities": "{'temperature':'true'}"
2 documents in set (0.0007 sec)

To modify a document, the modify method can be used in different ways:

As illustrate above, we have:

  • set()
[Read more]
Live Migration from Azure Database for MySQL to MySQL Database Service on OCI

MySQL Database Service on OCI is all over the tech news with the latest HeatWave ML announcement [1][2][3][4][5].

This article explains how to perform a live migration of your Azure/MySQL to OCI/MySQL.

As Azure allows public connections directly to the database, this is what …

[Read more]
sysbench 1.1.0 rpm with SSL support

For a future article, I was again looking into the possibility of using sysbench to generate data and load on a MySQL database. However, I needed an SSL connection which only version 1.1.0 supports (see issue 308).

Alexey didn’t create a branch and/or release for the version 1.1.0. The code is the master branch.

As you know, I like to install software using the Operating System’s packaging and so I created a rpm for sysbench 1.1.0.

If you are also interested to use this version, here are the rpms for some popular OS and architecture (including Arm):


[Read more]
Showing entries 1 to 10 of 231
10 Older Entries »