As an update to our recent blog post, “Where can you find MySQL next? (Updated events list for March–May 2026)” we’d like to share the latest confirmed MySQL events and webinars, including newly added ones plus refreshed details for sessions we already announced. Since plans and agendas evolve quickly, this post is intended to provide […]
The latest from the MySQL community
Ideas, releases, practical guides, and perspectives from the people building with MySQL.
As part of our MySQL community engagement plan, which includes delivering new features into MySQL Community Edition, increasing collaboration and transparency, and expanding and growing the MySQL Ecosystem, we have created a new rhythm of public MySQL Community Discussions—starting with our first session on February 25 and continuing with our second session on March 23, […]
The latest release of the Percona Operator for MySQL, 1.1.0, is here. It brings point-in-time recovery, incremental backups, zstd backup compression, configurable asynchronous replication retries, and a set of stability fixes. This post walks through the highlights and how they help your MySQL deployments on Kubernetes.
Percona Operator for MySQL 1.1.0
Running stateful databases on Kubernetes means your backup and recovery story has to be airtight. A full nightly backup is fine, until the DBA drops a table at 2 PM and you’re looking at 14 hours of lost work. Or until your storage bill grows faster than your actual data because every backup is a …
[Read more]April 19, 2026
It took three release candidates and more CI tweaks than I’d like to admit, but v1.7.0 is finally tagged GA. Here’s what actually changed and why it matters.
The thing I kept getting asked about: add_connection
Almost every multi-database user hits the same wall: you configure your connections at startup, and that’s it. Want to point Claude at a different instance mid-session? Restart the server. Not great.
add_connection fixes that. Enable it with
MYSQL_MCP_EXTENDED=1 and
MYSQL_MCP_ENABLE_ADD_CONNECTION=1, and Claude can
register a new named connection on the fly — DSN validation,
duplicate-name rejection, and a hard block on the
root MySQL user all happen before the connection is
accepted. Once it’s in, use_connection it works as
usual.
It’s intentionally opt-in behind two flags. Allowing …
[Read more]In this eighth post of our series, we decode the three row events — WRITE_ROWS_EVENT, UPDATE_ROWS_EVENT, and DELETE_ROWS_EVENT — that carry the actual row data for INSERT, UPDATE, and DELETE operations in row-based replication.
Introduction
In the previous posts, we decoded the events that set the stage
for row-based replication: the GTID_LOG_EVENT identifies the
transaction, the QUERY_EVENT opens it
with BEGIN, and the TABLE_MAP_EVENT describes
the table's schema. Now we finally arrive at the events that
carry the actual data — the row events.
All three row events share the same base structure defined by
the Rows_event class. The
differences come down to which row
images each event carries: …
Speed up your PHP application without changing a single query.
A few days ago I set out to answer a simple question: how much faster can a PHP app go if you drop a SQL cache in front of MySQL — without touching application code? The answer is below. On a four-table join aggregating revenue by category and region, Readyset served the same result 60x faster than MySQL. And all I did was change a port number.
This post walks through exactly what I did, step by step, so you can reproduce it yourself.
What Is Readyset?
Readyset is a SQL-aware caching engine that speaks the native MySQL wire protocol. Your PHP application connects to it the same way it connects to MySQL — same driver, same queries, same credentials. Underneath, Readyset proxies queries to your upstream database and, for the ones you choose to cache, serves …
[Read more]In my recent series on Scoped Vector Search, we looked at the query patterns that make vector search a first-class citizen in MySQL. While the logic for those searches is now established, the infrastructure supporting them requires constant attention as the MySQL ecosystem moves toward its new release model.
Today, I’m announcing MyVector v1.26.3. This is a foundational release focused on environment compatibility and CI/CD robustness.
What’s in v1.26.3?
This release ensures that MyVector remains stable and buildable across the shifting landscape of MySQL Innovation and LTS releases.
- MySQL 8.4 & 9.6 Compatibility: We’ve updated the component sources and build logic to align with the headers and …
As a follow-up to our previous blog post, “Where can you find MySQL during January to April 2026” (published at the end of January 2026), we would like to share an update. With the dynamic nature of event planning, we have slightly adjusted our plans—both for in-person conferences and for online sessions—so you always have […]
MySQL Security Best Practices: A Practical Guide for Locking Down Your Database Introduction
MySQL runs just about everywhere. I’ve seen it behind small personal projects, internal tools, SaaS platforms, and large enterprise systems handling serious transaction volume. When your database sits at the center of everything, it becomes part of your security perimeter whether you planned it that way or not. And that makes it a target.
Securing MySQL isn’t about flipping one magical setting and calling it done. It’s about layers. Tight access control. Encrypted connections. Clear visibility into what’s happening on the server. And operational discipline that doesn’t drift over time.
In this guide, I’m going to walk through practical MySQL security best practices that you can apply right away. These are the kinds of checks and hardening steps that reduce real risk in real environments, and help build a database …
[Read more]So I figured it was about time I documented how to build persistent memory for AI agents using the databases you already know. Not vector databases - MySQL and Neo4j.
This isn't theoretical. I use this architecture daily, handling AI agent memory across multiple projects. Here's the schema and query patterns that actually work.
The Architecture
AI agents need two types of memory:
- Structured memory - What happened, when, why (MySQL)
- Pattern memory - What connects to what (Neo4j)
Vector databases are for similarity search. They're not for tracking workflow state or decision history. For that, you need ACID transactions and proper relationships.
The MySQL Schema
Here's the actual schema for AI agent persistent memory:
-- Architecture decisions the AI made
CREATE TABLE architecture_decisions (
id INT …[Read more]