Thread: Database backup
View Single Post
  #3  
Old 06-30-2008, 02:46 AM
Eikinskjaldi's Avatar
Eikinskjaldi Eikinskjaldi is offline
 
Join Date: Feb 2006
Location: Hell, never looked better
Posts: 572
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If you have root/ssh access then you are better off using mysqlhotcopy rather than mysqldump, it will generate db binaries that you can move around as desired, and is much faster. I recommend running it without indices, which can be rebuilt fairly quickly if needed.

For transfer to another server use rsync via ssh.

For automation use cron (the system one, not the vb one).

My backup script is written in python, here it is in its entirety. Note it maintains a 14 day rolling backup, and keeps symlinks to the most recent in the top level of the backup tree.

Code:
#!/usr/bin/python
import string, time
import commands


doy = time.gmtime()[7] % 15
dbpath1 = "/backup/DBBACKUP/"
dbpath2 = "/backup/DBBACKUP/d%s/" % doy
lfile = open('/var/log/backuplog', 'a')

dbs = ['vb','another_db','a_third_db']

for db in dbs:
        cmd ="/usr/bin/mysqlhotcopy -u root -p <mypassword> --allowold --noindices %s %s" % (db, dbpath2)
        tlink = '%s%s' % (dbpath1, db)
        slink = '%s%s' % (dbpath2, db)

        cmd2 = 'rm %s' % tlink
        cmd3 = 'ln -s %s %s' % (slink, tlink)


        lfile.write(time.ctime() + '\n')
        for x in (cmd, cmd2, cmd3):
                lfile.write(x + '\n')
                (s,o) = commands.getstatusoutput(x)
                lfile.write(o + '\n')
in /etc/cron.d I have a script that contains:
MAILTO=
SHELL=/bin/sh
5 3 * * * root /usr/local/backupscripts/dbbackup.py

For the remote transfer you need to set up an ssh key, instructions can be found here
http://pkeck.myweb.uga.edu/ssh/ Personally, I run the remote backup manually every other day, since I don't trust the integrity of my backup host (a shared server)
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01153 seconds
  • Memory Usage 1,766KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_code
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete