Question

MariaDB stops after a while on ubuntu 14.04 and cannot restart

Posted April 5, 2016 5.7k views
UbuntuMySQLApachePHPWordPressMonitoringMariaDB

I have an $5 droplet with a LAMP stack, where I switched out mysql for MariaDB, running WordPress. It seems that after a while, MariaDB stops and I get “error establishing a database connection” page.

I have tried to restart MariaDB, but no luck:

robin@janwillemspanjer:~$ sudo service mysql restart
stop: Unknown instance:
start: Job failed to start
robin@janwillemspanjer:~$ sudo service mysqld restart
mysqld: unrecognized service

Also, it appears that the log files are completely empty. What can I do to fix this?

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
Submit an Answer
2 answers

While MariaDB is a little better about memory use than MySQL, both are memory hogs. The most common support issue we see is regarding running MySQL on a 512MB droplet. Since droplets do not have a swap partition by default, when the physical memory is used up and MySQL attempts to reserve more memory it will crash. Adding a swap file to your droplet will help with this considerably but upgrading to a larger droplet would help even more.

If the service will no longer start it is likely that the database itself has been corrupted due to these crashes. If you have a backup of the data, I would recommend completely removing and re-installing mariadb.

apt-get purge mariadb-server
apt-get install mariadb-server

Unlike the apt-get remove command, using purge will also delete any configuration or data files related to the package.

If the data currently in the database is not backed up you can attempt to recover it. The first step would be to review the MySQL/MariaDB log files in /var/log to see what is happening behind the scenes when the service fails to start.

by Justin Ellingwood
Swap space can be used as an "overflow" area for your system when you run out of RAM. The operating system can store data that would normally be kept in RAM on the hard drive in a specially formatted file. In this guide, we'll demonstrate how to create and use one of these files in Ubuntu 14.04.
  • Thank you so much ryanpq!

    I originally did not add a swap partition as I saw digitalocean advises against it. So the solution will probably be to upgrade the droplet, but for now I’ll add a swap file.

    I’d just like to add one question: let’s say I have two or more WordPress installations. Would it be better to have them on one droplet (with more RAM), or several smaller droplets for each site? So for instance two WordPress installations on one $20/month droplet, versus two $10 droplets with one WordPress installation each.

    • I would recommend a single droplet or, if you choose to split it up I would place your DB server on one droplet and apache on the other. That would more evenly spread the load.

      I also want to try and clarify about DO’s position on swap a bit. We continue to keep our swap file tutorials live and often a swap file is a necessary thing, especially when running on a small droplet.

      We do not include a swap file or partition by default on any of our droplets though. The reason for this is that swap files and partitions by their nature see a lot of I/O activity on the disk. As we use SSDs, high use of swap can lessen the lifetime of an SSD disk by quite a bit (our disks are all in RAID arrays and a single disk failure cannot take down a droplet but does result in added cost both in the hardware and the time to replace it). This is becoming less and less of a problem as SSD drives continue to improve.

Hello, all

I will recommend you to check our article on How To Debug the WordPress Error Establishing Database Connection:

https://www.digitalocean.com/community/tutorials/how-to-debug-the-wordpress-error-establishing-database-connection

This crash is most likely due to your system running out of memory. I’d suggest that you add a swap file to give yourself a bit more of a buffer. Check out this tutorial:

How To Add Swap on Ubuntu

You will most definitely need to upgrade your droplet as you’re running out of memory and your application/website needs more resources in order to continue to operate.

What you can also do is to use the MySQLTuner script.

The MySQLTuner is a script written in Perl and allows you to quickly test your MySQL configuration and it gives you suggestions for adjustments to increase performance and stability.

According to the official GitHub page, it supports 300 indicators for MySQL/MariaDB/Percona Server in this last version.

To run the script you could do the following:

  • SSH to your Droplet
  • Download the script:
wget http://mysqltuner.pl/ -O mysqltuner.pl
  • Then execute it:
perl mysqltuner.pl

The script would run multiple checks against your MySQL instance, all checks done by MySQLTuner are documented here.

Also as stated in the official documentation, it is still extremely important for you to fully understand each change you make to a MySQL database server. If you don’t understand portions of the script’s output, or if you don’t understand the recommendations, you should consult a knowledgeable DBA or system administrator that you trust.

As a good practice make sure to always test your changes on staging environments before implementing them on your production database.

On the same note, if you want to have a worry-free MySQL hosting and focus on your application, I would recommend trying out the DigitalOcean Managed Databases:

https://www.digitalocean.com/products/managed-databases-mysql/

This was mini tutorial was posted from bobbyiliev in this question in our community: https://www.digitalocean.com/community/questions/how-to-tweak-mysql-mariadb-configuration-for-increased-performance-and-stability

You can also create a simple bash script to check if MySQL is running and if not to restart it.

#!/bin/bash

# Check if MySQL is running
sudo service mysql status > /dev/null 2>&1

# Restart the MySQL service if it's not running.
if [ $? != 0 ]; then
    sudo service mysql restart
fi

Run this script every 5 minutes using a cron job like this one:

 */5 * * * * /home/user/scripts/monitor.sh > /dev/null 2>&1

Hope that this helps!
Regards,
Alex

by Brian Boucheron
WordPress is one of the most popular open source content management systems in the world. Although it started out focused on blogging, over the years it has developed into a more flexible platform for websites in general. After almost fifteen years of development it is quite polished and robust, yet issues can still come up. If you've recently attempted to load your WordPress-powered website and instead saw a message stating "Error Establishing Database Connection", the cause is most often...