你好,
我试图存档我们的生产DB的一些部分,但pt-archiver不想正常运行,它失败了“宽字符打印在/usr/bin/pt-archiver行6700。”
我们的数据库有一些不同于UTF8编码的数据。
我尝试使用“- [no] checkcharset”标志,但它只得到20个第一行并停止工作。
有什么办法可以克服吗?
先谢谢你,
丹尼斯
1像
丹尼斯,谢谢你的问题。
我能检查一下你运行的是什么版本的Percona Toolkit吗?雷竞技下载官网我在这里发现了一个bug [url][PT-940] LP #940253: pt-archiver:宽字符打印- Percona JIRA雷竞技下载官网这表明问题已经解决。这似乎是间歇性发生的事情。
在bug帖子中也有一些建议。如果你有一个测试环境,最好先检查一下。
不管怎样,让我知道版本,Percona服务器或MySQL版本,环境等,我会看看雷竞技下载官网是否有人能帮你检查。
谢谢!
1像
你好,
并感谢您的及时反馈!
我正在使用的pt-archiver是3.0.10, MySQL服务器有5.6.34的版本。
环境是Ubuntu16.04.03 LTS 64位.
我正在运行“pt-archiver”命令,使用“-charset”标志,类型为“utf8”,但以其简短形式:“-A;类型:字符串",下面是命令示例(敏感数据已删除):
nohup pt-archiver——source u=,p= ",h=,D=, t=,A=utf8——file ——where " ' "——progress 10000——statistics——limit 1000——txn-size 500 > .log 2>&1
我还没有尝试过下面的其中一种(摘自你上面分享的链接):
我要做的。
再次感谢。
1像
不客气如果可能的话,请下载PT 3.0.11(最新版本)并尝试“以防万一”。
与此同时,我会让技术团队注意到这一点,以防有人有其他建议。
谢谢!
1像
嗨,洛林,
我安装了最新版本的PT,现在运行起来没有任何问题。
如果这个问题再次发生,我会在这里发帖。
谢谢你的帮助,非常感激。
1像
不客气,我很高兴事情解决了。
如果它再次出现,请回复,但从错误数据库来看,我们满意地解决了这个问题。
1像
你好,洛林,
即使在使用最近的PT版本3.0.11时,我仍然面临同样的问题。它失败时,试图获得数据与文本讠m㸋>和ⱳ⬘ᦢ
有办法克服吗?
先谢谢你。
1像
你好le_den,谢谢你的更新。好吧,听起来好像原来的bug在所有情况下都没有完全修复。你能不能创造一个小的可复制的案例?我觉得我们可能需要用一个测试用例来更新我们的bug数据库。让我知道?由于它似乎是间歇性的,这总是最棘手的事情之一,但测试用例可以提供很大的帮助。
1像
你好,洛林,
这里有一个.csv文件,有4个示例,前两个是PT失败的,而最后两个正在处理,没有任何问题。
希望这对你有用。
谢谢你!
1像
谢谢你le_den,我会把这个交给相关技术人员,看看他们是否能复制。感激。
1像
你好,
你能分享一下SHOW CREATE TABLE的输出吗?
问候
1像
你好,
就是这样:
[B]创建表日志(
UIDvarchar(255) COLLATE utf8_bin DEFAULT NULL
numb1varchar(255) COLLATE utf8_bin DEFAULT NULL
numb2varchar(255) COLLATE utf8_bin DEFAULT NULL
created_atdatetime不为空,
updated_atdatetime不为空,
状态varchar(40) COLLATE utf8_bin DEFAULT NULL
field1varchar(50) COLLATE utf8_bin DEFAULT NULL
内容varchar(1000) COLLATE utf8_bin
idbigint(20) NOT NULL AUTO_INCREMENT,
主键(id),
唯一键index_log_on_uid(uid),
关键index_log_on_created_at(created_at),
关键index_log_on_state(状态),
关键field1_idx(field1),
InnoDB AUTO_INCREMENT=1876946846 DEFAULT CHARSET=utf8 COLLATE=utf8_bin[/B]
最好的问候,
丹尼斯
1像
你好,
可以用mysqldump把数据样例发给我们吗?
我无法导入您的数据。
1像
嗨,卡洛斯,
附件是一个mysql转储文件。请尝试导入,并告诉我进展如何。
谢谢。
example.txt(1.67 KB)
1像
我无法复述这个问题。
我导入了数据。下面是一些行,包括其中一个相互矛盾的行。
mysql > select * from test.log \ G *************************** 1。行 *************************** UID:零numb1: 3533 numb2: 3533 created_at: 2009-10-17 21:58:00 updated_at: 2009-10-17 21:58:00状态:收到field1: something13内容:……p .....!.......... m ^ . . t…J……Z ..*.{......{..... K5. / #,我 .%......~| 问……#同意. . w x…l . . w . . 2 . . _ . . pH1.V0……h.Iz.i . . I.B……h。Id: 28 ***************************行*************************** UID: NULL numb1: 123456 numb2: 3533 created_at: 2009-10-17 21:58:00 updated_at: 2009-10-17 21:58:00 state: received field1: something1 content: ....../. f <.;Id: 31 ***************************行 *************************** UID:零numb1: 789012 numb2: 3533 created_at: 2009-10-17 23:28:00 updated_at: 2009-10-17 22:41:00状态:收到field1: something2内容:ⱳ⬘ᦢid: 32 *************************** 4所示。行 ***************************
然后运行pt-archiver,如下所示:
bin/pt-archiver——source h=127.0.0.1,P=12345,u=msandbox, P= msandbox,D=test,t=log——charset=utf8——file A .txt——where "1=1"——progress 10000——statistics——limit 1000——txn-size 500 TIME ELAPSED COUNT 2018-08-23T08:54:43 00 2018-08-23T08:54:43 0 13 start at 2018-08-23T08:54:43, end at 2018-08-23T08:54:43 source: A=utf8,D=test,P=12345,h=127.0.0.1, P=…,t=log,u=msandbox SELECT 13 INSERT 0 DELETE 13 Action Count Time Pct deleting 13 0.0020 53.79 SELECT 2 0.0005 13.18 commit 1 0.0001 2.93 print_file 13 0.0001 2.73 other 0 0.0010 27.37
输出文件有:
猫a.txt \ N 3533 3533 2009-10-17 21:58:00 2009-10-17 21:58:00收到something13……p .....!.......... m ^ . . t…J……Z ..*.{......{..... K5. / #,我 .%......~| 问……#同意. . w x…l . . w . . 2 . . _ . . pH1.V043…h.Iz.i . . I.B……h。\N 463456 3533 2009-10-17 21:58:00 2009-10-17 21:58:00 received something1 ....../. f <.;\N 479012 3533 2009-10-17 23:28:00 2009-10-17 22:41:00 received something2 â±³â á μ m \N 4833 3533 2009-10-17 21:58:00 2010-10-17 00:41:00 received something3 ??\ N 1111 3533 2009-10-17 21:58:00 2009-10-17 21:58:00收到something4……p .....!..... v . . 0美元……B.Q p…u > . . 7. l.a.l.skif……-I.bQ G强生…T.M . . 8 j。=…c ....*.....*.. C . . m.KL.J49{“研发”. . J8L: l . *…F。\ N 22222 3533 2009-10-17 21:58:00 2009-10-17 21:58:00收到something5……p .....!........). H . . 8…我…1 t…[…l…4 _.bs3 ........-... I.B.U6。# _ k9…2 . . 09…B4) X ?……ylw.H50……. . > . c(. .:。)z。= ' 5…\N 5144 3533 2009-10-17 21:58:00 2009-10-17 21:58:00 received something6…c.........g......\N 52555 3533 2009-10-17 21:58:00 2009-10-17 21:58:00 received some…0 \ N 9990 3533 2009-10-17 21:58:00 2009-10-17 21:58:00收到something8…c . . p .....!.......... N.P v…> Cb…2 m . . w)…………-。| D.M5.Y.H…{.nZN。|…k.0 . .你. . R % 3。)……q.5.W.y.53。+ p y…N.Vv + 7 ' . . = F。\N 5433 3533 2009-10-17 21:58:00 2009-10-17 21:58:00 received something10 ........sH(| \N 5633 3533 2009-10-17 21:58:00 2009-10-17 21:58:00 received something11 ............\ N 3533 3533 2009-10-17 21:58:00 2009-10-17 21:58:00收到something12“…}. . p .....!.....?-...... GP . . H . + "…v.a.Kc…t_.X.——~ / H…L.TU .}..#...... Q…-…t…,. . X +...../.... 我…你。f.57Z.mo.f……问……> .V……”
你能帮我做个快速测试吗?
你能把这个加在下面吗
使用严格的;
行吗?(~第51行)
use utf8;
然后再运行程序?
问候
1像
在pt-archiver下的第一个“使用严格”。(第51行)
1像
你好,卡洛斯,
我已经尝试过了,但我得到了同样的错误,这一次行数被改变了,它发生在上面的代码的最后一行:
If ($archive_fh) {trace('print_file', sub {print $archive_fh $escaped_row, "\n"
这是我在第50行之后添加新行后的代码:
使用严格的;use utf8;
问候,
丹尼斯
1像
你好,
谢谢你的耐心和愿意帮助。
我可以请你再做一次检查吗?
添加2行二进制模式,如下所示:(第6649和6650行)
6646 my $need_hdr = $o->get('header') && !$archive_fh = IO::File->new($archive_file, ">>$charset") 6648或die "无法打开$charset $archive_file: $OS_ERROR\n";6649 binmode STDOUT, ":utf8";6650 binmode $archive_fh, ":utf8";$archive_fh->autoflush(1)除非$o->get('buffer');
问候
1像