Yesterday my Percona colleague Ceri Williams found a nasty bug
in MySQL 8.0.
Its twin for Percona Server reported at PS-5431.
He was installing MySQL Server 8.0 having not supported option in
his configuration file. Thus initialization failed, but,
surprisingly, the subsequent restart was successful and he was
able to create, modify and delete tables in his MySQL
installation. In other words: he got full access to the database.
But he did not create any user account yet!
This new instance of MySQL Server did not have privilege tables,
particularly …
ProxySQL in its versions up to 1.x did not natively support Percona XtraDB Cluster (PXC). Instead, it relied on the flexibility offered by the scheduler. This approach allowed users to implement their own preferred way to manage the ProxySQL behaviour in relation to the Galera events.
From version 2.0 we can use native ProxySQL support for PXC.. The mechanism to activate native support is very similar to the one already in place for group replication.
In brief it is based on the table
[runtime_]mysql_galera_hostgroups and the
information needed is mostly the same:
- writer_hostgroup: the hostgroup ID that refers to the WRITER
- …
ProxySQL in its versions up to 1.x did not natively support
Percona XtraDB Cluster (PXC). Instead, it
relied on the flexibility offered by the scheduler. This approach
allowed users to implement their own preferred way to manage the
ProxySQL behaviour in relation to the Galera events. From version
2.0 we can use native ProxySQL support for PXC.. The mechanism to
activate native support is very similar to the one already in
place for group replication. In brief it is based on the table
[runtime_]mysql_galera_hostgroups and the
information needed is mostly the same:
- writer_hostgroup: the hostgroup ID that refers to the WRITER
- backup_writer_hostgroup: the hostgoup ID referring to the Hostgorup that will contain the candidate servers …
The X DevAPI allows you to work with JSON documents and SQL
tables at the same time. Furthermore, the CRUD style API is more
intuitive than SQL statements for some programmers. Either way,
the X DevAPI allows you to mix JSON documents, SQL tables, CRUD
methods, and SQL statements to give you the best of all worlds.
In MySQL Connector/Python, the X DevAPI is implemented in the
mysqlx module.
This blog will look at how MySQL Connector/Python handles
expressions, and how you in version 8.0.14 and later need to use
the mysqlx.expr() method to explicitly
define expressions.
Information
…
[Read more]Migrating from Oracle to MySQL/Percona Server is not a trivial task. Although it is getting easier, especially with the arrival of MySQL 8.0 and Percona announced Percona Server for MySQL 8.0 GA. Aside from planning for your migration from Oracle to Percona Server, you must ensure that you understand the purpose and functionality for why it has to be Percona Server.
This blog will focus on Migrating from Oracle to Percona Server as its specific target database of choice. There's a page in the Oracle website about SQL Developer Supplementary Information for MySQL Migrations which can be used as a reference for the planned migration. This blog will not cover the overall process of migration, as it is a …
[Read more]Ahead of the PCI move to deprecate the use of ‘early TLS’, we’ve previously taken steps to disable TLSv1.0.
Unfortunately at that time we encountered some issues which led us to rollback these changes. This was to allow users of operating systems that did not – yet – support TLSv1.1 or higher to download Percona packages over TLSv1.0.
Since then, we have been tracking our usage statistics for older operating systems that don’t support TLSv1.1 or higher at https://repo.percona.com. We now receive very few legitimate requests for these downloads.
Consequently, we are ending support for TLSv1.0 on all Percona web properties.
…[Read more]The introduction of DevOps in organizations has changed the development process and also introduced some new challenges. In addition, developers and DevOps teams, along with their own chosen programming languages, also have their favorite database systems.
The product life cycle is getting shorter each year so developers want to be able to develop fast, using technologies they know best.
Having multiple RDBMS database backends means your organization will become more agile on the development side, but it also imposes additional knowledge on the operation teams.
Extending your infrastructure from one to many databases implies you have to also monitor, manage and scale them.
As every storage backend excels at different use cases, this also means you have to reinvent the wheel for every one of them.
…[Read more]We recently had to drop a column in production, from a relatively large (order of 10⁷ records) table.
On modern MySQL setups, dropping a column doesn’t lock the table (it does, actually, but for a relatively short time), however, we wanted to improve a very typical Rails migration scenario in a few ways:
- offloading the column dropping time from the deploy;
- ensuring that in the time between the column is dropped and the app servers restarted, the app doesn’t raise errors due to the expectation that the column is present;
- not overloading the database with I/O.
I’ll give the Gh-ost tool a brief introduction, and show how to fulfill the above requirements in a simple way, by using this tool and an ActiveRecord flag.
This workflow can be applied to almost any table alteration scenario.
Contents:
- …
In one of my previous posts, I started a series on data compression options with MySQL. The first post focused on the more traditional compression options like InnoDB Barracuda page compression and MyISAM packing. With this second part, I’ll discuss a newer compression option, InnoDB transparent page compression with punch holes available since 5.7. First, I’ll describe the transparent page compression method and how it works. Then I’ll present similar results as in the first post.
InnoDB transparent page compression
Before we can discuss transparent page compression, we must understand how InnoDB accesses its data pages. To access an InnoDB page, you need to know the tablespace (the file) and the offset of the page within the …
[Read more]In my recent post about the Left-Prefix Index Rule, I explained how queries can use all or part of a compound (multi-column) index. Knowing what makes an index fully usable by a query is important, but it's also important to know how to figure out how much of an index a query is able to use. In this article I'll show you how to do this by reading the query's explain plan. This article covers MySQL, Postgres, and MongoDB.
As a quick review, a query can use an index if it has filtering values that constrain a contiguous leading portion of the index, up to and including the first inequality condition in index-column order. Now let's see where the database server exposes how much of the index is used.
MySQL
In MySQL's …
[Read more]