你好,

我试图存档我们的生产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像

不客气,我很高兴事情解决了。: slight_smile:
如果它再次出现,请回复,但从错误数据库来看,我们满意地解决了这个问题。

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_uiduid),
关键index_log_on_created_atcreated_at),
关键index_log_on_state状态),
关键field1_idxfield1),
InnoDB AUTO_INCREMENT=1876946846 DEFAULT CHARSET=utf8 COLLATE=utf8_bin[/B]

最好的问候,
丹尼斯

1像

大家好,Pe雷竞技下载官网rcona团队,

中方是否有最新进展?

谢谢你!

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像

嗨,卡洛斯,

我应该把这条线加在哪里?

谢谢。

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像