J-F Gagné's MySQL Blog

Wednesday, June 4, 2025

Interesting Troubleshooting of a MySQL Crash : filling then freeing the disk

›
I recently troubleshoot an interesting MySQL crash, and I think it is worth sharing (with the related bugs).  MySQL crashed when the disk wa...
Monday, May 26, 2025

Interesting Binary Logging Optimization in MariaDB

›
As I wrote in a LinkedIn post , I am working on a blog post related to binary logging of big transactions.  I thought I would split this pos...
Monday, April 28, 2025

Performance Regression in MySQL 8.0, Fixed in 8.4, Easy Workaround (innodb_doublewrite_pages)

›
While doing benchmarks on 5.7 and 8.0, I came across a performance regression in MySQL 8.0 over 5.7 and opened a bug ( Bug #111353 : 3x Perf...
1 comment:
Tuesday, March 18, 2025

Contrib RFC: Counters for Slow InnoDB Sync Reads

›
I just submitted a MySQL Contribution and I would like to gather feedback about it.  Depending on the received feedback, I might submit an u...
Tuesday, December 3, 2024

InnoDB Tablespace Duplicate Check Threads (and EBS Volumes for MySQL Startup with Many Tables)

›
In the last weeks / months, I have been working on understanding / improving MySQL startup with many tables.  I already wrote five posts on ...
Monday, December 2, 2024

Problematic Improved Offline Mode Error in MySQL 9

›
I am writing this quick post to share what I think is a problematic new behavior of Offline Mode in MySQL 9.  Basically, the new default beh...
1 comment:
Tuesday, November 26, 2024

The Light MySQL Startup Optimization on EBS Volumes

›
In the last weeks / months, I have been working on understanding / improving MySQL startup with many tables.  I already wrote four posts on ...
Tuesday, November 19, 2024

Understanding InnoDB Tablespace Duplicate Check (MySQL Startup with Many Tables)

›
This post is a little long, please bear with me as after the intro, you can skip to the essential. In the last weeks / months, I have been w...
Monday, November 11, 2024

Long and Silent / Stressful MySQL Startup with Many Tables

›
In the last weeks / months, I have been working on understanding / improving MySQL startup with many tables.  I already wrote two posts on t...
Monday, October 28, 2024

Impressed by Disabling InnoDB Redo Logging for Creating Tables as Fast as Possible

›
In the last weeks / months, I have been working on understanding / improving MySQL startup with many tables.  I already wrote a post about m...
2 comments:
Tuesday, September 3, 2024

Faster MySQL Startup with Many Tables (1M+)

›
I have been scratching my head about MySQL startup for some time.  There is much to say about this, and many other posts will probably follo...
3 comments:
Friday, June 28, 2024

Trick to Simulate Higher Latency IOs on Linux

›
When running tests, it is sometimes useful to slow down IOs to clearly show the impact of reading from the disk.  Modern laptops and servers...
Wednesday, June 19, 2024

Trusting mysqldump and Insecure MySQL Client Lead to Remote Code Execution

›
Yes, you read this correctly: because the MySQL client is insecure and allows running arbitrary commands, and because mysqldump blindly trus...
2 comments:
Monday, June 17, 2024

RFC: Database / Schema in the Slow Query Log File

›
A month ago, I announced that I am working on a MySQL Contribution to add database / schema in the slow query log file ( bug report , Linked...
2 comments:
Wednesday, April 10, 2024

17 Years of Insecure MySQL Client !

›
Yes, this is a catchy title, but it is true, and it got you reading this post :-).  Another title could have been “Please load this mysql-du...
1 comment:
Thursday, April 4, 2024

dbdeployer Tutorial on Mac

›
Not very long ago (well, maybe a little longer, this post is in draft for more than a year), in the spawn of less than 5 days, I suggested m...
Wednesday, November 22, 2023

Thoughts on the October 2023 MySQL Releases

›
A few days ago, Oracle released three new MySQL GA versions : 8.2.0, 8.0.35 and 5.7.44.  I skimmed the release notes ( 8.2.0 , 8.0.35 and 5...
10 comments:
Monday, June 26, 2023

Rows Examined Blindspot when Looking for non-Existing Data

›
When trying to understand queries in the slow log, an interesting metric to look at is rows examined .  Also, when trying to understand CPU ...
Monday, May 22, 2023

Avoiding a STOP SLAVE Crash with MTR in Percona Server older than 5.7.37-40

›
I am finalizing my Percona Live talk MySQL and Vitess (and Kubernetes) at HubSpot .  In this talk, I mentioned that I like that Percona is p...
Thursday, March 30, 2023

Running and Mountain Climbing at Percona Live Denver

›
I just booked my travel arrangements for Percona Live 2023 .  In case you missed it, one of the most important MySQL Conference of the year ...
Monday, January 23, 2023

Planet for the MySQL Community Graduating from Beta

›
In May 2020, I published a Planet for the MySQL Community Pluto Beta .  I was satisfied with the result and was considering it done , but I ...
Monday, December 12, 2022

Free Page Consumption by InnoDB Table Compression (Percona backoff Algo. part #2)

›
In my previous post about InnoDB Stalls on Empty Free List , I used a test environment that might look a little artificial : a table larger ...
1 comment:
Wednesday, November 30, 2022

Tail Latencies in Percona Server because of InnoDB Stalls on Empty Free List

›
If, in Percona Server, you are observing tail latencies on queries that should be fast, this might be a side effect of Percona's improve...
2 comments:
Tuesday, November 15, 2022

Bad Optimizer Plan on Queries Combining WHERE, ORDER BY and LIMIT

›
Sometimes, the MySQL Optimizer chooses a wrong plan, and a query that should execute in less than 0.1 second ends-up running for 12 minutes ...
Tuesday, May 31, 2022

Triggering Replication Lag for Testing a Script

›
I am currently working on a script to auto-enable parallel replication / multi-threaded replication ( MTR ) when there is replication lag.  ...
Tuesday, March 8, 2022

Rows Examined not Trustworthy because of Index Condition Pushdown

›
When Index Condition Pushdown is used, you cannot trust rows examined as reported by the slow query log (nor in some Performance Schema tabl...
Wednesday, January 19, 2022

Crashing MySQL with Malicious Intent and a lot of Determination

›
A year ago, I blogged about An Unprivileged User can crash your MySQL Server .  At the time, I explained how to protect yourself against thi...
Monday, December 13, 2021

Trick to Simulate a Linux Server with less RAM

›
I created the first draft of this post many years ago.  At that time, I was working with physical servers having 192 GB of RAM or more.  On ...
2 comments:
Tuesday, November 30, 2021

Follow-up on an Unprivileged User can Crash your MySQL Server

›
A year ago, I blogged about An Unprivileged User can Crash your MySQL Server .  At the time, I presented how to protect yourself against thi...
Friday, November 12, 2021

Duplicate Entry in ALTER TABLE (and in OPTIMIZE TABLE)

›
A few weeks ago and in MySQL 5.7, I had an ALTER TABLE that failed with a duplicate entry error.  This is old news as it is happening since...
7 comments:
Saturday, December 5, 2020

Fixing low durability GTID replica with Voodoo

›
At my FOSDEM talk earlier this year, I gave a trick for fixing a crashed GTID replica.  I never blogged about this, so now is a good time.  ...
Sunday, October 18, 2020

An Unprivileged User can crash your MySQL Server

›
Yes, your read the title correctly: an unprivileged user can crash your MySQL Server.  This applies for the default configuration of MySQL 8...
Sunday, June 7, 2020

Update on Planet for the MySQL Community (June 7, 2020)

›
Three weeks ago, I released the Pluto Beta of Planet for the MySQL Community .  Since then, a few things changed and I think it is worth doi...
1 comment:
Thursday, May 14, 2020

Planet [for the] MySQL Community: Pluto Beta

›
As indicated in a previous post, I am working on Planet [for the] MySQL Community for which I did a RFC on the Requirements .  I am happy t...
4 comments:
Tuesday, May 12, 2020

Planet MySQL Community: Requirements RFC

›
As indicated in a previous post, I am working on a Planet MySQL Community (this name is not final, see below).  In this post, I want to pre...
2 comments:
Friday, April 24, 2020

Planning for the AFTER Planet MySQL (bis)

›
Oups, my previous post had a forbidden word and did not show-up on Planet MySQL, so retry... As written in a previous post,  the state of...

Planning for the AFTER Planet MySQL

›
As written in my previous post, the state of Planet MySQL is unhealthy  !  I am still aggregated there for now as, before leaving what was ...

State of Planet MySQL: unhealthy !

›
Also, the state of bugs.mysql.com: unhealthy (last paragraph below, but this would be too long a title). I have been complaining for some ...
6 comments:
Monday, March 30, 2020

JFG MySQL Advice during COVID-19

›
Update 2020-05-05 : I stopped providing consulting hours.  They were not very popular, but it was worth trying. We are all impacted by COV...
Monday, January 27, 2020

A Legacy Behavior of MySQL Corrupting Restored Backups (replicate-same-server-id = OFF)

›
In my previous post ( Puzzled by MySQL Replication ), I describe a weird, but completely documented, behavior of replication that had me scr...
Thursday, January 9, 2020

Puzzled by MySQL Replication (War Story)

›
Recently, I was puzzled by MySQL replication !  Some weird, but completely documented, behavior of replication had me scratching my head for...
5 comments:
Monday, October 7, 2019

The dark side of super_read_only

›
There is an interesting feature in MySQL 5.7+: the global variable super_read_only .  MySQL 5.6 and before only had the read_only global va...
2 comments:
Tuesday, July 16, 2019

MySQL Master Replication Crash Safety Part #5a: making things faster without reducing durability - using better hardware

›
This is a follow-up post in the MySQL Master Replication Crash Safety series.  In the previous posts, we explored the consequences of reduci...
2 comments:

MySQL Master Replication Crash Safety Part #5: faster without reducing durability (under the hood)

›
This post is a sister post to MySQL Master Replication Crash Safety Part #5: making things faster without reducing durability.  There is no ...
2 comments:
Tuesday, July 9, 2019

MySQL Master Replication Crash Safety Part #4: benchmarks of high and low durability

›
This is a follow-up post in the MySQL Master Replication Crash Safety series.  In the three previous posts, we explored the consequence of r...
5 comments:

MySQL Master Replication Crash Safety part #4: benchmarks (under the hood)

›
This post is a sister post to MySQL Master Replication Crash Safety Part #4: benchmarks of high and low durability .  There are no introduct...
Tuesday, June 25, 2019

Getting past 2400 threads with sysbench and dbdeployer for benchmarking MySQL 5.7.26

›
I am currently running tests with sysbench  and  dbdeployer on a Google Cloud Platform Debian 9 instance.  I ran into an interesting limit...
Wednesday, May 8, 2019

Not enforcing SSL on CloudSQL, really !

›
When creating a MySQL CloudSQL instance, SSL connections are not enforced by default and you get below in the Connections tab of the Goog...
4 comments:
Wednesday, May 1, 2019

Care with using the max_connections beta database flag on CloudSQL...

›
War story of the day: do not use — or be very careful when using — the max_connections beta database flag on CloudSQL ... because it has man...
2 comments:
Tuesday, February 26, 2019

MySQL Master High Availability and Failover: more thoughts

›
Some months ago, Shlomi Noach published a series about Service Discovery .  In his posts, Shlomi describes many ways for an application to f...
10 comments:
›
Home
View web version

About Me

My photo
Jean-François Gagné
twitter.com/jfg956 linkedin.com/in/jfg956
View my complete profile
Powered by Blogger.