• Automated Builds on Docker Hub

    One of the things that gives me pause when looking at images on Docker Hub is that number of Docker images that aren’t open source. It is critical that I see the Dockerfile before loading something up on my machine. For most of these, it is not difficult to find the associated github repo. It is even better to set up an automated build process, so when code is pushed to the github repo, Docker hub kicks off an image build.
  • Docker Cluster for MySQL and Adjacent Technologies

    After a bit of architectural refactoring, I have the framework set up for a Docker cluster of MySQL nodes plus adjacent technologies like Proxysql and Hashicorp Vault. You can find that on Github here. At the Triangle MySQL meetup last night, where I led a workshop on setting up a local Docker environment, I gathered a few other great ideas to add to the framework. The next container group added will be MariaDB AX (the column store for analytics).
  • Little Dutch Boy

    I was reflecting on some early DBA automation scripts I created in bash. This one was targeted to stopping a particular problem the app caused when a piece of Javascript got stuck and sent hundreds – in some cases, over 10,000 – of the same query to the database. It was obviously a temporary fix until dev could roll out a fix.

    I called it Little Dutch Boy for obvious reasons. He used his finger to stop a flood? Get it? OK, it amused me. More importantly, it allowed the ops team to not get woken up repeatedly.

  • MySQL Memory Calculator

    I really like the MySQL Memory Calculator, mostly because the person at the top of the page just seems so darn happy. But I’m also tired of filling out the form, so I created a little program in Go (also my first Go program) to do the memory calculations for me. I named this vgMemory and put it in my visegrip box.
  • Detecting the Source of MySQL Queries with Comments

    As a MySQL DBA I already know the data changes that happen on my system. I have logs for that. However, it’s a common problem that several years into the life of an application, the current developers won’t know where in the codebase queries come from. It’s often hard for them to find the location in the code if queries are formed dynamically; the pattern I show them to optimize doesn’t match anything in the code.