Hello, Just one more suggestion to do full backups in large databases:
- Dedicated slave (either physical machine, a disk cabinet using iscsi connections from a machine just with a bunch of RAM etc) - Get the slave delayed a certain time (ie: 1 hour, 2 hours...depends on your workload) using Percona Toolkit ( http://www.percona.com/doc/percona-toolkit/2.1/pt-slave-delay.html) - Make sure that slave has (*log*-*slave*-*updates) *in my.cnf. - Make sure the master keeps the necessary logs for a point in time recovery if needed. If something goes wrong you have a full copy of your database, just delayed a few hours. If you want to recover from a drop database (or any big fail executed from MySQL CLI) in the master, you can just sync up your delayed slave to that specific statment - go thru your master binlog, locate the "drop database" statement and set START SLAVE SQL_THREAD UNTIL master_log_file = 'mysql-bin.XXX', master_log_pos=XXX; to the position right before the bad one. That way you'd have your database as it was just before the wrong statement execution. As Rick said - if you're thinking about doing snapshots, make sure you stop your mysql daemon in the delayed slave to make sure everything is committed to disk. Otherwise can end up having a corrupted DB which won't boot when you need it. And lastly, but probably most important....test your backups periodically!! Hope this helps Manuel. 2012/11/1 Karen Abgarian <a...@apple.com> > Hi, > > For doing backups on the primary database, I know nothing better than have > your tables in InnoDB and use Innobackup (or MySQL Enterprise backup). > This, however, still has the possibility of hanging as it is using FLUSH > TABLES WITH READ LOCK for taking backups of MyISAM tables. One may want > to script it to kill the backup if the wait exceeds some threshold. The > backup taken this way has incremental backups feature which may reduce the > impact. > > For offloading the backups to a replica, there exist more options because > the replica can be frozen and/or shut down. For an InnoDB database, it > has to be shut down for taking a consistent backup. If it is not, it will > result in cute little inconsistencies unless a DBA is one lucky guy and > always wins playing roulette. > > Combining the two, I like the idea of doing EM backup on a replica and > having all tables in InnoDB. > > After a backup has been taken, it will eventually need to be restored > unless someone just likes taking them. For this reason, it will have to > be brought to the recovered system. Unless somebody knows in advance when > the database would need to be recovered (f.e. it is known that a bad guy > always corrupts it on Monday mornings), the backup will need to be > available for restore always. These considerations usually imply things > like shared filesystems between primary and replica, rejecting backups for > recoveries across datacenters and the like. > > Backing up binary logs allows providing continuous coverage for recovery > instead of discrete. > > Cheers > Karen > > > On 01.11.2012, at 8:53, machiel.richa...@gmail.com wrote: > > > Well, the biggest problem we have to answer for the clients is the > following: > > 1. Backup method that doesn't take long and don't impact system > > 2. Restore needs to be done on a quick as possible way in order to > minimize downtime. > > > > The one client is running master - master replication with master server > in usa, and slave in south africa. They need master backup to be done in > the states. > > > > > > Sent via my BlackBerry from Vodacom - let your email find you! > > > > -----Original Message----- > > From: Reindl Harald <h.rei...@thelounge.net> > > Date: Thu, 01 Nov 2012 16:49:45 > > To: mysql@lists.mysql.com<mysql@lists.mysql.com> > > Subject: Re: Mysql backup for large databases > > > > good luck > > > > i would call snapshots on a running system much more dumb > > than "innodb_flush_log_at_trx_commit = 2" on systems with > > 100% stable power instead waste IOPS on shared storages > > > > Am 01.11.2012 16:45, schrieb Singer Wang: > >> Assuming you're not doing dumb stuff like innodb_flush_log_at_tx=0 or 2 > and etc, you should be fine. We have been > >> using the trio: flush tables with read lock, xfs_freeze, snapshot for > months now without any issues. And we test > >> the backups (we load the backup into a staging once a day, and dev once > a week) > >> > >> On Thu, Nov 1, 2012 at 11:41 AM, Reindl Harald > >> <h.rei...@thelounge.net<mailto: > h.rei...@thelounge.net>> wrote: > >> > >>> Why do you need downtime? > >> > >> because mysqld has many buffers in memory and there > >> is no atomic "flush buffers in daemon and freeze backend FS" > >> > >> short ago there was a guy on this list which had to realize > >> this the hard way with a corrupt slave taken from a snapshot > >> > >> that's why i would ALWAYS do master/slave what means ONE time > >> down (rsync; stop master; rsync; start master) for a small > >> timewindow and after that you can stop the slave, take a > >> 100% consistent backup of it's whole datadir and start > >> the slave again which will do all transactions from the > >> binarylog happened in the meantime > > > > > > ‹¢ÒÒ‹¤◊5  vVæW& Â Ö ˆÆˆær Ƙ7@‹¤f÷" Ƙ7B &6∫˜fW3¢ ΩGG ¢òöƘ7G2æ◊˜7 > Âæ6öÒö◊˜7 À‹¥Fò Vç7V'67&ˆ&S¢ ΩGG ¢òöƘ7G2æ◊˜7 Âæ6öÒö◊˜7 À‹ ‹ > > > -- > MySQL General Mailing List > For list archives: http://lists.mysql.com/mysql > To unsubscribe: http://lists.mysql.com/mysql > > -- Manuel Aróstegui Systems Team tuenti.com