Vitess is a popular CNCF project that is used to scale some of the largest MySQL installations in the world — by companies like Slack, Square, Shopify, and GitHub. It provides sharding, connection pooling, and many other features that make it easy to scale MySQL horizontally. Vitess and MySQL are ideally suited for use as an Online Transaction Processing (OLTP) system — where the end-user interacts directly with the system and fast response times are essential as they get product and service information, generating critical business records such as orders, user profiles, and more.
We saw in the previous post how we can deal with data stored in the new VECTOR datatype that was released with MySQL 9.0. We implemented the 4 basic mathematical operations between two vectors. To do so we created JavaScript functions. MySQL JavaScript functions are available in MySQL HeatWave and MySQL Enterprise Edition (you can […]
A couple of weeks ago, my colleague Marco Tusa published an important announcement titled “Do Not Upgrade to Any Version of MySQL After 8.0.37.” The announcement highlighted a critical issue in MySQL 8.0.38, MySQL 8.4.1, and MySQL 9.0.0 that caused database server crashes. Good news! The upcoming minor releases for the community edition of MySQL and […]
In this article we see how we can create a component to add UDFs functions to deal with the VECTOR datatype in MySQL.
How to deal with VECTORS in MySQL HeatWave and Enterprise Edition using JavaScript
MySQL 9.0.0 has brought the VECTOR datatype to your favorite Open Source Database. There are already some functions available to deal with those vectors: This post will show how to deal with vectors and create our own functions to create operations between vectors. We will use the MLE Component capability to create JavaScript functions. JS […]
MySQL Shell offer many features to make life easier for DBAs and developers. In this post we discuss some of the options available to when exporting table data to different formats.
Regular expressions are a powerful tool for developers. In this post we will demonstrate how to use regular expressions backreferences in MySQL.
Dear Kris,
We have a number of old MySQL instances, version 5.5 and 5.6. We want to upgrade them to a current version of MySQL. The databases are between 0.5 TB to 8 TB in size.
Unfortunately, using rsync on a stopped MySQL instance is not an option because the versions are too different, and the new version seems unable to read the binary data. I could use a dump (multi-threaded), but importing a single file with mysql takes forever (it would need to be single-threaded).
Would you simply create a dump per table and then import them in parallel? Or has MySQL improved, allowing for better import methods now?
That is a lot to unpack.
A consistent backup and a binlog position
First off, a backup needs to be consistent. You cannot make a backup of …
[Read more]How do you run non-blocking schema changes in MySQL? This is an eternal question. With a plethora of 3rd party solutions and with recent advancements in MySQL, it's difficult to track which solution is preferable for a given schema migration. In this post, we provide a high level overview of the state of MySQL online schema migrations in 2024. We limit the discussion to ALTER TABLE statements, as other DDL statements are typically fast (DROP TABLE is somewhat of an exception, but out of scope of this post). We'll first examine the native MySQL options: INPLACE and INSTANT. For reference, see Online DDL Operations MySQL 8.0 documentation. INPLACE, aka InnoDB Online DDL This is MySQL's first take on non-blocking schema changes. Some types of ALTER TABLE (see above link for exhaustive list of supported changes) are eligible to run with ALGORITHM=INPLACE. An INPLACE schema change is technically non-blocking, with quite a few caveats: On the server where …
[Read more]