📄 ndb_error_reporter
字号:
#!/usr/bin/perl -wuse strict;if(@ARGV < 1){ print STDERR "Usage:\n"; print STDERR "\tndb_error_reporter config.ini [username] [--fs]\n\n"; print STDERR "\tusername is a user that you can use to ssh into\n"; print STDERR "\t all of your nodes with.\n\n"; print STDERR "\t--fs means include the filesystems in the report\n"; print STDERR "\t WARNING: This may require a lot of disk space.\n"; print STDERR "\t Only use this option when asked to.\n\n"; exit(1);}my $config_file= $ARGV[0];my $config_get_fs= 0;my $config_username= '';if(defined($ARGV[1])){ $config_get_fs= 1 if $ARGV[1] eq '--fs'; $config_username= $ARGV[1].'@' if $ARGV[1] ne '--fs'; $config_get_fs= (defined $ARGV[2] && $ARGV[2] eq '--fs')?1:$config_get_fs;}if(!stat($config_file)){ print STDERR "Cannot open configuration file.\n\n"; exit(1);}my @nodes= split ' ',`ndb_config --config-file=$ARGV[0] --nodes --query=id --type=ndbd`;push @nodes, split ' ',`ndb_config --config-file=$ARGV[0] --nodes --query=id --type=ndb_mgmd`;sub config { my $nodeid= shift; my $query= shift; my $res= `ndb_config --config-file=$ARGV[0] --id=$nodeid --query=$query`; chomp $res; $res;}my @t= localtime();my $reportdir= sprintf('ndb_error_report_%u%02u%02u%02u%02u%02u', ($t[5]+1900),($t[4]+1),$t[3],$t[2],$t[1],$t[0]);if(stat($reportdir) || stat($reportdir.'tar.bz2')){ print STDERR "It looks like another ndb_error_report process is running.\n"; print STDERR "If that is not the case, remove the ndb_error_report directory"; print STDERR " and run ndb_error_report again.\n\n"; exit(1);}mkdir($reportdir);foreach my $node (@nodes){ print "\n\n Copying data from node $node". (($config_get_fs)?" with filesystem":""). "\n\n"; my $recurse= ($config_get_fs)?'-r ':''; system 'scp '.$recurse.$config_username.config($node,'host'). ':'.config($node,'datadir')."/ndb_".$node."* ". "$reportdir/\n";}print "\n\n Copying configuration file...\n\n\t$config_file\n\n";system "cp $config_file $reportdir/";my $r = system 'bzip2 2>&1 > /dev/null < /dev/null';my $outfile;if($r==0){ $outfile= "$reportdir.tar.bz2"; system "tar c $reportdir|bzip2 > $outfile";}else{ $outfile= "$reportdir.tar.gz"; system "tar c $reportdir|gzip > $outfile";}system "rm -rf $reportdir";print "\n\nPlease attach $outfile to your error report\n\n";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -