本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Rulition/archive/2009/10/17/4688982.aspx /* THIS4.0 数据库备份脚本 [作者] Rulition QQ:7355157
由于myisam 表容易损坏,故可以定期进行一次检查。
脚本如下:本文记录了服务器数据库备份、压缩、加密、发送记录邮件的一套流程。 需求:服务器的数据库自动在增长,但是难保某个时候发生意外导致数据库崩溃。所以需要做定
#!/usr/bin/perl -w
use strict;
use DBI;
$|=1;
my $DB_HOST = '127.0.0.1';
my $DB_PORT = 3306;
my $DB_LOGIN = 'checkuser';
my $DB_PASSWD = 'checkpwd';
my @DB_Name_all=('callcenter','asterisk');
my @MyisamTable=();
foreach my $DB_DATABASE (@DB_Name_all){
my $dsn = "dbi:mysql:$DB_DATABASE:$DB_HOST:$DB_PORT";
my $dbiconnect = DBI->connect($dsn, $DB_LOGIN, $DB_PASSWD);
my $sql="SHOW TABLE status";
my $sth=$dbiconnect->prepare($sql);
$sth->execute();
my $rslt_rows=$sth->rows;
if($rslt_rows>0)
{
while (my ($table_name,$table_engine)=$sth->fetchrow_array())
{
if($table_engine eq 'MyISAM')
{
my $sql_check="CHECK TABLE $table_name";
my $sth_check=$dbiconnect->prepare($sql_check);
$sth_check->execute;
my($TableName,$Op,$Msg_type,$Msg_text) =$sth_check->fetchrow_array();
my $log=$TableName." ".$Op." ".$Msg_type." ".$Msg_text;
&msgLog($log);
}
}
}
}
$dbiconnect->disconnect;
sub msgLog() {
my ($msg) = @_;
open(LOG, ">>/var/log/myIsamcheck.log");
print LOG scalar localtime();
print LOG " ",$msg,"\n";
close(LOG);
}
1、创建备份文件夹 mkdir /var/lib/mysqlbackup 2、编写备份脚本代码 vi dbbackup.sh 3、脚本内容 #!/bin/shmysqldump -uuser -ppassword dbname |