This is a follow-up post in the MySQL Master Replication Crash Safety series. In the two previous posts, we explored the consequence of reducing durability on masters (including setting sync_binlog to a value different than 1) when slaves are using legacy file+position replication. In this post, we cover GTID replication. This introduces a new inconsistency scenario with a potential replication breakage that depends on transaction execution on the master and timing on the slave. Before discussing this violation of ACID, we start with some reminders about the last posts and with some explanations about GTIDs.
Showing posts with label MariaDB Server. Show all posts
Showing posts with label MariaDB Server. Show all posts
Tuesday, February 12, 2019
MySQL Master Replication Crash Safety Part #3: GTID
Labels:
ACID,
Binlog Server,
Consistency,
Durability,
GTID,
MariaDB Server,
Master Replication Crash Safety,
MySQL,
Replication
Monday, August 27, 2018
Another Post on the Percona Community Blog, Bug Activities on Replication Crash Safety, and Percona Live Europe
I published another article on the Percona Community Blog. This time, it is about Semi-Synchronous Replication. You can read the post here:
I previously wrote about my motivation to publish on the Percona Community Blog. Things have not changed: I still believe it is a great community initiative that I want to encourage. You can learn more about the Percona Community Blog in their Hello World and in the Story So Far posts.
Thursday, June 28, 2018
JFG Posted on the Percona Community Blog - A Nice Feature in MariaDB 10.3: no InnoDB Buffer Pool in Core Dumps
I just posted an article on the Percona Community Blog. You can access it following this link:
I do not know if I will stop publishing posts on my personal blog or use both, I will see how things go. In the rest of this post, I will share why I published there and how things went in the process.
Labels:
Core Dump,
Crash,
InnoDB,
InnoDB Buffer Pool,
MariaDB 10.3,
MariaDB Server,
MySQL,
Operations,
Percona,
Percona Community Blog,
Percona Server
Thursday, April 19, 2018
Some bugs and spring pilgrimage to Percona Live Santa Clara 2018
I am now in an airport, waiting for one of the four flights that will bring me to Percona Live Santa Clara 2018. This is a good time to write some details about my tutorial on parallel replication. But before talking about Percona Live, I will share thoughts on MySQL/MariaDB bugs that caught my attention in the last weeks/months (Valeriy: you clearly have an influence on me).
Labels:
Booking.com,
Bugs,
innodb_force_primary_key,
MariaDB 10.1,
MariaDB Server,
MySQL,
Parallel Replication,
Percona Live Santa Clara,
Percona Live Santa Clara MySQL Conference,
Replication,
Row-Based Replication
Tuesday, November 28, 2017
Here is the CREATE TABLE of death
In a previous post, I talked about the existence of a CREATE TABLE that is crashing MySQL up to versions 5.5.58, 5.6.38 and 5.7.20, and MariaDB up to version 5.5.57, 10.0.32, 10.1.26 and 10.2.7. I hope you upgraded (or can mitigate this problem in another way) as I am now publishing the CREATE TABLE of death.
Labels:
Crashing Bug,
CREATE TABLE of death,
CVE-2017-10384,
InnoDB,
InnoDB Persistent Statistics,
MariaDB Server,
MySQL
Thursday, October 19, 2017
A crashing bug in MySQL: the CREATE TABLE of death (more fun with InnoDB Persistent Statistics)
I ended one of my last posts - Fun with InnoDB Persistent Statistics - with a cryptic sentence: there is more to say about this but I will stop here for now. What I did not share at the time is the existence of a crashing bug somehow related to what I found. But let's start with some context.
Labels:
Crashing Bug,
CREATE TABLE of death,
InnoDB,
InnoDB Persistent Statistics,
MariaDB Server,
MySQL,
Percona Server
Wednesday, August 16, 2017
The danger of no Primary Key when replicating in RBR (and a partial protection with MariaDB 10.1)
TL;DR: unless you know what you are doing, you should always have a primary key on your tables when replicating in RBR (and maybe even all the time).
TL;DR2: MariaDB 10.1 has an interesting way to protect against missing a primary key (innodb_force_primary_key) but it could be improved.
A few weeks ago, I was called off hours because replication delay on all the slaves from a replication chain was high and growing. It was not the first time this happened on that chain, so I thought right away that this was probably an UPDATE or DELETE of many rows on a table without a primary key. Let's see what is the problem with this and to understand that, we have to talk about binary log formats.
TL;DR2: MariaDB 10.1 has an interesting way to protect against missing a primary key (innodb_force_primary_key) but it could be improved.
A few weeks ago, I was called off hours because replication delay on all the slaves from a replication chain was high and growing. It was not the first time this happened on that chain, so I thought right away that this was probably an UPDATE or DELETE of many rows on a table without a primary key. Let's see what is the problem with this and to understand that, we have to talk about binary log formats.
Labels:
Binary Logs,
foot-gun,
InnoDB,
MariaDB 10.1,
MariaDB Server,
MySQL,
MySQL 5.7,
MySQL 8.0,
ps-top,
RBR,
Replication,
Row-Based Replication,
SBR,
Statement-Based Replication,
War Story
Monday, August 14, 2017
More Details about InnoDB Compression Levels (innodb_compression_level)
In one of my previous posts, I shared InnoDB table compression statistics for a read-only dataset using the default value of innodb_compression_level (6). In it, I claimed, without giving much detail, that using the maximum value for the compression level (9) would not make a big difference. In this post, I will share more details about this claim.
TL;DR: tuning innodb_compression_level is not very useful for my dataset.
TL;DR: tuning innodb_compression_level is not very useful for my dataset.
Labels:
Compression,
InnoDB,
InnoDB Buffer Pool,
InnoDB Compression,
InnoDB Redo Logs,
InnoDB Table Compression,
innodb_compression_level,
MariaDB Server,
MySQL
Thursday, August 10, 2017
Why we still need MyISAM (for read-only tables)
TL;DR: we still need MyISAM and myisampack because it uses less space on disk (half of compressed InnoDB) !
In the previous post, I shared my experience with InnoDB table compression on a read-only dataset. In it, I claimed, without giving much detail, that using MyISAM and myisampack would result is a more compact storage on disk. In this post, I will share more details about this claim.
Labels:
Compression,
InnoDB,
InnoDB Compression,
InnoDB Table Compression,
MariaDB Server,
MyISAM,
myisampack,
MySQL
Monday, August 7, 2017
An Adventure in InnoDB Table Compression (for read-only tables)
In my last post about big MySQL deployments, I am quickly mentioning that InnoDB compression is allowing dividing disk usage by about 4.3 on a 200+ TiB dataset. In this post, I will give more information about this specific use case of InnoDB table compression and I will share some statistics and learnings on this system and subject. Note that I am not covering InnoDB page compression which is a new feature of MySQL 5.7 (also known as hole punching).
Labels:
Compression,
InnoDB,
InnoDB Buffer Pool,
InnoDB Compression,
InnoDB Table Compression,
MariaDB Server,
MyISAM,
myisampack,
MyRocks,
MySQL,
MySQL 5.7
Monday, July 24, 2017
How far can you go with MySQL or MariaDB ?
MySQL theoretical limits are known and they can be found in the manual, they include:
- MyISAM permits data and index files to grow up to 256 TiB by default, but this limit can be changed up to the maximum permissible size of 65,536 TiB (256^7 − 1 bytes).
- The maximum tablespace size depends on the InnoDB page size: 64 TiB for 16 KiB pages.
(The maximum tablespace size is also the maximum size for a [InnoDB] table.)
Labels:
InnoDB,
Limits,
MariaDB Server,
Monster Databases,
MyISAM,
MySQL,
Percona Server
Wednesday, July 19, 2017
InnoDB Basics - Compaction: when and when not
This is old news for MySQL/MariaDB expert but people that are starting using InnoDB do not always know that disk space is not automatically released when deleting data from a table. To explain and demonstrate that, I will take two real-world examples: table1 and table2.
Labels:
InnoDB,
MariaDB Server,
MySQL,
Table Compaction
Wednesday, July 5, 2017
Fun with InnoDB Persistent Statistics
Something interesting happened to me in the last days, and it is worth sharing. I was upgrading MariaDB (MySQL also impacted) to a new major version and mysql_upgrade showed something like this:
[...]
Phase 4/7: Running 'mysql_fix_privilege_tables'
ERROR 1062 (23000) at line 586: Duplicate entry 'schema-table_name#P#partition_name_truncated' for key 'PRIMARY'
ERROR 1062 (23000) at line 590: Duplicate entry 'schema-table_name#P#partition_name_truncated' for key 'PRIMARY'
ERROR 1062 (23000) at line 593: Duplicate entry 'schema-table_name#P#partition_name_truncated' for key 'PRIMARY'
FATAL ERROR: Upgrade failed
Labels:
InnoDB,
InnoDB Persistent Statistics,
MariaDB Server,
MySQL,
War Story
Friday, April 21, 2017
My two parallel replication talks at Percona Live Santa Clara 2017
Yes, another post about my talks at Percona Live Santa Clara: I obviously still have things to share. This time, I will focus on my parallel replication talks by giving a short preview.
Labels:
Booking.com,
MariaDB 10.0,
MariaDB 10.1,
MariaDB Server,
MTS,
MySQL,
MySQL 5.6,
MySQL 5.7,
MySQL 8.0,
MySQL 8.0.1,
Parallel Replication,
Percona Live Santa Clara,
Replication
Tuesday, April 18, 2017
My talks at Percona Live Santa Clara 2017
In a previous post, I listed all the Booking.com talks at Percona Live. In this post, I will give more details about my talks.
As a reminder, the list of my talks is the following:
As a reminder, the list of my talks is the following:
- Monitoring Booking.com without looking at MySQL (Thursday keynote)
- The two little bugs that almost brought down Booking.com (Tuesday Lightning Talk)
- MySQL/MariaDB Parallel Replication: inventory, use cases and limitations (Wednesday talk)
- MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0) details (Thursday talk)
Labels:
Booking.com,
MariaDB 10.0,
MariaDB 10.1,
MariaDB Server,
MTS,
MySQL,
MySQL 5.6,
MySQL 5.7,
MySQL 8.0,
MySQL 8.0.1,
Parallel Replication,
Percona Live Santa Clara,
Replication
Sunday, April 16, 2017
Booking.com talks at Percona Live Santa Clara 2017
In a week, me and some Booking.com colleagues will be in Santa Clara for Percona Live.
Booking.com is sponsoring the conference and we will be present at the Monday Evening Reception. You do not need a tutorial pass to attend the dinner (even if it is on the tutorial day): any valid pass will do. If you do not have your ticket yet, it is time to register (you can use the discount code “SeeMeSpeak” for a 10% discount on the registration fees).
Booking.com is sponsoring the conference and we will be present at the Monday Evening Reception. You do not need a tutorial pass to attend the dinner (even if it is on the tutorial day): any valid pass will do. If you do not have your ticket yet, it is time to register (you can use the discount code “SeeMeSpeak” for a 10% discount on the registration fees).
Labels:
Booking.com,
MariaDB 10.0,
MariaDB 10.1,
MariaDB Server,
MTS,
MySQL,
MySQL 5.6,
MySQL 5.7,
MySQL 8.0,
MySQL 8.0.1,
No-Slave-Left-Behind,
Parallel Replication,
Percona Live Santa Clara,
Replication
Tuesday, April 4, 2017
Busy April 2017: MariaDB Dev Meeting (no-slave-left-behind, MyRocks, ...) and Percona Live
In a few days, I will start my yearly travel to North America which will bring me at Percona Live at the end of the month. But I will first stop in New York to attend the MariaDB Developer Meeting. Let's see what will happen there.
Labels:
Booking.com,
InnoDB,
MariaDB Developer Meeting,
MariaDB Server,
MySQL,
No-Slave-Left-Behind,
Per-engine mysql.gtid_slave_pos,
Percona Live Santa Clara,
Replication Crash Safety,
RocksDB,
TokuDB
Monday, March 6, 2017
Better InnoDB Crash Recovery in MariaDB 10.1
Recently, I had to go through crash recovery of a large MariaDB 10.1.21 instance. After starting MariaDB, I started tailing the error logs expecting to wait many minutes while InnoDB was scanning ibd files. I was surprised (and actually delighted) with this:
Labels:
Crash Recovery,
InnoDB,
InnoDB Crash Recovery,
MariaDB,
MariaDB 10.1,
MariaDB Server,
MySQL,
Thanks
Wednesday, February 8, 2017
A Metric for Tuning Parallel Replication in MySQL 5.7
MySQL 5.7 introduced the LOGICAL_CLOCK type of multi-threaded slave (MTS). When using this type of parallel replication (and when slave_parallel_workers is greater than zero), slaves use information from the binary logs (written by the master) to run transactions in parallel. However, enabling parallel replication on slaves might not be enough to get a higher replication throughput (VividCortex blogged about such a situation recently in Solving MySQL Replication Lag with LOGICAL_CLOCK and Calibrated Delay). To get a faster slave with parallel replication, some tuning is needed on the master.
Labels:
average modified interval length,
Group Commit,
MariaDB 10.0,
MariaDB 10.1,
MariaDB 10.2,
MariaDB Server,
Metric,
Monitoring,
MTS,
MySQL,
MySQL 5.7,
Parallel Replication,
Tuning
Subscribe to:
Posts (Atom)