[CentOS] s3 as mysql directory

Mon Oct 1 21:04:01 UTC 2012
Craig White <craig.white at ttiltd.com>

On Oct 1, 2012, at 11:24 AM, Tim Dunphy wrote:

> Hello list,
> I am soliciting opinion here as opposed technical help with an idea I
> have. I've setup a bacula backup system on an AWS volume. Bacula stores a
> LOT of information in it's mysql database (in my setup, you can also use
> postgres or sqlite if you chose). Since I've started doing this I notice
> that the mysql data directory has swelled to over 700GB! That's quite a lot
> and its' easting up valuable disk space.
> So I had an idea. What about uses the fuse based s3fs to mount an S3
> bucket on the local filesystem and use that as your mysql data dir? In
> other words mount your s3 bucket on /var/lib/mysql
> I used this article to setup the s3fs file system
> http://benjisimon.blogspot.com/2011/01/setting-up-s3-backup-solution-on-centos.html
> And everything went as planned. So my question to you dear listers is if I
> do start using a locally mounted s3 bucket as my mysqld data dir, will
> performance of the database be acceptable? If so, why? If not are there any
> other reasons why it would NOT be a good idea to do this?
> The steps I have in mind are basically this:
> 1) mysqldump --all-databases > alldb.sql
> 2) stop mysql
> 3) rm -rf /var/lib/mysql/*
> 4) mount the s3 bucket on /var/lib/mysql
> 5) start mysql
> 6) restore the alldb.sql dump

specifically regarding the above 6 steps… keep /var/lib/mysql. If you delete it you would lose everything and would have to set it up all over again. At some point if you actually go with your idea and it works for you, you can simply drop the bacula database from within mysql and recover the space used.

That said and concurring with others… the notion of putting the database files on a remote server sounds like a terrible idea. Databases are useful/usable when they exist on a local, fast filesystem. Hard disk drives are cheap and I think that you really should be fixing the actual cause of the problem.

I use Bacula and I prefer PostgreSQL over MySQL but regardless… the database grows as the number of files that are backed up (without purges) grows. Thus you should probably be considering some type of rotation which regularly purges old backups on a regular basis.