Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.0 > vBulletin 3.0 Full Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
[vbcron] Automatic database backup [v1.3] Details »»
[vbcron] Automatic database backup [v1.3]
Version: 1.00, by Brad Brad is offline
Developer Last Online: Nov 2023 Show Printable Version Email this Page

Version: 3.0.0 Rating:
Released: 03-03-2004 Last Update: Never Installs: 73
Re-useable Code Translations  
No support by the author.

This script will allow you to automaticly back-up your vBulletin database (or any database you have access to).


Current Stable Version: 1.3.1

System Requirements-

vBulletin RC 2 or later
Unix/Linux server with MySQL Dump support
Ability to chmod folders to 777 (775 works on some servers)

[high]IMPORTANT NOTE TO ALL THAT USE THIS SCRIPT[/high]

This script invokes an outside process that runs in the backround on your server to backup and compress your database. It is important to remember that this is not an instant process, do not enter you ftp as soon as the script says it is done and try to download your backup. It will likely be incomplete and your server will probbly still be writting the file to disk.

I ussally give the process an hour or two before I mess with the file, larger databases will take more time of course.

Installing the script-

1. You will need to change the information here for it to work correctly on your server:

PHP Code:
// ######################## Begin edits ######################
define('DB_HOST''localhost'); // database host

define('DB_USER''db_user'); // database username

define('DB_PASSWORD''password'); // database password

define('DB_NAME''db_name'); // vbulletins database name

define('DUMP_PATH''/path/to/dump/folder'); // path to where db backup will be stored

define('DUMP_MAKE_TAR'1); // set this to 1 for the backup to be compressed in a .tar.gz file
// ####################### End Edits ########################## 
2. CHMOD the folder you specified in DUMP_PATH to 777

3. Upload the vbcron_db_backup_131.php file to the /vbroot/includes/cron directory

4. Enter you admin control panel, under Scheduled Tasks click [high]Add New Scheduled Task[/high]

Enter the information has follows:

Title: Automatic Database Back-up

Day of the Week:

This is the day of the week the task should run on. Set this to * to have it not apply, or for it to run every day (if Day of the Month is set to * below). Otherwise select a specific day. Note that this will override the day of the month option, unless this is set to *.

Day of the Month:
Set this to the specific day of the month the task should run. This is overridden by the Day of the Week setting above. Set this to * to have it not apply.

Hour:
This is the hour of the day the task should run. Set it to * to have it run every hour.

Minute:
This is the minute of the hour the task should run. Set it to * to have it run every minute (not really recommended!).

Log Actions:
If this is set to Yes, every time the scheduled task runs, a log will be made indicating that the task was run, and in certain cases, additional information will be provided (e.g. for the Birthday Email task, the usernames who were sent birthday wishes will be noted).

Filename:
Enter the path to vbcron_db_backup_131.php, ./includes/cron/vbcron_db_backup_131.php should work in most cases

What was added in 1.3.1

- Fixed all bugs reported in 1.3

What was added in 1.3

- Added ability for script to leave logs

Improvments to come:

- Email alert when db is begin backed up
- Close board when back-up is in process
- 'Lock down' db durring backup so no one can access it
- Table, by table back-up
- Clear session table before backup
- Make script more windows friendly
- Delete last .sql (or .tar.gz) file when doing current back-up
- [high]Ability to use hashed file names for back-ups[/high]
- [high]Save back-up to forgin server[/high]

To come: version 2.0

2.0 will introduce most, if not all the fetures listed above.

Public beta testing will begin in the next few days, expect a stable version in at least 2 weeks time.

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #102  
Old 05-06-2004, 09:43 AM
Onkel_Tom's Avatar
Onkel_Tom Onkel_Tom is offline
 
Join Date: Mar 2002
Location: Stuttgart- Germany
Posts: 208
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

another question.
What about to include /includes/config.php in your db_backup script and just add the two lines to the config.php
PHP Code:
$DUMP_PATH '/path/to/dump/folder'// path to where db backup will be stored
$DUMP_MAKE_TAR '1'// set this to 1 for the backup to be compressed in a .tar.gz file 
then change in your db_backup script DUMP_PATH with $DUMP_PATH and DUMP_MAKE_TAR with $DUMP_MAKE_TAR

This will reduce the time for implement this script to another vB and also the paramters for the DB are centralized in the config.php and not twice in your script too.

