MySQL Character encoding – part 2

In MySQL Character encoding - part 1 we stated that the myriad of ways in which character encoding can be controlled can lead to many situations where your data may not be available as expected. … [Read more...]

MySQL Character encoding – part 1

Breaking and unbreaking your data Recently at FOSDEM, Maciej presented "Breaking and unbreaking your data", a presentation about the potential problems you can incur regarding character encoding whilst working with MySQL. In short, there are a myriad of places where character encoding can be controlled, which gives ample opportunity for the system to break and for text to become unrecoverable. … [Read more...]

WebScaleSQL RPMs available at PSCE repository

Driven by popularity of previous post about Debian/Ubuntu builds of WebScaleSQL and long discussions during FOSDEM conference this weekend, PSCE engineering team decided to put even more effort into. … [Read more...]

WebScaleSQL builds for the MySQL Community

We have been looking at the WebScaleSQL project with great excitement. As with any new enhancements to the MySQL world, we need to test extensively to ensure we can give PSCE customers the best advice possible. Since this project is source only, we decided to add WebScaleSQL builds to our repo, so we could examine the changes being introduced by all the different collaborators. … [Read more...]

MySQL and the GHOST: glibc gethostbyname buffer overflow

Qualys announced they had found an exploit in one of the Linux core libraries - glibc - using a buffer overflow technique in gethostbyname(). They have developed a proof-of-concept in which simply sending a specially created e-mail to a mail server enabled them to create a remote shell to the Linux machine. According to Qualys, "This bypasses all existing protections (like ASLR, PIE and NX) on both 32-bit and 64-bit systems.". How does it affect MySQL servers? Read on! … [Read more...]

Tracking MySQL query history in long running transactions

Long running transactions can be problematic for OLTP workloads, particularly where we would expect most to be completed in less than a second. In some cases a transaction staying open just a few seconds can cause behaviour that is entirely unexpected, with the developers at a loss as to why a transaction remained open. There are a number of ways to find long running transactions, luckily versions of MySQL from 5.6 onwards provide some very insightful instrumentation. … [Read more...]

Syncronizing MySQL where tables have triggers and foreign keys defined

On a recent consulting engagement, the PSCE team were charged with what can be considered a fairly common task of synchronising tables between master and slave in MySQL Replication. On this occasion the  schema contained both foreign key constraints and triggers, this post describes how we avoided the potential problems related to such an operation. The process to synchronise tables in MySQL is to first identify the differences between tables and then execute queries which bring those tables into a consistent state. The first part of the process can be handled by the pt-table-checksum tool, which steps through the table analysing sets of rows (chunks) and recording a checksum value. Then taking advantage of replication, the same process occurs on each of the slaves and the checksums can then be compared. Once the entire table has been processed, a second tool pt-table-sync can be used to generate queries which will correct any inconsistencies, executing queries that will result in NOOP on the master, yet effect change on the slave, bringing the master and slave into sync. At the time of writing, the documentation for the current version of each tool was available here: pt-table-checksum pt-table-sync   There are a number of potential issues to which may arise whilst executing these procedures, however this post just looks at tables with foreign key definitions, and secondly the existence of triggers on the tables being synchronised. Specifically … [Read more...]