slider

Author: Aleksandr Kuzminsky

Building RPM On Travis-CI In Docker Containers

monument

Travis-CI is a crucial component of Continuous Integration/Continuous Deployment. We use it a lot to run unit tests and build/upload Python modules. Recently I had to solve a problem of building RPMs on Travis-CI with Docker containers. In this post I will describe step-by-step how to do that. We distribute our backup tool as RPM packages […]

Read More

Show Differences Found by Pt-Table-Checksum

Louvre Museum

First of all,pt-table-checksum is perfect for checking if the master and its slaves are in-sync. It answers the question “Are the slaves consistent with the master?”. However, if they’re not, pt-table-checksum doesn’t actually tell you what exactly is wrong.

Frompt-table-checksum to pt-table-sync Nevertheless, pt-table-sync may give you a partial answer. It can print SQL statements to sync the replication […]

Read More

Working with CloudFlare DNS in python

stones

Last week I wrote about aDNS discovery feature in Etcd. As a step in the whole process we need to create DNS records in twindb.com zone. CloudFlare provides rich API to work with it. We wrapped it into a Python module twindb_cloudflare and opensourced it: Source code: https://github.com/twindb/twindb_cloudflare Documentation: https://twindb-cloudflare.readthedocs.io PyPi package: https://pypi.python.org/pypi/twindb_cloudflare In the […]

Read More

Setting Up Etcd Cluster With DNS Discovery

сelestial fireworks

Setting up an Etcd cluster with DNS discovery may be challenging. First of all, there are several building blocks: Etcd – a distributed key value store Amazon EC2 – a cloud computing provider Cloudflare – a DNS provider Chef – for configuring individual nodes Each of them has its pitfalls, but we will guide you through whole […]

Read More

Data Loss After MySQL Restart

equipment

Not so long ago, I had a customer who experienced data loss after a MySQL restart. It was really puzzling. MySQL was up & running for many months, but after the customer restarted the MySQL server all tables have gone. The tables were still visible in the SHOW TABLES output, but they were not readable:

Read More

Recover Corrupted Or Crashed MySQL Database Online

Earlier, we blogged about ways to recover corrupt MySQL database with the TwinDB Data Recovery Toolkit. However, the learning curve of the toolkit is rather steep. It takes time to get familiar with the InnoDB internals and the tool itself. And let’s be honest, nobody’s ever prepared for data loss – people who prepare for disaster […]

Read More

How to Recover Table Structure From FRM Files Online

Recently we announced MySQL Data Recovery Portal. Here, we automated some data recovery routines and published a matching web interface. At first, it was a tool to estimate recovery chances from corrupted InnoDB tablespaces. Now, it’s an even more exciting and useful feature – recovery table structure from FRM files online. There are several methods to recover […]

Read More

How To Evaluate If MySQL Table Can Be Recovered

What Are the Odds a MySQL Table Can Be Recovered? This is the most asked question. Every single customer asks if their MySQL table can be recovered. Although it’s not possible to answer it with 100% confidence, there are ways to estimate recovery chances. I will describe a few tricks. Generally speaking, if data is […]

Read More

Efficient Use Of Indexes In MySQL

These are the slides of the “Efficient Use Of Indexes In MySQL” talk we delivered on the SFMySQL Meetup. This is an introductory talk for developers on MySQL indexes. In my opinion, it’s quite important to understand how InnoDB organizes data. If you know how MySQL accesses data, it’s easier to write optimal queries. When working […]

Read More