最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

Perl批量跳过MySQLSlave复制错误

来源:懂视网 责编:小采 时间:2020-11-09 13:20:09
文档

Perl批量跳过MySQLSlave复制错误

Perl批量跳过MySQLSlave复制错误:发现mysql slave服务器经常因为一些特殊字符或者符号产生的更新语句报错,整个同步也会因此而卡在那,最初的办法只是手动去出错的机器,执行下面三条sql语句,跳过错误即可。 slave stop;set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;slave s
推荐度:
导读Perl批量跳过MySQLSlave复制错误:发现mysql slave服务器经常因为一些特殊字符或者符号产生的更新语句报错,整个同步也会因此而卡在那,最初的办法只是手动去出错的机器,执行下面三条sql语句,跳过错误即可。 slave stop;set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;slave s

发现mysql slave服务器经常因为一些特殊字符或者符号产生的更新语句报错,整个同步也会因此而卡在那,最初的办法只是手动去出错的机器,执行下面三条sql语句,跳过错误即可。 slave stop;set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;slave start; 一台slave机器用

发现mysql slave服务器经常因为一些特殊字符或者符号产生的更新语句报错,整个同步也会因此而卡在那,最初的办法只是手动去出错的机器,执行下面三条sql语句,跳过错误即可。

slave stop;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
slave start;

一台slave机器用这样方法还行,多台就麻烦了,就顺手写了个简单的perl脚本,方便统一跳过错误,代码如下:

#!/usr/bin/env perl
use strict;
use warnings;
# get slave status
sub get_status {
 my ($ip, $usr, $pass) = @_;
 my $info = `mysql -u$usr -p$pass -h$ip -e 'show slave status\\G;'`;
 if (($info =~ /Slave_IO_Running: Yes/) && ($info =~ /Slave_SQL_Running: No/)) {
 return 1;
 }
 return 0;
}
# mysql slave skip
sub slaveskip {
 my ($ip, $usr, $pass) = @_;
 print "slave error **\n";
 system("mysql -u$usr -p$pass -h$ip -e 'slave stop;'");
 system("mysql -u$usr -p$pass -h$ip -e 'set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;'");
 system("mysql -u$usr -p$pass -h$ip -e 'slave start;'");
}
my @hosts = qw/
192.168.0.101:root:tt1234
192.168.0.102:root: tt1234
192.168.0.103:root: tt1234
/;
foreach (@hosts) {
 my ($ip, $usr, $pass) = split ':';
 print "// ----- $ip\n";
 my $count = 1;
 while ($count < 100000) {
 my $status = get_status($ip, $usr, $pass);
 print "i: $count status: $status\n";
 last if $status == 0;
 slaveskip($ip, $usr, $pass);
 select(undef, undef, undef, 0.1);
 $count++;
 }
 print "\n";
}
exit;

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

Perl批量跳过MySQLSlave复制错误

Perl批量跳过MySQLSlave复制错误:发现mysql slave服务器经常因为一些特殊字符或者符号产生的更新语句报错,整个同步也会因此而卡在那,最初的办法只是手动去出错的机器,执行下面三条sql语句,跳过错误即可。 slave stop;set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;slave s
推荐度:
标签: 复制 批量 错误
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top