I didn't try it right now, but I think this will work.
Reply With Quote
  #103  
Old 05-06-2004, 10:10 AM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Onkel_Tom
another question.
What about to include /includes/config.php in your db_backup script and just add the two lines to the config.php
PHP Code:
$DUMP_PATH '/path/to/dump/folder'// path to where db backup will be stored
$DUMP_MAKE_TAR '1'// set this to 1 for the backup to be compressed in a .tar.gz file 
then change in your db_backup script DUMP_PATH with $DUMP_PATH and DUMP_MAKE_TAR with $DUMP_MAKE_TAR

This will reduce the time for implement this script to another vB and also the paramters for the DB are centralized in the config.php and not twice in your script too.

I didn't try it right now, but I think this will work.
Could you show me how to set it up like that? I'd like to try it and see how it works.
Reply With Quote
  #104  
Old 05-06-2004, 02:49 PM
Brad Brad is offline
 
Join Date: Nov 2001
Posts: 4,765
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Onkel_Tom
another question.
What about to include /includes/config.php in your db_backup script and just add the two lines to the config.php
PHP Code:
$DUMP_PATH '/path/to/dump/folder'// path to where db backup will be stored
$DUMP_MAKE_TAR '1'// set this to 1 for the backup to be compressed in a .tar.gz file 
then change in your db_backup script DUMP_PATH with $DUMP_PATH and DUMP_MAKE_TAR with $DUMP_MAKE_TAR

This will reduce the time for implement this script to another vB and also the paramters for the DB are centralized in the config.php and not twice in your script too.

I didn't try it right now, but I think this will work.
It is set up this way to allow you to have multiple copies to back up multiple databases, even ones that arent associated with vBulletin.

As for the DATE define it was replaced by a var, unless you spotted an old call to it that I missed?
Reply With Quote
  #105  
Old 05-06-2004, 02:52 PM
Brad Brad is offline
 
Join Date: Nov 2001
Posts: 4,765
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

O I see the missed call, I will update the script in a few minutes.
Reply With Quote
  #106  
Old 05-06-2004, 02:56 PM
Brad Brad is offline
 
Join Date: Nov 2001
Posts: 4,765
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok fixed that little error, also made the file name more readable (it will be month-day-year.sql now).

No version change, but the file in the first post has been updated.
Reply With Quote
  #107  
Old 05-06-2004, 03:40 PM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This is the name of my back up file now:

DUMP_DATE.tar.gz

It didn't pass the date to it.

When I add back this line:

define('DUMP_DATE', $file_date);

It works right.
Reply With Quote
  #108  
Old 05-06-2004, 05:04 PM
Onkel_Tom's Avatar
Onkel_Tom Onkel_Tom is offline
 
Join Date: Mar 2002
Location: Stuttgart- Germany
Posts: 208
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Boofo
Could you show me how to set it up like that? I'd like to try it and see how it works.
I tested it a few minutes ago and it works fine

This change is used to get the db_data directly from config.php without having this data in more scripts.

Okay, here we go:
step1:
open your /includes/config.php file and find:
PHP Code:
// ****** DATABASE NAME ******
// This is the name of the database where your vBulletin will be located.
// This must be created by your webhost.
$dbname 'your_db_name_here'
below that add:
PHP Code:
// ****** DATABASE BACKUP HACK VIA CRON ******
// This is the absolute Path to your folder where the db backup will be stored.
// Use DUMP_MAKE_TAR = 1 for compressed tar.gz file 
// Use DUMP_MAKE_TAR = 0 for normale .sql file 
$DUMP_PATH '/path/to/dump/folder';
$DUMP_MAKE_TAR '1'
Don't forget to place your /path/to/dump/folder folder in this code !

Save and store config.php

step2:
now open your db_backup Script in /includes/cron folder. Should be named vbcron_db_backup_131.php

and replace:
PHP Code:
// ######################## Begin edits ######################
define('DB_HOST''localhost'); // database host

define('DB_USER''db_user'); // database username

define('DB_PASSWORD''password'); // database password

define('DB_NAME''db_name'); // vbulletins database name

define('DUMP_PATH''/path/to/dump/folder'); // path to where db backup will be stored

define('DUMP_MAKE_TAR'1); // set this to 1 for the backup to be compressed in a .tar.gz file
// ####################### End Edits ##########################

