mysql 备份脚本

 mysql 备份脚本..写的很一般..高手见了不要笑俺..

  
  
  
  
  1. #!/usr/bin/perl -w 
  2. use warnings; 
  3. use strict; 
  4. use DBI; 
  5. my $backup_dir = "/root/perl/backup"
  6. my $backup_log = "$backup_dir/backup_log"
  7. my $db_name = "mysql"
  8. my $db_host = "localhost"
  9. my $db_user = "root"
  10. my $db_passwd = "redhat"
  11. my $db_port = "3306"
  12. my $mysql_bin_dir = "/usr/local/mysql/bin"
  13. my $ftp_user = "ftp"
  14. my $ftp_passwd = "redhat"
  15. my $ftp_host = "192.168.1.100"
  16. my $ftp_dir ="pub"
  17. my @backup_db_list = qw(mysql test); 
  18. my ($sec,$min,$hour,$day,$mon,$year)=localtime; 
  19. $year += 1900; 
  20. $mon += 1; 
  21. my $time_now = "$year-$mon-$day"
  22. my @backup_list; 
  23. mkdir "$backup_dir",0755 if !-e "$backup_dir"
  24. open LOG,">>$backup_log"
  25. print LOG "----------------------\nStart: $time_now\n"
  26. my $dsn = "DBI:mysql:$db_name:$db_host:$db_port"
  27. my %conn_attrs = ( 
  28.                 PrintError => 1, 
  29.                 RaiseError => 1, 
  30.                 AutoCommit => 1,); 
  31. my $dbh=DBI->connect($dsn,$db_user,$db_passwd,\%conn_attrs)  or print LOG "Could not connect mysql server:".DBI->errstr."\n"
  32. foreach my $db (@backup_db_list){ 
  33.         mkdir "$backup_dir/$db",0755 if !-e "$backup_dir/$db"
  34.         chdir "$backup_dir/$db"
  35.         my $backup_db_name = "${db}_${time_now}\.sql"
  36.         !system "$mysql_bin_dir/mysqldump -h $db_host -u $db_user -p$db_passwd -P $db_port -B $db > $backup_db_name" or print LOG "mysqldump error:$!\n"
  37.         system "(tar -zcvf $backup_db_name\.tar\.gz $backup_db_name) 2>&1 >/dev/null" if -e $backup_db_name; 
  38.         unlink "$backup_db_name" if -e "$backup_db_name\.tar\.gz"
  39.         push (@backup_list,"$backup_dir/$db/$backup_db_name\.tar\.gz"); 
  40.                 my @all_backup_db_list = <*.*.tar.gz>; 
  41.                         foreach my $backup_file (@all_backup_db_list){ 
  42.                                 unlink $backup_file if (time() - (stat($backup_file))[9] > (60*60*24*5)); 
  43.  } 
  44. $dbh->disconnect(); 
  45. print "@backup_list\n"
  46. my $ftp = Net::FTP->new($ftp_host,debug => 0) or print LOG "Count not connect ftp:$ftp_host\n"
  47. $ftp->login($ftp_user,$ftp_passwd) or print LOG "Could not login ftp:$ftp_host\n"
  48. $ftp->binary(); 
  49. $ftp->cwd($ftp_dir); 
  50. foreach my $upload_backdb_file (@backup_list){ 
  51.         $ftp->put($upload_backdb_file) or print LOG "put $upload_backdb_file faild!\n"
  52. print LOG "------------------------\n---------END----------\n"
  53. $ftp->quit; 
  54. close(LOG); 

 

你可能感兴趣的:(mysql,数据库,mysql备份,休闲,mysql_backup)