// for some reason beyound me query was un-defined for some users, so this is here as an attempt to fix it...
require_once('./global.php'); 
with:
PHP Code:
// for some reason beyound me query was un-defined for some users, so this is here as an attempt to fix it...
require_once('./global.php');
// get db requirements from config.php
require('./includes/config.php'); 
step3:
now replace:
PHP Code:
// Get .sql file
exec('mysqldump --add-drop-table -h' .DB_HOST' -u' .DB_USER' -p' .DB_PASSWORD' ' .DB_NAME' 2>' .DUMP_PATH'/' .$file_date'-error.txt >' .DUMP_PATH'/' .$file_date'.sql');

$log_db 'Saved backup of databse to ' DUMP_PATH ' at ' $file_date ' (file name ' $file_date '.sql'
with
PHP Code:
// Get .sql file
exec('mysqldump --add-drop-table -h' .$servername' -u' .$dbusername' -p' .$dbpassword' ' .$dbname' 2>' .$DUMP_PATH'/' .$file_date'-error.txt >' .$DUMP_PATH'/' .$file_date'.sql');

$log_db 'Saved backup of databse to ' $DUMP_PATH ' at ' $file_date ' (file name ' $file_date '.sql'
step4:
now replace
PHP Code:
// now archive and compress the backup, also delete .sql file
    
exec('tar -cSz --remove-files -C' .DUMP_PATH' -f' .DUMP_PATH'/' .DUMP_DATE'.tar.gz ' .$file_date'.sql ' .$file_date'-error.txt');
    
    
$log_db 'Saved backup of databse to ' DUMP_PATH ' at ' $file_date ' (file name ' $file_date '.tar.gz'
with
PHP Code:
// now archive and compress the backup, also delete .sql file
    
exec('tar -cSz --remove-files -C' .$DUMP_PATH' -f' .$DUMP_PATH'/' .$file_date'.tar.gz ' .$file_date'.sql ' .$file_date'-error.txt');
    
    
$log_db 'Saved backup of databse to ' $DUMP_PATH ' at ' $file_date ' (file name ' $file_date '.tar.gz'
save and store vbcron_db_backup_131.php

step5:
upload config.php to /includes/
upload vbcron_db_backup_131.php to /includes/cron

and look how it works
Reply With Quote
  #109  
Old 05-06-2004, 05:07 PM
Onkel_Tom's Avatar
Onkel_Tom Onkel_Tom is offline
 
Join Date: Mar 2002
Location: Stuttgart- Germany
Posts: 208
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Boofo
This is the name of my back up file now:

DUMP_DATE.tar.gz

It didn't pass the date to it.

When I add back this line:

define('DUMP_DATE', $file_date);

It works right.
Yes, Brad.loo forgot to change the parameter in the tar-routine !
Just search for
PHP Code:
// now archive and compress the backup, also delete .sql file
    
exec('tar -cSz --remove-files -C' .DUMP_PATH' -f' .DUMP_PATH'/' .DUMP_DATE'.tar.gz ' .$file_date'.sql ' .$file_date'-error.txt');
    
    
$log_db 'Saved backup of databse to ' DUMP_PATH ' at ' $file_date ' (file name ' $file_date '.tar.gz'
and replace it with:
PHP Code:
// now archive and compress the backup, also delete .sql file
    
exec('tar -cSz --remove-files -C' .DUMP_PATH' -f' .DUMP_PATH'/' .$file_date'.tar.gz ' .$file_date'.sql ' .$file_date'-error.txt');
    
    
$log_db 'Saved backup of databse to ' DUMP_PATH ' at ' $file_date ' (file name ' $file_date '.tar.gz'
Reply With Quote
  #110  
Old 05-06-2004, 05:24 PM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

There's something wrong because it isn't doing anything now. It says it made the backup, but it was alot quicker than normal and there is no file there. I followed your instructions exactly.
Reply With Quote
  #111  
Old 05-06-2004, 09:15 PM
Onkel_Tom's Avatar
Onkel_Tom Onkel_Tom is offline
 
Join Date: Mar 2002
Location: Stuttgart- Germany
Posts: 208
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Boofo, you are right
I was in a hurry while posting the changes and do a mistake in step3 !
Please do again step 3 and the change will work, I forgot to replace the old variables with the new one from config.php
Sorry !
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:05 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.07307 seconds
  • Memory Usage 2,376KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (14)bbcode_php
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete