mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-07 21:09:14 +00:00
Compare commits
58 Commits
PT-1757_ni
...
RM-505-pt-
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e207d53225 | ||
![]() |
e20e3c879b | ||
![]() |
834df307ca | ||
![]() |
76cffde87e | ||
![]() |
f80c098614 | ||
![]() |
45522dea28 | ||
![]() |
b5a593dc16 | ||
![]() |
fc631efb32 | ||
![]() |
2f07f776b5 | ||
![]() |
384b841ea2 | ||
![]() |
a3ab87b12e | ||
![]() |
fa4bb014ec | ||
![]() |
25b8421447 | ||
![]() |
06a60c906a | ||
![]() |
55f719fa79 | ||
![]() |
7e7eecc68f | ||
![]() |
1b7d526722 | ||
![]() |
d531164921 | ||
![]() |
f0ee14d479 | ||
![]() |
670dd962a9 | ||
![]() |
6f75eb1877 | ||
![]() |
9e856562af | ||
![]() |
a7ec40383f | ||
![]() |
8abdc07050 | ||
![]() |
f79e153d9d | ||
![]() |
f6ea741467 | ||
![]() |
d623201275 | ||
![]() |
e9becc267c | ||
![]() |
ed8eb16569 | ||
![]() |
2821b847b3 | ||
![]() |
68dc98c2ba | ||
![]() |
11ae9b5b64 | ||
![]() |
25b637d4bd | ||
![]() |
bd32e51ec5 | ||
![]() |
38c169031e | ||
![]() |
a2159c259d | ||
![]() |
e97d80cde0 | ||
![]() |
3d78e61e1d | ||
![]() |
3caa8c4a25 | ||
![]() |
2f36e5816a | ||
![]() |
2c1861f239 | ||
![]() |
061e6bb5c1 | ||
![]() |
53213e0582 | ||
![]() |
e656274493 | ||
![]() |
81b5e5940c | ||
![]() |
9dd0b1eaab | ||
![]() |
0c50d8f708 | ||
![]() |
2b3217a77a | ||
![]() |
1b2a4bdf4a | ||
![]() |
d45d393d8a | ||
![]() |
ed0b883eda | ||
![]() |
4f5f37e6d6 | ||
![]() |
605b97959c | ||
![]() |
522f8c5821 | ||
![]() |
99d3de8297 | ||
![]() |
4fc3d9fd1f | ||
![]() |
636123bded | ||
![]() |
a97e24be71 |
2
.env
2
.env
@@ -1,4 +1,4 @@
|
||||
GOLANG_DOCKERHUB_TAG=1.10-stretch
|
||||
GOLANG_DOCKERHUB_TAG=1.13.7-stretch
|
||||
TEST_MONGODB_ADMIN_USERNAME=admin
|
||||
TEST_MONGODB_ADMIN_PASSWORD=admin123456
|
||||
TEST_MONGODB_USERNAME=test
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -20,6 +20,7 @@ src/go/pt-mongodb-summary/vendor/
|
||||
vendor/
|
||||
*.bak
|
||||
src/go/*.bak
|
||||
src/go/.env
|
||||
config/deb/control.bak
|
||||
config/rpm/percona-toolkit.spec.bak
|
||||
config/sphinx-build/percona-theme/*
|
||||
|
14
.travis.yml
14
.travis.yml
@@ -1,9 +1,7 @@
|
||||
language: go
|
||||
|
||||
go:
|
||||
- 1.9.x
|
||||
- 1.10.x
|
||||
- 1.12.x
|
||||
- 1.13.x
|
||||
|
||||
services:
|
||||
- docker
|
||||
@@ -46,6 +44,13 @@ env:
|
||||
- MONGODB_IMAGE=percona/percona-server-mongodb:3.2
|
||||
- MONGODB_IMAGE=percona/percona-server-mongodb:3.4
|
||||
|
||||
# skip non-trunk PMM-XXXX branch builds, but still build pull requests
|
||||
branches:
|
||||
except:
|
||||
- /^PMM\-\d{4}/
|
||||
|
||||
go_import_path: github.com/percona/percona-toolkit
|
||||
|
||||
before_install:
|
||||
- sudo apt-get update
|
||||
- sudo apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y docker-ce
|
||||
@@ -64,7 +69,8 @@ before_script:
|
||||
- dep ensure
|
||||
|
||||
script:
|
||||
- go test -timeout 20m ./src/...
|
||||
- docker ps
|
||||
- go test -timeout 20m ./src/go/...
|
||||
|
||||
allow_failures:
|
||||
- tip
|
||||
|
47
Changelog
47
Changelog
@@ -1,6 +1,7 @@
|
||||
Changelog for Percona Toolkit
|
||||
|
||||
* Fixed bug PT-1759: pt-stalk not collecting processlist and variables
|
||||
* Fixed bug PT-1793: Protocol parser cannot handle year 2020 (Thanks Kei Tsuchiya)
|
||||
|
||||
v3.1.0 release 2019-09-12
|
||||
|
||||
@@ -99,7 +100,7 @@ v3.0.6 released 2017-12-20
|
||||
v3.0.5 released 2017-11-20
|
||||
|
||||
* Improvement PMM-1590: Improve MongoDB Profiler for PMM and PT
|
||||
* Improvement PT-216: mongodb-query digest improved support for v<3.2 fixed incorrect output (Thanks MATSUU Takuto)
|
||||
* Improvement PT-216: mongodb-query digest improved support for v<3.2 fixed incorrect output (Thanks MATSUU Takuto)
|
||||
* Fixed bug PT-211: pt-mext fails on Rsa_public_key line
|
||||
* Fixed bug PT-212: pt-mongodb-query-digest shows NaNs
|
||||
* Fixed bug PT-202: pt-online-schema-change fails with virtual columns
|
||||
@@ -141,7 +142,7 @@ v3.0.4 released 2017-08-02
|
||||
v3.0.3 released 2017-05-19
|
||||
|
||||
* Fixed bug PT-133 : Sandbox won't start correctly if autocommit=0 in my.cnf
|
||||
* Fixed bug PT-132 : pt-online-schema-change should imply --no-drop-new-table
|
||||
* Fixed bug PT-132 : pt-online-schema-change should imply --no-drop-new-table
|
||||
* Fixed bug PT-130 : Fixed pt-mext not working with not empty Rsa_public_key
|
||||
* Fixed bug PT-128 : pt-stalk ps include memory usage outputs
|
||||
* Fixed bug PT-126 : Recognize comments in ALTER
|
||||
@@ -175,25 +176,25 @@ v3.0 released 2017-02-03
|
||||
* Fixed bug 1402776: Improved fix (protocol parser fix): error when parsing tcpdump capture with pt-query-digest
|
||||
* Fixed bug 1632522: pt-osc: Fails with duplicate key in table for self-referencing (Thanks Amiel Marqeta)
|
||||
* Fixed bug 1654668: pt-summary exists with an error (Thanks Marcelo Altmann)
|
||||
* New tool : pt-mongodb-summary
|
||||
* New tool : pt-mongodb-summary
|
||||
* New tool : pt-mongodb-query-digest
|
||||
|
||||
v2.2.20 released 2016-12-09
|
||||
|
||||
* Fixed bug 1362942: pt-slave-restart fails on MariaDB 10.0.13 (gtid_mode confusion)
|
||||
* Fixed bug 1566556: pt-show-grants fails against MariaDB10+
|
||||
* Fixed bug 1566556: pt-show-grants fails against MariaDB10+
|
||||
* Feature 1604834: pt-query-digest numbers in table or column names converted to question marks (--preserve-embedded-numbers)
|
||||
* Fixed bug 1613915: pt-online-schema-change misses data. Fixed sort order for ENUM fields
|
||||
* Fixed bug 1613915: pt-online-schema-change misses data. Fixed sort order for ENUM fields
|
||||
* Fixed bug 1625005: pt-online-schema-change doesn't apply underscores to foreign keys individually
|
||||
* Fixed bug 1634900: pt-upgrade fails with SELECT INTO
|
||||
* Fixed bug 1635734: pt-slave-restart --config does not recognize = as separator
|
||||
* Fixed bug 1634900: pt-upgrade fails with SELECT INTO
|
||||
* Fixed bug 1635734: pt-slave-restart --config does not recognize = as separator
|
||||
* Feature 1636068: Added pause to NibbleIterator
|
||||
* Feature 1638293: --data-dir parameter in order to create the table on a different partition
|
||||
* Feature 1639052: with pt-table-checksum automatically exclude checking schemas named percona, percona_schema
|
||||
* Feature 1639052: with pt-table-checksum automatically exclude checking schemas named percona, percona_schema
|
||||
* Feature 1642364: pt-online-schema-change Added --remove-data-dir feature
|
||||
* Feature 1643914: Fixed several typos in the doc (Thanks Dario Minnucci)
|
||||
* Feature 1643940: Add Transparent huge pages info to pt-summary
|
||||
* Feature 1643941: Add Memory management library to pt-mysql-summary
|
||||
* Feature 1643941: Add Memory management library to pt-mysql-summary
|
||||
|
||||
v2.2.19 released 2016-08-15
|
||||
|
||||
@@ -299,19 +300,19 @@ v2.2.14 released 2015-04-14
|
||||
|
||||
v2.2.13 released 2015-01-26
|
||||
|
||||
* Feature 1391240: pt-kill added query fingerprint hash to output
|
||||
* Fixed bug 1402668: pt-mysql-summary fails on cluster in Donor/Desynced status
|
||||
* Fixed bug 1396870: pt-online-schema-change CTRL+C leaves terminal in inconsistent state
|
||||
* Feature 1391240: pt-kill added query fingerprint hash to output
|
||||
* Fixed bug 1402668: pt-mysql-summary fails on cluster in Donor/Desynced status
|
||||
* Fixed bug 1396870: pt-online-schema-change CTRL+C leaves terminal in inconsistent state
|
||||
* Fixed bug 1396868: pt-online-schema-change --ask-pass option error
|
||||
* Fixed bug 1266869: pt-stalk fails to start if $HOME environment variable is not set
|
||||
* Fixed bug 1266869: pt-stalk fails to start if $HOME environment variable is not set
|
||||
* Fixed bug 1019479: pt-table-checksum does not work with sql_mode ONLY_FULL_GROUP_BY
|
||||
* Fixed bug 1394934: pt-table-checksum error in debug mode
|
||||
* Fixed bug 1321297: pt-table-checksum reports diffs on timestamp columns in 5.5 vs 5.6
|
||||
* Fixed bug 1321297: pt-table-checksum reports diffs on timestamp columns in 5.5 vs 5.6
|
||||
* Fixed bug 1399789: pt-table-checksum fails to find pxc nodes when wsrep_node_incoming_address is set to AUTO
|
||||
* Fixed bug 1388870: pt-table-checksum has some errors with different time zones
|
||||
* Fixed bug 1408375: vulnerable to MITM attack which would allow exfiltration of MySQL configuration information via --version-check
|
||||
* Fixed bug 1404298: missing MySQL5.7 test files for pt-table-checksum
|
||||
* Fixed bug 1403900: added sandbox and fixed sakila test db for 5.7
|
||||
* Fixed bug 1404298: missing MySQL5.7 test files for pt-table-checksum
|
||||
* Fixed bug 1403900: added sandbox and fixed sakila test db for 5.7
|
||||
|
||||
v2.2.12 released 2014-11-14
|
||||
|
||||
@@ -321,7 +322,7 @@ v2.2.12 released 2014-11-14
|
||||
* Fixed bug 1217466: pt-table-checksum refuses to run on PXC if server_id is the same on all nodes
|
||||
* Fixed bug 1373937: pt-table-checksum requires recursion when working with and XtraDB Cluster node
|
||||
* Fixed bug 1377888: pt-query-digest manual for --type binlog is ambiguous
|
||||
* Fixed bug 1349086: pt-stalk should also gather dmesg output
|
||||
* Fixed bug 1349086: pt-stalk should also gather dmesg output
|
||||
* Fixed bug 1361293: Some scripts fail when no-version-check option is put in global config file
|
||||
|
||||
v2.2.11 released 2014-09-26
|
||||
@@ -336,20 +337,20 @@ v2.2.11 released 2014-09-26
|
||||
|
||||
v2.2.10 released 2014-08-06
|
||||
|
||||
* Fixed bug 1287253: pt-table-checksum deadlock
|
||||
* Fixed bug 1287253: pt-table-checksum deadlock
|
||||
* Fixed bug 1299387: 5.6 slow query log Thead_id becomes Id
|
||||
* Fixed bug 1311654: pt-table-checksum + PXC inconsistent results upon --resume
|
||||
* Fixed bug 1340728: pt-online-schema-change doesn't work with HASH indexes
|
||||
* Fixed bug 1253872: pt-table-checksum max load 20% rounds down
|
||||
* Fixed bug 1340364: some shell tools output error when queried for --version
|
||||
* Fixed bug 1340364: some shell tools output error when queried for --version
|
||||
|
||||
v2.2.9 released 2014-07-08
|
||||
|
||||
* Fixed bug 1258135: pt-deadlock-logger introduces a noise to MySQL
|
||||
* Fixed bug 1329422: pt-online-schema-change foreign-keys-method=none breaks constraints
|
||||
* Fixed bug 1315130: pt-online-schema-change not properly detecting foreign keys
|
||||
* Fixed bug 1329422: pt-online-schema-change foreign-keys-method=none breaks constraints
|
||||
* Fixed bug 1315130: pt-online-schema-change not properly detecting foreign keys
|
||||
* Fixed bug 1335960: pt-query-digest cannot parse binlogs from 5.6
|
||||
* Fixed bug 1335322: pt-stalk fails when variable or threshold is non-integer
|
||||
* Fixed bug 1335322: pt-stalk fails when variable or threshold is non-integer
|
||||
|
||||
v2.2.8 released 2014-06-04
|
||||
|
||||
@@ -633,7 +634,7 @@ v2.1.3 released 2012-08-03
|
||||
* Fixed bug 954990: pt-stalk --nostalk does not work
|
||||
* Fixed bug 977226: pt-summary doesn't detect LSI RAID control
|
||||
* Fixed bug 1030031: pt-table-checksum reports wrong number of DIFFS
|
||||
* Fixed bug 916168: pt-table-checksum privilege check fails on MySQL 5.5
|
||||
* Fixed bug 916168: pt-table-checksum privilege check fails on MySQL 5.5
|
||||
* Fixed bug 950294: pt-table-checksum should always create schema and tables with IF NOT EXISTS
|
||||
* Fixed bug 953141: pt-table-checksum ignores its default and explicit --recursion-method
|
||||
* Fixed bug 1030975: pt-table-sync crashes if sql_mode includes ANSI_QUOTES
|
||||
|
18
Gopkg.lock
generated
18
Gopkg.lock
generated
@@ -95,6 +95,14 @@
|
||||
pruneopts = ""
|
||||
revision = "ff6b7dc882cf4cfba7ee0b9f7dcc1ac096c554aa"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:ad92aa49f34cbc3546063c7eb2cabb55ee2278b72842eda80e2a20a8a06a8d73"
|
||||
name = "github.com/google/uuid"
|
||||
packages = ["."]
|
||||
pruneopts = ""
|
||||
revision = "0cd6bf5da1e1c83f8b45653022c74f71af0538a4"
|
||||
version = "v1.1.1"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:4fbfcfe715329e2f09ea644657aa791b81e73a0c835a4f79b9a0dfff0513e2b8"
|
||||
@@ -187,14 +195,6 @@
|
||||
revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4"
|
||||
version = "v0.8.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:7f569d906bdd20d906b606415b7d794f798f91a62fcfb6a4daa6d50690fb7a3f"
|
||||
name = "github.com/satori/go.uuid"
|
||||
packages = ["."]
|
||||
pruneopts = ""
|
||||
revision = "f58768cc1a7a7e77a3bd49e98cdd21419399b6a3"
|
||||
version = "v1.2.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:55dcddb2ba6ab25098ee6b96f176f39305f1fde7ea3d138e7e10bb64a5bf45be"
|
||||
name = "github.com/shirou/gopsutil"
|
||||
@@ -334,6 +334,7 @@
|
||||
"github.com/alecthomas/kingpin",
|
||||
"github.com/go-ini/ini",
|
||||
"github.com/golang/mock/gomock",
|
||||
"github.com/google/uuid",
|
||||
"github.com/hashicorp/go-version",
|
||||
"github.com/howeyc/gopass",
|
||||
"github.com/kr/pretty",
|
||||
@@ -343,7 +344,6 @@
|
||||
"github.com/pborman/getopt",
|
||||
"github.com/percona/go-mysql/query",
|
||||
"github.com/pkg/errors",
|
||||
"github.com/satori/go.uuid",
|
||||
"github.com/shirou/gopsutil/process",
|
||||
"github.com/sirupsen/logrus",
|
||||
"go.mongodb.org/mongo-driver/bson",
|
||||
|
36
Gopkg.toml
36
Gopkg.toml
@@ -1,25 +1,3 @@
|
||||
# Gopkg.toml example
|
||||
#
|
||||
# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
|
||||
# for detailed Gopkg.toml documentation.
|
||||
#
|
||||
# required = ["github.com/user/thing/cmd/thing"]
|
||||
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project"
|
||||
# version = "1.0.0"
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project2"
|
||||
# branch = "dev"
|
||||
# source = "github.com/myfork/project2"
|
||||
#
|
||||
# [[override]]
|
||||
# name = "github.com/x/y"
|
||||
# version = "2.4.0"
|
||||
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/Masterminds/semver"
|
||||
version = "1.4.0"
|
||||
@@ -44,20 +22,6 @@
|
||||
branch = "master"
|
||||
name = "github.com/pborman/getopt"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/pkg/errors"
|
||||
version = "0.8.0"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/satori/go.uuid"
|
||||
version = "1.1.0"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/shirou/gopsutil"
|
||||
version = "2.17.11"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/sirupsen/logrus"
|
||||
|
||||
[[constraint]]
|
||||
name = "go.mongodb.org/mongo-driver"
|
||||
|
@@ -45,7 +45,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -2379,7 +2379,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -2546,6 +2546,7 @@ sub get_dbh {
|
||||
|
||||
if ( $cxn_string =~ m/mysql/i ) {
|
||||
my $sql;
|
||||
|
||||
if ( my ($charset) = $cxn_string =~ m/charset=([\w]+)/ ) {
|
||||
$sql = qq{/*!40101 SET NAMES "$charset"*/};
|
||||
PTDEBUG && _d($dbh, $sql);
|
||||
@@ -2586,6 +2587,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
@@ -3197,7 +3220,7 @@ sub generate_cmp_where {
|
||||
push @clause, "($val IS NULL OR $quo $type $val)";
|
||||
}
|
||||
elsif ( $type =~ m/>/ ) {
|
||||
push @clause, "(($val IS NULL AND $quo IS NOT NULL) OR ($quo $cmp $val)";
|
||||
push @clause, "($val IS NULL AND $quo IS NOT NULL) OR ($quo $cmp $val)";
|
||||
}
|
||||
else { # If $type =~ m/</ ) {
|
||||
push @clauses, "(($val IS NOT NULL AND $quo IS NULL) OR ($quo $cmp $val))";
|
||||
@@ -3211,7 +3234,7 @@ sub generate_cmp_where {
|
||||
push @clause, ($type =~ m/=/ && $end ? "$quo $type $val" : "$quo $cmp $val");
|
||||
}
|
||||
|
||||
push @clauses, '(' . join(' AND ', @clause) . ')';
|
||||
push @clauses, '(' . join(' AND ', @clause) . ')' if @clause;
|
||||
}
|
||||
my $result = '(' . join(' OR ', @clauses) . ')';
|
||||
my $where = {
|
||||
@@ -3740,7 +3763,13 @@ sub find_slave_hosts {
|
||||
|
||||
sub _find_slaves_by_processlist {
|
||||
my ( $self, $dsn_parser, $dbh, $dsn ) = @_;
|
||||
my @connected_slaves = $self->get_connected_slaves($dbh);
|
||||
my @slaves = $self->_process_slaves_list($dsn_parser, $dsn, \@connected_slaves);
|
||||
return @slaves;
|
||||
}
|
||||
|
||||
sub _process_slaves_list {
|
||||
my ($self, $dsn_parser, $dsn, $connected_slaves) = @_;
|
||||
my @slaves = map {
|
||||
my $slave = $dsn_parser->parse("h=$_", $dsn);
|
||||
$slave->{source} = 'processlist';
|
||||
@@ -3748,13 +3777,15 @@ sub _find_slaves_by_processlist {
|
||||
}
|
||||
grep { $_ }
|
||||
map {
|
||||
my ( $host ) = $_->{host} =~ m/^([^:]+):/;
|
||||
$host ||= $_->{host};
|
||||
my ( $host ) = $_->{host} =~ m/^(.*):\d+$/;
|
||||
if ( $host eq 'localhost' ) {
|
||||
$host = '127.0.0.1'; # Replication never uses sockets.
|
||||
}
|
||||
if ($host =~ m/::/) {
|
||||
$host = '['.$host.']';
|
||||
}
|
||||
$host;
|
||||
} $self->get_connected_slaves($dbh);
|
||||
} @$connected_slaves;
|
||||
|
||||
return @slaves;
|
||||
}
|
||||
@@ -3893,13 +3924,20 @@ sub get_slave_status {
|
||||
if (!$self->{channel}) {
|
||||
die 'This server returned more than one row for SHOW SLAVE STATUS but "channel" was not specified on the command line';
|
||||
}
|
||||
my $slave_use_channels;
|
||||
for my $row (@$sss_rows) {
|
||||
$row = { map { lc($_) => $row->{$_} } keys %$row }; # lowercase the keys
|
||||
if ($row->{channel_name}) {
|
||||
$slave_use_channels = 1;
|
||||
}
|
||||
if ($row->{channel_name} eq $self->{channel}) {
|
||||
$ss = $row;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if (!$ss && $slave_use_channels) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
}
|
||||
} else {
|
||||
if ($sss_rows->[0]->{channel_name} && $sss_rows->[0]->{channel_name} ne $self->{channel}) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
@@ -3912,6 +3950,9 @@ sub get_slave_status {
|
||||
$ss = { map { lc($_) => $ss->{$_} } keys %$ss }; # lowercase the keys
|
||||
return $ss;
|
||||
}
|
||||
if (!$ss && $self->{channel}) {
|
||||
die "Specified channel name is invalid";
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('This server returns nothing for SHOW SLAVE STATUS');
|
||||
|
@@ -43,7 +43,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -1945,7 +1945,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -2153,6 +2153,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
|
@@ -42,7 +42,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -2289,7 +2289,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -2497,6 +2497,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
|
@@ -38,7 +38,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
|
@@ -39,7 +39,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -766,7 +766,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -974,6 +974,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
|
26
bin/pt-find
26
bin/pt-find
@@ -35,7 +35,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -177,7 +177,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -385,6 +385,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
|
@@ -37,7 +37,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -1441,7 +1441,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -1649,6 +1649,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
|
@@ -44,7 +44,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -312,7 +312,13 @@ sub find_slave_hosts {
|
||||
|
||||
sub _find_slaves_by_processlist {
|
||||
my ( $self, $dsn_parser, $dbh, $dsn ) = @_;
|
||||
my @connected_slaves = $self->get_connected_slaves($dbh);
|
||||
my @slaves = $self->_process_slaves_list($dsn_parser, $dsn, \@connected_slaves);
|
||||
return @slaves;
|
||||
}
|
||||
|
||||
sub _process_slaves_list {
|
||||
my ($self, $dsn_parser, $dsn, $connected_slaves) = @_;
|
||||
my @slaves = map {
|
||||
my $slave = $dsn_parser->parse("h=$_", $dsn);
|
||||
$slave->{source} = 'processlist';
|
||||
@@ -320,13 +326,15 @@ sub _find_slaves_by_processlist {
|
||||
}
|
||||
grep { $_ }
|
||||
map {
|
||||
my ( $host ) = $_->{host} =~ m/^([^:]+):/;
|
||||
$host ||= $_->{host};
|
||||
my ( $host ) = $_->{host} =~ m/^(.*):\d+$/;
|
||||
if ( $host eq 'localhost' ) {
|
||||
$host = '127.0.0.1'; # Replication never uses sockets.
|
||||
}
|
||||
if ($host =~ m/::/) {
|
||||
$host = '['.$host.']';
|
||||
}
|
||||
$host;
|
||||
} $self->get_connected_slaves($dbh);
|
||||
} @$connected_slaves;
|
||||
|
||||
return @slaves;
|
||||
}
|
||||
@@ -465,13 +473,20 @@ sub get_slave_status {
|
||||
if (!$self->{channel}) {
|
||||
die 'This server returned more than one row for SHOW SLAVE STATUS but "channel" was not specified on the command line';
|
||||
}
|
||||
my $slave_use_channels;
|
||||
for my $row (@$sss_rows) {
|
||||
$row = { map { lc($_) => $row->{$_} } keys %$row }; # lowercase the keys
|
||||
if ($row->{channel_name}) {
|
||||
$slave_use_channels = 1;
|
||||
}
|
||||
if ($row->{channel_name} eq $self->{channel}) {
|
||||
$ss = $row;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if (!$ss && $slave_use_channels) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
}
|
||||
} else {
|
||||
if ($sss_rows->[0]->{channel_name} && $sss_rows->[0]->{channel_name} ne $self->{channel}) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
@@ -484,6 +499,9 @@ sub get_slave_status {
|
||||
$ss = { map { lc($_) => $ss->{$_} } keys %$ss }; # lowercase the keys
|
||||
return $ss;
|
||||
}
|
||||
if (!$ss && $self->{channel}) {
|
||||
die "Specified channel name is invalid";
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('This server returns nothing for SHOW SLAVE STATUS');
|
||||
@@ -2743,7 +2761,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -2883,7 +2901,7 @@ sub get_dbh {
|
||||
my $dbh;
|
||||
my $tries = 2;
|
||||
while ( !$dbh && $tries-- ) {
|
||||
PTDEBUG && _d($cxn_string, ' ', $user, ' ', $pass,
|
||||
PTDEBUG && _d($cxn_string, ' ', $user, ' ', $pass,
|
||||
join(', ', map { "$_=>$defaults->{$_}" } keys %$defaults ));
|
||||
|
||||
$dbh = eval { DBI->connect($cxn_string, $user, $pass, $defaults) };
|
||||
@@ -2951,6 +2969,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
@@ -3059,7 +3099,7 @@ sub set_vars {
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
sub _d {
|
||||
|
@@ -45,7 +45,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -187,7 +187,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -395,6 +395,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
|
50
bin/pt-kill
50
bin/pt-kill
@@ -47,7 +47,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -1949,7 +1949,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -2157,6 +2157,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
@@ -4018,7 +4040,13 @@ sub find_slave_hosts {
|
||||
|
||||
sub _find_slaves_by_processlist {
|
||||
my ( $self, $dsn_parser, $dbh, $dsn ) = @_;
|
||||
my @connected_slaves = $self->get_connected_slaves($dbh);
|
||||
my @slaves = $self->_process_slaves_list($dsn_parser, $dsn, \@connected_slaves);
|
||||
return @slaves;
|
||||
}
|
||||
|
||||
sub _process_slaves_list {
|
||||
my ($self, $dsn_parser, $dsn, $connected_slaves) = @_;
|
||||
my @slaves = map {
|
||||
my $slave = $dsn_parser->parse("h=$_", $dsn);
|
||||
$slave->{source} = 'processlist';
|
||||
@@ -4026,13 +4054,15 @@ sub _find_slaves_by_processlist {
|
||||
}
|
||||
grep { $_ }
|
||||
map {
|
||||
my ( $host ) = $_->{host} =~ m/^([^:]+):/;
|
||||
$host ||= $_->{host};
|
||||
my ( $host ) = $_->{host} =~ m/^(.*):\d+$/;
|
||||
if ( $host eq 'localhost' ) {
|
||||
$host = '127.0.0.1'; # Replication never uses sockets.
|
||||
}
|
||||
if ($host =~ m/::/) {
|
||||
$host = '['.$host.']';
|
||||
}
|
||||
$host;
|
||||
} $self->get_connected_slaves($dbh);
|
||||
} @$connected_slaves;
|
||||
|
||||
return @slaves;
|
||||
}
|
||||
@@ -4171,13 +4201,20 @@ sub get_slave_status {
|
||||
if (!$self->{channel}) {
|
||||
die 'This server returned more than one row for SHOW SLAVE STATUS but "channel" was not specified on the command line';
|
||||
}
|
||||
my $slave_use_channels;
|
||||
for my $row (@$sss_rows) {
|
||||
$row = { map { lc($_) => $row->{$_} } keys %$row }; # lowercase the keys
|
||||
if ($row->{channel_name}) {
|
||||
$slave_use_channels = 1;
|
||||
}
|
||||
if ($row->{channel_name} eq $self->{channel}) {
|
||||
$ss = $row;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if (!$ss && $slave_use_channels) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
}
|
||||
} else {
|
||||
if ($sss_rows->[0]->{channel_name} && $sss_rows->[0]->{channel_name} ne $self->{channel}) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
@@ -4190,6 +4227,9 @@ sub get_slave_status {
|
||||
$ss = { map { lc($_) => $ss->{$_} } keys %$ss }; # lowercase the keys
|
||||
return $ss;
|
||||
}
|
||||
if (!$ss && $self->{channel}) {
|
||||
die "Specified channel name is invalid";
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('This server returns nothing for SHOW SLAVE STATUS');
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -64,7 +64,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -855,7 +855,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -1063,6 +1063,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
@@ -3640,6 +3662,7 @@ sub parse_event {
|
||||
$pos_in_log -= 1 if $pos_in_log;
|
||||
|
||||
$raw_packet =~ s/\n20\Z//;
|
||||
$raw_packet = "20$raw_packet" if $raw_packet =~ /\A20-\d\d-\d\d/; # workaround for year 2020 problem
|
||||
$raw_packet = "20$raw_packet" unless $raw_packet =~ m/\A20/;
|
||||
|
||||
$raw_packet =~ s/0x0000:.+?(450.) /0x0000: $1 /;
|
||||
@@ -10666,7 +10689,13 @@ sub find_slave_hosts {
|
||||
|
||||
sub _find_slaves_by_processlist {
|
||||
my ( $self, $dsn_parser, $dbh, $dsn ) = @_;
|
||||
my @connected_slaves = $self->get_connected_slaves($dbh);
|
||||
my @slaves = $self->_process_slaves_list($dsn_parser, $dsn, \@connected_slaves);
|
||||
return @slaves;
|
||||
}
|
||||
|
||||
sub _process_slaves_list {
|
||||
my ($self, $dsn_parser, $dsn, $connected_slaves) = @_;
|
||||
my @slaves = map {
|
||||
my $slave = $dsn_parser->parse("h=$_", $dsn);
|
||||
$slave->{source} = 'processlist';
|
||||
@@ -10674,13 +10703,15 @@ sub _find_slaves_by_processlist {
|
||||
}
|
||||
grep { $_ }
|
||||
map {
|
||||
my ( $host ) = $_->{host} =~ m/^([^:]+):/;
|
||||
$host ||= $_->{host};
|
||||
my ( $host ) = $_->{host} =~ m/^(.*):\d+$/;
|
||||
if ( $host eq 'localhost' ) {
|
||||
$host = '127.0.0.1'; # Replication never uses sockets.
|
||||
}
|
||||
if ($host =~ m/::/) {
|
||||
$host = '['.$host.']';
|
||||
}
|
||||
$host;
|
||||
} $self->get_connected_slaves($dbh);
|
||||
} @$connected_slaves;
|
||||
|
||||
return @slaves;
|
||||
}
|
||||
@@ -10819,13 +10850,20 @@ sub get_slave_status {
|
||||
if (!$self->{channel}) {
|
||||
die 'This server returned more than one row for SHOW SLAVE STATUS but "channel" was not specified on the command line';
|
||||
}
|
||||
my $slave_use_channels;
|
||||
for my $row (@$sss_rows) {
|
||||
$row = { map { lc($_) => $row->{$_} } keys %$row }; # lowercase the keys
|
||||
if ($row->{channel_name}) {
|
||||
$slave_use_channels = 1;
|
||||
}
|
||||
if ($row->{channel_name} eq $self->{channel}) {
|
||||
$ss = $row;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if (!$ss && $slave_use_channels) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
}
|
||||
} else {
|
||||
if ($sss_rows->[0]->{channel_name} && $sss_rows->[0]->{channel_name} ne $self->{channel}) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
@@ -10838,6 +10876,9 @@ sub get_slave_status {
|
||||
$ss = { map { lc($_) => $ss->{$_} } keys %$ss }; # lowercase the keys
|
||||
return $ss;
|
||||
}
|
||||
if (!$ss && $self->{channel}) {
|
||||
die "Specified channel name is invalid";
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('This server returns nothing for SHOW SLAVE STATUS');
|
||||
|
@@ -1221,7 +1221,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -1361,7 +1361,7 @@ sub get_dbh {
|
||||
my $dbh;
|
||||
my $tries = 2;
|
||||
while ( !$dbh && $tries-- ) {
|
||||
PTDEBUG && _d($cxn_string, ' ', $user, ' ', $pass,
|
||||
PTDEBUG && _d($cxn_string, ' ', $user, ' ', $pass,
|
||||
join(', ', map { "$_=>$defaults->{$_}" } keys %$defaults ));
|
||||
|
||||
$dbh = eval { DBI->connect($cxn_string, $user, $pass, $defaults) };
|
||||
@@ -1429,6 +1429,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
@@ -1537,7 +1559,7 @@ sub set_vars {
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
sub _d {
|
||||
|
@@ -40,7 +40,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -1942,7 +1942,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -2150,6 +2150,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
|
@@ -1877,7 +1877,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -2085,6 +2085,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
@@ -2426,7 +2448,13 @@ sub find_slave_hosts {
|
||||
|
||||
sub _find_slaves_by_processlist {
|
||||
my ( $self, $dsn_parser, $dbh, $dsn ) = @_;
|
||||
my @connected_slaves = $self->get_connected_slaves($dbh);
|
||||
my @slaves = $self->_process_slaves_list($dsn_parser, $dsn, \@connected_slaves);
|
||||
return @slaves;
|
||||
}
|
||||
|
||||
sub _process_slaves_list {
|
||||
my ($self, $dsn_parser, $dsn, $connected_slaves) = @_;
|
||||
my @slaves = map {
|
||||
my $slave = $dsn_parser->parse("h=$_", $dsn);
|
||||
$slave->{source} = 'processlist';
|
||||
@@ -2434,13 +2462,15 @@ sub _find_slaves_by_processlist {
|
||||
}
|
||||
grep { $_ }
|
||||
map {
|
||||
my ( $host ) = $_->{host} =~ m/^([^:]+):/;
|
||||
$host ||= $_->{host};
|
||||
my ( $host ) = $_->{host} =~ m/^(.*):\d+$/;
|
||||
if ( $host eq 'localhost' ) {
|
||||
$host = '127.0.0.1'; # Replication never uses sockets.
|
||||
}
|
||||
if ($host =~ m/::/) {
|
||||
$host = '['.$host.']';
|
||||
}
|
||||
$host;
|
||||
} $self->get_connected_slaves($dbh);
|
||||
} @$connected_slaves;
|
||||
|
||||
return @slaves;
|
||||
}
|
||||
@@ -2579,13 +2609,20 @@ sub get_slave_status {
|
||||
if (!$self->{channel}) {
|
||||
die 'This server returned more than one row for SHOW SLAVE STATUS but "channel" was not specified on the command line';
|
||||
}
|
||||
my $slave_use_channels;
|
||||
for my $row (@$sss_rows) {
|
||||
$row = { map { lc($_) => $row->{$_} } keys %$row }; # lowercase the keys
|
||||
if ($row->{channel_name}) {
|
||||
$slave_use_channels = 1;
|
||||
}
|
||||
if ($row->{channel_name} eq $self->{channel}) {
|
||||
$ss = $row;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if (!$ss && $slave_use_channels) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
}
|
||||
} else {
|
||||
if ($sss_rows->[0]->{channel_name} && $sss_rows->[0]->{channel_name} ne $self->{channel}) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
@@ -2598,6 +2635,9 @@ sub get_slave_status {
|
||||
$ss = { map { lc($_) => $ss->{$_} } keys %$ss }; # lowercase the keys
|
||||
return $ss;
|
||||
}
|
||||
if (!$ss && $self->{channel}) {
|
||||
die "Specified channel name is invalid";
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('This server returns nothing for SHOW SLAVE STATUS');
|
||||
|
@@ -41,7 +41,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -2288,7 +2288,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -2496,6 +2496,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
@@ -2837,7 +2859,13 @@ sub find_slave_hosts {
|
||||
|
||||
sub _find_slaves_by_processlist {
|
||||
my ( $self, $dsn_parser, $dbh, $dsn ) = @_;
|
||||
my @connected_slaves = $self->get_connected_slaves($dbh);
|
||||
my @slaves = $self->_process_slaves_list($dsn_parser, $dsn, \@connected_slaves);
|
||||
return @slaves;
|
||||
}
|
||||
|
||||
sub _process_slaves_list {
|
||||
my ($self, $dsn_parser, $dsn, $connected_slaves) = @_;
|
||||
my @slaves = map {
|
||||
my $slave = $dsn_parser->parse("h=$_", $dsn);
|
||||
$slave->{source} = 'processlist';
|
||||
@@ -2845,13 +2873,15 @@ sub _find_slaves_by_processlist {
|
||||
}
|
||||
grep { $_ }
|
||||
map {
|
||||
my ( $host ) = $_->{host} =~ m/^([^:]+):/;
|
||||
$host ||= $_->{host};
|
||||
my ( $host ) = $_->{host} =~ m/^(.*):\d+$/;
|
||||
if ( $host eq 'localhost' ) {
|
||||
$host = '127.0.0.1'; # Replication never uses sockets.
|
||||
}
|
||||
if ($host =~ m/::/) {
|
||||
$host = '['.$host.']';
|
||||
}
|
||||
$host;
|
||||
} $self->get_connected_slaves($dbh);
|
||||
} @$connected_slaves;
|
||||
|
||||
return @slaves;
|
||||
}
|
||||
@@ -2990,13 +3020,20 @@ sub get_slave_status {
|
||||
if (!$self->{channel}) {
|
||||
die 'This server returned more than one row for SHOW SLAVE STATUS but "channel" was not specified on the command line';
|
||||
}
|
||||
my $slave_use_channels;
|
||||
for my $row (@$sss_rows) {
|
||||
$row = { map { lc($_) => $row->{$_} } keys %$row }; # lowercase the keys
|
||||
if ($row->{channel_name}) {
|
||||
$slave_use_channels = 1;
|
||||
}
|
||||
if ($row->{channel_name} eq $self->{channel}) {
|
||||
$ss = $row;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if (!$ss && $slave_use_channels) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
}
|
||||
} else {
|
||||
if ($sss_rows->[0]->{channel_name} && $sss_rows->[0]->{channel_name} ne $self->{channel}) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
@@ -3009,6 +3046,9 @@ sub get_slave_status {
|
||||
$ss = { map { lc($_) => $ss->{$_} } keys %$ss }; # lowercase the keys
|
||||
return $ss;
|
||||
}
|
||||
if (!$ss && $self->{channel}) {
|
||||
die "Specified channel name is invalid";
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('This server returns nothing for SHOW SLAVE STATUS');
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -55,7 +55,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -2110,7 +2110,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -2137,7 +2137,6 @@ sub parse {
|
||||
}
|
||||
}
|
||||
|
||||
$self->{dsn_props} = \%final_props;
|
||||
return \%final_props;
|
||||
}
|
||||
|
||||
@@ -2319,18 +2318,26 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($self->{dsn_props}->{D} && $self->{dsn_props}->{t}) {
|
||||
PTDEBUG && _d("DSN has a schema and table: $self->{dsn_props}->{D}.$self->{dsn_props}->{t}");
|
||||
PTDEBUG && _d("Trying to set the default charset for the connection");
|
||||
my (undef, $create_table) = eval { $dbh->selectrow_array("SHOW CREATE TABLE $self->{dsn_props}->{D}.$self->{dsn_props}->{t}") };
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($create_table && $create_table =~ m/DEFAULT CHARSET=(\S+)\s*/) {
|
||||
PTDEBUG && _d("Detected table's character set: $1");
|
||||
PTDEBUG && _d("Executing: SET NAMES '$1'");
|
||||
$dbh->do("SET NAMES '$1'");
|
||||
} else {
|
||||
PTDEBUG && _d("Cannot get the default character set for the table");
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6498,7 +6505,7 @@ sub generate_cmp_where {
|
||||
push @clause, "($val IS NULL OR $quo $type $val)";
|
||||
}
|
||||
elsif ( $type =~ m/>/ ) {
|
||||
push @clause, "(($val IS NULL AND $quo IS NOT NULL) OR ($quo $cmp $val)";
|
||||
push @clause, "($val IS NULL AND $quo IS NOT NULL) OR ($quo $cmp $val)";
|
||||
}
|
||||
else { # If $type =~ m/</ ) {
|
||||
push @clauses, "(($val IS NOT NULL AND $quo IS NULL) OR ($quo $cmp $val))";
|
||||
@@ -6512,7 +6519,7 @@ sub generate_cmp_where {
|
||||
push @clause, ($type =~ m/=/ && $end ? "$quo $type $val" : "$quo $cmp $val");
|
||||
}
|
||||
|
||||
push @clauses, '(' . join(' AND ', @clause) . ')';
|
||||
push @clauses, '(' . join(' AND ', @clause) . ')' if @clause;
|
||||
}
|
||||
my $result = '(' . join(' OR ', @clauses) . ')';
|
||||
my $where = {
|
||||
@@ -6839,7 +6846,13 @@ sub find_slave_hosts {
|
||||
|
||||
sub _find_slaves_by_processlist {
|
||||
my ( $self, $dsn_parser, $dbh, $dsn ) = @_;
|
||||
my @connected_slaves = $self->get_connected_slaves($dbh);
|
||||
my @slaves = $self->_process_slaves_list($dsn_parser, $dsn, \@connected_slaves);
|
||||
return @slaves;
|
||||
}
|
||||
|
||||
sub _process_slaves_list {
|
||||
my ($self, $dsn_parser, $dsn, $connected_slaves) = @_;
|
||||
my @slaves = map {
|
||||
my $slave = $dsn_parser->parse("h=$_", $dsn);
|
||||
$slave->{source} = 'processlist';
|
||||
@@ -6847,13 +6860,15 @@ sub _find_slaves_by_processlist {
|
||||
}
|
||||
grep { $_ }
|
||||
map {
|
||||
my ( $host ) = $_->{host} =~ m/^([^:]+):/;
|
||||
$host ||= $_->{host};
|
||||
my ( $host ) = $_->{host} =~ m/^(.*):\d+$/;
|
||||
if ( $host eq 'localhost' ) {
|
||||
$host = '127.0.0.1'; # Replication never uses sockets.
|
||||
}
|
||||
if ($host =~ m/::/) {
|
||||
$host = '['.$host.']';
|
||||
}
|
||||
$host;
|
||||
} $self->get_connected_slaves($dbh);
|
||||
} @$connected_slaves;
|
||||
|
||||
return @slaves;
|
||||
}
|
||||
@@ -6992,13 +7007,20 @@ sub get_slave_status {
|
||||
if (!$self->{channel}) {
|
||||
die 'This server returned more than one row for SHOW SLAVE STATUS but "channel" was not specified on the command line';
|
||||
}
|
||||
my $slave_use_channels;
|
||||
for my $row (@$sss_rows) {
|
||||
$row = { map { lc($_) => $row->{$_} } keys %$row }; # lowercase the keys
|
||||
if ($row->{channel_name}) {
|
||||
$slave_use_channels = 1;
|
||||
}
|
||||
if ($row->{channel_name} eq $self->{channel}) {
|
||||
$ss = $row;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if (!$ss && $slave_use_channels) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
}
|
||||
} else {
|
||||
if ($sss_rows->[0]->{channel_name} && $sss_rows->[0]->{channel_name} ne $self->{channel}) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
@@ -7011,6 +7033,9 @@ sub get_slave_status {
|
||||
$ss = { map { lc($_) => $ss->{$_} } keys %$ss }; # lowercase the keys
|
||||
return $ss;
|
||||
}
|
||||
if (!$ss && $self->{channel}) {
|
||||
die "Specified channel name is invalid";
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('This server returns nothing for SHOW SLAVE STATUS');
|
||||
|
@@ -129,7 +129,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -337,6 +337,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
|
@@ -61,7 +61,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -852,7 +852,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -1060,6 +1060,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
@@ -7698,6 +7720,7 @@ sub parse_event {
|
||||
$pos_in_log -= 1 if $pos_in_log;
|
||||
|
||||
$raw_packet =~ s/\n20\Z//;
|
||||
$raw_packet = "20$raw_packet" if $raw_packet =~ /\A20-\d\d-\d\d/; # workaround for year 2020 problem
|
||||
$raw_packet = "20$raw_packet" unless $raw_packet =~ m/\A20/;
|
||||
|
||||
$raw_packet =~ s/0x0000:.+?(450.) /0x0000: $1 /;
|
||||
|
@@ -44,7 +44,7 @@ BEGIN {
|
||||
{
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
@@ -1946,7 +1946,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -2154,6 +2154,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
|
@@ -1894,7 +1894,7 @@ sub parse {
|
||||
foreach my $key ( keys %$opts ) {
|
||||
PTDEBUG && _d('Finding value for', $key);
|
||||
$final_props{$key} = $given_props{$key};
|
||||
if ( !defined $final_props{$key}
|
||||
if ( !defined $final_props{$key}
|
||||
&& defined $prev->{$key} && $opts->{$key}->{copy} )
|
||||
{
|
||||
$final_props{$key} = $prev->{$key};
|
||||
@@ -2102,6 +2102,28 @@ sub get_dbh {
|
||||
. ": $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
my ($mysql_version) = eval { $dbh->selectrow_array('SELECT VERSION()') };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL version: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
my (undef, $character_set_server) = eval { $dbh->selectrow_array("SHOW VARIABLES LIKE 'character_set_server'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot get MySQL var character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
|
||||
if ($mysql_version =~ m/^(\d+)\.(\d)\.(\d+).*/) {
|
||||
if ($1 >= 8 && $character_set_server =~ m/^utf8/) {
|
||||
$dbh->{mysql_enable_utf8} = 1;
|
||||
my $msg = "MySQL version $mysql_version >= 8 and character_set_server = $character_set_server\n".
|
||||
"Setting: SET NAMES $character_set_server";
|
||||
PTDEBUG && _d($msg);
|
||||
eval { $dbh->do("SET NAMES 'utf8mb4'") };
|
||||
if ($EVAL_ERROR) {
|
||||
die "Cannot SET NAMES $character_set_server: $EVAL_ERROR";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('DBH info: ',
|
||||
$dbh,
|
||||
|
@@ -143,6 +143,34 @@ services:
|
||||
- configsvr1
|
||||
# - configsvr2
|
||||
# - configsvr3
|
||||
postgres9:
|
||||
image: ${POSTGRE_IMAGE:-postgres:9.6}
|
||||
container_name: go_postgres9_1
|
||||
ports:
|
||||
- ${POSTGRE_HOST:-127.0.0.1}:${POSTGRE_96_PORT:-6432}:5432
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=root
|
||||
postgres10:
|
||||
image: ${POSTGRE_IMAGE:-postgres:10.7}
|
||||
container_name: go_postgres10_1
|
||||
ports:
|
||||
- ${POSTGRE_HOST:-127.0.0.1}:${POSTGRE_10_PORT:-6433}:5432
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=root
|
||||
postgres11:
|
||||
image: ${POSTGRE_IMAGE:-postgres:11}
|
||||
container_name: go_postgres11_1
|
||||
ports:
|
||||
- ${POSTGRE_HOST:-127.0.0.1}:${POSTGRE_11_PORT:-6434}:5432
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=root
|
||||
postgres12:
|
||||
image: ${POSTGRE_IMAGE:-postgres:12}
|
||||
container_name: go_postgres12_1
|
||||
ports:
|
||||
- ${POSTGRE_HOST:-127.0.0.1}:${POSTGRE_12_PORT:-6435}:5432
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=root
|
||||
init:
|
||||
network_mode: host
|
||||
image: ${TEST_MONGODB_FLAVOR}:${TEST_PSMDB_VERSION}
|
||||
@@ -166,6 +194,10 @@ services:
|
||||
- s3-mongo2
|
||||
- s3-mongo3
|
||||
- standalone
|
||||
- postgres9
|
||||
- postgres10
|
||||
- postgres11
|
||||
- postgres12
|
||||
test:
|
||||
build:
|
||||
dockerfile: docker/test/Dockerfile
|
||||
|
@@ -489,6 +489,13 @@ Percona Toolkit officially supports and is tested on many popular Linux
|
||||
distributions and MySQL 5.0 through 5.6; see http://goo.gl/srHm7 for the
|
||||
list of supported platforms and versions.
|
||||
|
||||
=head1 IPv6 support
|
||||
|
||||
In order to support IPv6 addresses to connect to MySQL, Perl DBD::MySQL driver v4.033_01 is
|
||||
required. Also, as stated in RFC 3986 L<https://www.ietf.org/rfc/rfc3986.txt> section 3.2.2
|
||||
brackes must be used to distinguish host and port.
|
||||
Examples: L<https://metacpan.org/pod/DBD::mysql#port>
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
Please report bugs at L<https://jira.percona.com>.
|
||||
|
@@ -1,6 +1,29 @@
|
||||
Percona Toolkit
|
||||
***************
|
||||
|
||||
v3.2.0 released 2019-04-20
|
||||
==========================
|
||||
|
||||
Improvements:
|
||||
|
||||
* :jirabug:`PT-1765`: Added documentation for ``DIFF_ROWS`` in ``pt-table-checksum``.
|
||||
* :jirabug:`PT-1757`: ``pt-table-checksum``: Improved handling of Small Tables.
|
||||
* :jirabug:`PT-1707`: Added support for IPv6 addresses.
|
||||
|
||||
Bug fixes:
|
||||
|
||||
* :jirabug:`PT-1824`: Added 64-character constraint name limit. (Thank you Iwo Panowicz).
|
||||
* :jirabug:`PT-1793`: Protocol parser now handles the year 2020. (Thank you Kei Tsuchiya).
|
||||
* :jirabug:`PT-1782`: ``pt-online-schema-change``: No longer FK warning if no foreign keys.
|
||||
* :jirabug:`PT-1773`: ``pt-online-schema-change``: FK check restricted if needed.
|
||||
* :jirabug:`PT-1766`: ``pt-table-checksum``: ``DIFF_ROWS`` now computed correctly.
|
||||
* :jirabug:`PT-1760`: ``pt-online-schema-change`` no longer stalls for stopped replica when slave is active.
|
||||
* :jirabug:`PT-1759`: ``pt-stalk`` now collecting ``processlist`` and variables.
|
||||
* :jirabug:`PT-1576`: ``pt-stalk mysql-only`` now working as expected.
|
||||
* :jirabug:`PT-1502`: ``pt-online-schema-change`` now working with multi-source replication.
|
||||
* :jirabug:`PT-297` : ``pt-online-schema-change`` doesn't break replication.
|
||||
|
||||
|
||||
v3.0.13 released 2019-01-03
|
||||
===========================
|
||||
|
||||
|
@@ -230,7 +230,7 @@ sub name {
|
||||
|
||||
sub description {
|
||||
my ($self) = @_;
|
||||
return sprintf("%s -> %s:%s", $self->name(), $self->{dsn}->{h}, $self->{dsn}->{P} || 'socket');
|
||||
return sprintf("%s -> %s:%s", $self->name(), $self->{dsn}->{h} || 'localhost' , $self->{dsn}->{P} || 'socket');
|
||||
}
|
||||
|
||||
# This returns the server_id.
|
||||
|
@@ -263,7 +263,13 @@ sub find_slave_hosts {
|
||||
|
||||
sub _find_slaves_by_processlist {
|
||||
my ( $self, $dsn_parser, $dbh, $dsn ) = @_;
|
||||
my @connected_slaves = $self->get_connected_slaves($dbh);
|
||||
my @slaves = $self->_process_slaves_list($dsn_parser, $dsn, \@connected_slaves);
|
||||
return @slaves;
|
||||
}
|
||||
|
||||
sub _process_slaves_list {
|
||||
my ($self, $dsn_parser, $dsn, $connected_slaves) = @_;
|
||||
my @slaves = map {
|
||||
my $slave = $dsn_parser->parse("h=$_", $dsn);
|
||||
$slave->{source} = 'processlist';
|
||||
@@ -271,13 +277,15 @@ sub _find_slaves_by_processlist {
|
||||
}
|
||||
grep { $_ }
|
||||
map {
|
||||
my ( $host ) = $_->{host} =~ m/^([^:]+):/;
|
||||
$host ||= $_->{host};
|
||||
my ( $host ) = $_->{host} =~ m/^(.*):\d+$/;
|
||||
if ( $host eq 'localhost' ) {
|
||||
$host = '127.0.0.1'; # Replication never uses sockets.
|
||||
}
|
||||
if ($host =~ m/::/) {
|
||||
$host = '['.$host.']';
|
||||
}
|
||||
$host;
|
||||
} $self->get_connected_slaves($dbh);
|
||||
} @$connected_slaves;
|
||||
|
||||
return @slaves;
|
||||
}
|
||||
@@ -449,13 +457,20 @@ sub get_slave_status {
|
||||
if (!$self->{channel}) {
|
||||
die 'This server returned more than one row for SHOW SLAVE STATUS but "channel" was not specified on the command line';
|
||||
}
|
||||
my $slave_use_channels;
|
||||
for my $row (@$sss_rows) {
|
||||
$row = { map { lc($_) => $row->{$_} } keys %$row }; # lowercase the keys
|
||||
if ($row->{channel_name}) {
|
||||
$slave_use_channels = 1;
|
||||
}
|
||||
if ($row->{channel_name} eq $self->{channel}) {
|
||||
$ss = $row;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if (!$ss && $slave_use_channels) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
}
|
||||
} else {
|
||||
if ($sss_rows->[0]->{channel_name} && $sss_rows->[0]->{channel_name} ne $self->{channel}) {
|
||||
die 'This server is using replication channels but "channel" was not specified on the command line';
|
||||
@@ -468,6 +483,9 @@ sub get_slave_status {
|
||||
$ss = { map { lc($_) => $ss->{$_} } keys %$ss }; # lowercase the keys
|
||||
return $ss;
|
||||
}
|
||||
if (!$ss && $self->{channel}) {
|
||||
die "Specified channel name is invalid";
|
||||
}
|
||||
}
|
||||
|
||||
PTDEBUG && _d('This server returns nothing for SHOW SLAVE STATUS');
|
||||
|
@@ -18,7 +18,7 @@
|
||||
# ###########################################################################
|
||||
package Percona::Toolkit;
|
||||
|
||||
our $VERSION = '3.1.0';
|
||||
our $VERSION = '3.0.14-dev';
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
|
@@ -197,7 +197,7 @@ sub generate_cmp_where {
|
||||
push @clause, "($val IS NULL OR $quo $type $val)";
|
||||
}
|
||||
elsif ( $type =~ m/>/ ) {
|
||||
push @clause, "(($val IS NULL AND $quo IS NOT NULL) OR ($quo $cmp $val)";
|
||||
push @clause, "($val IS NULL AND $quo IS NOT NULL) OR ($quo $cmp $val)";
|
||||
}
|
||||
else { # If $type =~ m/</ ) {
|
||||
push @clauses, "(($val IS NOT NULL AND $quo IS NULL) OR ($quo $cmp $val))";
|
||||
@@ -212,7 +212,7 @@ sub generate_cmp_where {
|
||||
}
|
||||
|
||||
# Add the clause to the larger WHERE clause.
|
||||
push @clauses, '(' . join(' AND ', @clause) . ')';
|
||||
push @clauses, '(' . join(' AND ', @clause) . ')' if @clause;
|
||||
}
|
||||
my $result = '(' . join(' OR ', @clauses) . ')';
|
||||
my $where = {
|
||||
|
@@ -88,6 +88,7 @@ sub parse_event {
|
||||
# Remove the separator from the packet, and restore it to the front if
|
||||
# necessary.
|
||||
$raw_packet =~ s/\n20\Z//;
|
||||
$raw_packet = "20$raw_packet" if $raw_packet =~ /\A20-\d\d-\d\d/; # workaround for year 2020 problem
|
||||
$raw_packet = "20$raw_packet" unless $raw_packet =~ m/\A20/;
|
||||
|
||||
# Remove special headers (e.g. vlan) before the IPv4 header.
|
||||
|
15
run-tests.sh
Executable file
15
run-tests.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||
MYSQL_VERSION=$(mysql -ss -e "SHOW VARIABLES LIKE 'version'" | cut -f2)
|
||||
LOG_FILE=~/${BRANCH}-${MYSQL_VERSION}.log
|
||||
|
||||
truncate --size=0 ${LOG_FILE}
|
||||
echo "Logging to $LOG_FILE"
|
||||
|
||||
for dir in t/*
|
||||
do
|
||||
echo "$dir"
|
||||
sandbox/test-env restart
|
||||
prove -vw --trap --timer "$dir" | tee -a $LOG_FILE
|
||||
done
|
13
runtests.sh
Executable file
13
runtests.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
MYSQL_VERSION=$(mysql -ss -e "SELECT VERSION()")
|
||||
LOGFILE=${HOME}/pt-tests-$(git rev-parse --abbrev-ref HEAD)-mysql-${MYSQL_VERSION}.log
|
||||
echo "" > ${LOGFILE}
|
||||
|
||||
export PERCONA_TOOLKIT_SANDBOX=${HOME}/mysql/my-5.7
|
||||
for d in $(ls -d t/*)
|
||||
do
|
||||
sandbox/test-env restart
|
||||
prove -vw $d | tee -a ${LOGFILE}
|
||||
done
|
||||
|
BIN
sandbox/servers/mariadb/10.4/data.tar.gz
Normal file
BIN
sandbox/servers/mariadb/10.4/data.tar.gz
Normal file
Binary file not shown.
29
sandbox/servers/mariadb/10.4/my.sandbox.cnf
Normal file
29
sandbox/servers/mariadb/10.4/my.sandbox.cnf
Normal file
@@ -0,0 +1,29 @@
|
||||
[client]
|
||||
user = msandbox
|
||||
password = msandbox
|
||||
port = PORT
|
||||
socket = /tmp/PORT/mysql_sandboxPORT.sock
|
||||
|
||||
[mysqld]
|
||||
port = PORT
|
||||
socket = /tmp/PORT/mysql_sandboxPORT.sock
|
||||
pid-file = /tmp/PORT/data/mysql_sandboxPORT.pid
|
||||
basedir = PERCONA_TOOLKIT_SANDBOX
|
||||
datadir = /tmp/PORT/data
|
||||
key_buffer_size = 16M
|
||||
innodb_buffer_pool_size = 16M
|
||||
innodb_data_home_dir = /tmp/PORT/data
|
||||
innodb_log_group_home_dir = /tmp/PORT/data
|
||||
innodb_data_file_path = ibdata1:10M:autoextend
|
||||
innodb_log_file_size = 64M
|
||||
log-bin = mysql-bin
|
||||
relay_log = mysql-relay-bin
|
||||
log_slave_updates
|
||||
server-id = PORT
|
||||
report-host = 127.0.0.1
|
||||
report-port = PORT
|
||||
log-error = /tmp/PORT/data/mysqld.log
|
||||
innodb_lock_wait_timeout = 3
|
||||
general_log
|
||||
general_log_file = genlog
|
||||
performance_schema = ON
|
627
sandbox/servers/mariadb/10.4/system_idb_tables.sql
Normal file
627
sandbox/servers/mariadb/10.4/system_idb_tables.sql
Normal file
@@ -0,0 +1,627 @@
|
||||
USE `mysql`;
|
||||
|
||||
-- MySQL dump 10.16 Distrib 10.1.21-MariaDB, for Linux (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: localhost
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.1.21-MariaDB
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `column_stats`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `column_stats` (
|
||||
`db_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`column_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`min_value` varbinary(255) DEFAULT NULL,
|
||||
`max_value` varbinary(255) DEFAULT NULL,
|
||||
`nulls_ratio` decimal(12,4) DEFAULT NULL,
|
||||
`avg_length` decimal(12,4) DEFAULT NULL,
|
||||
`avg_frequency` decimal(12,4) DEFAULT NULL,
|
||||
`hist_size` tinyint(3) unsigned DEFAULT NULL,
|
||||
`hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB') COLLATE utf8_bin DEFAULT NULL,
|
||||
`histogram` varbinary(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`db_name`,`table_name`,`column_name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Statistics on Columns';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `columns_priv`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `columns_priv` (
|
||||
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Column_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`,`Column_name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Column privileges';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `db`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `db` (
|
||||
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
PRIMARY KEY (`Host`,`Db`,`User`),
|
||||
KEY `User` (`User`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Database privileges';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `event`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `event` (
|
||||
`db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`name` char(64) NOT NULL DEFAULT '',
|
||||
`body` longblob NOT NULL,
|
||||
`definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`execute_at` datetime DEFAULT NULL,
|
||||
`interval_value` int(11) DEFAULT NULL,
|
||||
`interval_field` enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') DEFAULT NULL,
|
||||
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`last_executed` datetime DEFAULT NULL,
|
||||
`starts` datetime DEFAULT NULL,
|
||||
`ends` datetime DEFAULT NULL,
|
||||
`status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED',
|
||||
`on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP',
|
||||
`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '',
|
||||
`comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`originator` int(10) unsigned NOT NULL,
|
||||
`time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM',
|
||||
`character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`body_utf8` longblob,
|
||||
PRIMARY KEY (`db`,`name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Events';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `func`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `func` (
|
||||
`name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`ret` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`dl` char(128) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`type` enum('function','aggregate') CHARACTER SET utf8 NOT NULL,
|
||||
PRIMARY KEY (`name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User defined functions';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `gtid_slave_pos`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `gtid_slave_pos` (
|
||||
`domain_id` int(10) unsigned NOT NULL,
|
||||
`sub_id` bigint(20) unsigned NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
`seq_no` bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (`domain_id`,`sub_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Replication slave GTID position';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `help_category`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `help_category` (
|
||||
`help_category_id` smallint(5) unsigned NOT NULL,
|
||||
`name` char(64) NOT NULL,
|
||||
`parent_category_id` smallint(5) unsigned DEFAULT NULL,
|
||||
`url` text NOT NULL,
|
||||
PRIMARY KEY (`help_category_id`),
|
||||
UNIQUE KEY `name` (`name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='help categories';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `help_keyword`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `help_keyword` (
|
||||
`help_keyword_id` int(10) unsigned NOT NULL,
|
||||
`name` char(64) NOT NULL,
|
||||
PRIMARY KEY (`help_keyword_id`),
|
||||
UNIQUE KEY `name` (`name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='help keywords';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `help_relation`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `help_relation` (
|
||||
`help_topic_id` int(10) unsigned NOT NULL,
|
||||
`help_keyword_id` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`help_keyword_id`,`help_topic_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='keyword-topic relation';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `help_topic`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `help_topic` (
|
||||
`help_topic_id` int(10) unsigned NOT NULL,
|
||||
`name` char(64) NOT NULL,
|
||||
`help_category_id` smallint(5) unsigned NOT NULL,
|
||||
`description` text NOT NULL,
|
||||
`example` text NOT NULL,
|
||||
`url` text NOT NULL,
|
||||
PRIMARY KEY (`help_topic_id`),
|
||||
UNIQUE KEY `name` (`name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='help topics';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `host`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `host` (
|
||||
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
PRIMARY KEY (`Host`,`Db`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Host privileges; Merged with database privileges';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `index_stats`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `index_stats` (
|
||||
`db_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`index_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`prefix_arity` int(11) unsigned NOT NULL,
|
||||
`avg_frequency` decimal(12,4) DEFAULT NULL,
|
||||
PRIMARY KEY (`db_name`,`table_name`,`index_name`,`prefix_arity`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Statistics on Indexes';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `innodb_index_stats`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `innodb_index_stats` (
|
||||
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`index_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`stat_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`stat_value` bigint(20) unsigned NOT NULL,
|
||||
`sample_size` bigint(20) unsigned DEFAULT NULL,
|
||||
`stat_description` varchar(1024) COLLATE utf8_bin NOT NULL,
|
||||
PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `innodb_table_stats`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `innodb_table_stats` (
|
||||
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`n_rows` bigint(20) unsigned NOT NULL,
|
||||
`clustered_index_size` bigint(20) unsigned NOT NULL,
|
||||
`sum_of_other_index_sizes` bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (`database_name`,`table_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `plugin`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `plugin` (
|
||||
`name` varchar(64) NOT NULL DEFAULT '',
|
||||
`dl` varchar(128) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL plugins';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `proc`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `proc` (
|
||||
`db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`name` char(64) NOT NULL DEFAULT '',
|
||||
`type` enum('FUNCTION','PROCEDURE') NOT NULL,
|
||||
`specific_name` char(64) NOT NULL DEFAULT '',
|
||||
`language` enum('SQL') NOT NULL DEFAULT 'SQL',
|
||||
`sql_data_access` enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') NOT NULL DEFAULT 'CONTAINS_SQL',
|
||||
`is_deterministic` enum('YES','NO') NOT NULL DEFAULT 'NO',
|
||||
`security_type` enum('INVOKER','DEFINER') NOT NULL DEFAULT 'DEFINER',
|
||||
`param_list` blob NOT NULL,
|
||||
`returns` longblob NOT NULL,
|
||||
`body` longblob NOT NULL,
|
||||
`definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '',
|
||||
`comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
`character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`body_utf8` longblob,
|
||||
PRIMARY KEY (`db`,`name`,`type`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stored Procedures';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `procs_priv`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `procs_priv` (
|
||||
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Routine_name` char(64) CHARACTER SET utf8 NOT NULL DEFAULT '',
|
||||
`Routine_type` enum('FUNCTION','PROCEDURE') COLLATE utf8_bin NOT NULL,
|
||||
`Grantor` char(141) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Proc_priv` set('Execute','Alter Routine','Grant') CHARACTER SET utf8 NOT NULL DEFAULT '',
|
||||
`Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`Host`,`Db`,`User`,`Routine_name`,`Routine_type`),
|
||||
KEY `Grantor` (`Grantor`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Procedure privileges';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `proxies_priv`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `proxies_priv` (
|
||||
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Proxied_host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Proxied_user` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`With_grant` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`Grantor` char(141) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`Host`,`User`,`Proxied_host`,`Proxied_user`),
|
||||
KEY `Grantor` (`Grantor`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User proxy privileges';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `roles_mapping`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `roles_mapping` (
|
||||
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Role` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Admin_option` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
UNIQUE KEY `Host` (`Host`,`User`,`Role`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Granted roles';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `servers`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `servers` (
|
||||
`Server_name` char(64) NOT NULL DEFAULT '',
|
||||
`Host` char(64) NOT NULL DEFAULT '',
|
||||
`Db` char(64) NOT NULL DEFAULT '',
|
||||
`Username` char(80) NOT NULL DEFAULT '',
|
||||
`Password` char(64) NOT NULL DEFAULT '',
|
||||
`Port` int(4) NOT NULL DEFAULT '0',
|
||||
`Socket` char(64) NOT NULL DEFAULT '',
|
||||
`Wrapper` char(64) NOT NULL DEFAULT '',
|
||||
`Owner` char(64) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`Server_name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `table_stats`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `table_stats` (
|
||||
`db_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`cardinality` bigint(21) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`db_name`,`table_name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Statistics on Tables';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `tables_priv`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `tables_priv` (
|
||||
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Grantor` char(141) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') CHARACTER SET utf8 NOT NULL DEFAULT '',
|
||||
`Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`),
|
||||
KEY `Grantor` (`Grantor`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Table privileges';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `time_zone`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `time_zone` (
|
||||
`Time_zone_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`Use_leap_seconds` enum('Y','N') NOT NULL DEFAULT 'N',
|
||||
PRIMARY KEY (`Time_zone_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Time zones';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `time_zone_leap_second`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `time_zone_leap_second` (
|
||||
`Transition_time` bigint(20) NOT NULL,
|
||||
`Correction` int(11) NOT NULL,
|
||||
PRIMARY KEY (`Transition_time`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Leap seconds information for time zones';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `time_zone_name`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `time_zone_name` (
|
||||
`Name` char(64) NOT NULL,
|
||||
`Time_zone_id` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`Name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Time zone names';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `time_zone_transition`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `time_zone_transition` (
|
||||
`Time_zone_id` int(10) unsigned NOT NULL,
|
||||
`Transition_time` bigint(20) NOT NULL,
|
||||
`Transition_type_id` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`Time_zone_id`,`Transition_time`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Time zone transitions';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `time_zone_transition_type`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `time_zone_transition_type` (
|
||||
`Time_zone_id` int(10) unsigned NOT NULL,
|
||||
`Transition_type_id` int(10) unsigned NOT NULL,
|
||||
`Offset` int(11) NOT NULL DEFAULT '0',
|
||||
`Is_DST` tinyint(3) unsigned NOT NULL DEFAULT '0',
|
||||
`Abbreviation` char(8) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`Time_zone_id`,`Transition_type_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Time zone transition types';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `user`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `user` (
|
||||
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
|
||||
`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
|
||||
`ssl_cipher` blob NOT NULL,
|
||||
`x509_issuer` blob NOT NULL,
|
||||
`x509_subject` blob NOT NULL,
|
||||
`max_questions` int(11) unsigned NOT NULL DEFAULT '0',
|
||||
`max_updates` int(11) unsigned NOT NULL DEFAULT '0',
|
||||
`max_connections` int(11) unsigned NOT NULL DEFAULT '0',
|
||||
`max_user_connections` int(11) NOT NULL DEFAULT '0',
|
||||
`plugin` char(64) CHARACTER SET latin1 NOT NULL DEFAULT '',
|
||||
`authentication_string` text COLLATE utf8_bin NOT NULL,
|
||||
`password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`is_role` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
|
||||
`default_role` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`max_statement_time` decimal(12,6) NOT NULL DEFAULT '0.000000',
|
||||
PRIMARY KEY (`Host`,`User`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `general_log`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `general_log` (
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`thread_id` bigint(21) unsigned NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
`command_type` varchar(64) NOT NULL,
|
||||
`argument` mediumtext NOT NULL
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `slow_log`
|
||||
--
|
||||
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE IF NOT EXISTS `slow_log` (
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time(6) NOT NULL,
|
||||
`lock_time` time(6) NOT NULL,
|
||||
`rows_sent` int(11) NOT NULL,
|
||||
`rows_examined` int(11) NOT NULL,
|
||||
`db` varchar(512) NOT NULL,
|
||||
`last_insert_id` int(11) NOT NULL,
|
||||
`insert_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
`sql_text` mediumtext NOT NULL,
|
||||
`thread_id` bigint(21) unsigned NOT NULL,
|
||||
`rows_affected` int(11) NOT NULL
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2017-03-10 19:49:04
|
@@ -8,8 +8,8 @@ SET @@GLOBAL.GTID_MODE = ON;
|
||||
|
||||
CHANGE MASTER TO master_host='127.0.0.1', master_port=12345, master_user='msandbox', master_password='msandbox', master_auto_position=1 FOR CHANNEL 'masterchan1';
|
||||
|
||||
CHANGE MASTER TO master_host='127.0.0.1', master_port=12346, master_user='msandbox', master_password='msandbox', master_auto_position=1 FOR CHANNEL 'masterchan2';
|
||||
-- CHANGE MASTER TO master_host='127.0.0.1', master_port=12346, master_user='msandbox', master_password='msandbox', master_auto_position=1 FOR CHANNEL 'masterchan2';
|
||||
|
||||
START SLAVE for channel 'masterchan1';
|
||||
START SLAVE for channel 'masterchan2';
|
||||
-- START SLAVE for channel 'masterchan2';
|
||||
|
||||
|
26
src/go/.env
26
src/go/.env
@@ -1,26 +0,0 @@
|
||||
GOCACHE=
|
||||
GOLANG_DOCKERHUB_TAG=1.10-stretch
|
||||
TEST_MONGODB_ADMIN_USERNAME=admin
|
||||
TEST_MONGODB_ADMIN_PASSWORD=admin123456
|
||||
TEST_MONGODB_USERNAME=test
|
||||
TEST_MONGODB_PASSWORD=123456
|
||||
TEST_MONGODB_S1_RS=rs1
|
||||
TEST_MONGODB_STANDALONE_PORT=27017
|
||||
TEST_MONGODB_S1_PRIMARY_PORT=17001
|
||||
TEST_MONGODB_S1_SECONDARY1_PORT=17002
|
||||
TEST_MONGODB_S1_SECONDARY2_PORT=17003
|
||||
TEST_MONGODB_S2_RS=rs2
|
||||
TEST_MONGODB_S2_PRIMARY_PORT=17004
|
||||
TEST_MONGODB_S2_SECONDARY1_PORT=17005
|
||||
TEST_MONGODB_S2_SECONDARY2_PORT=17006
|
||||
TEST_MONGODB_S3_RS=rs3
|
||||
TEST_MONGODB_S3_PRIMARY_PORT=17021
|
||||
TEST_MONGODB_S3_SECONDARY1_PORT=17022
|
||||
TEST_MONGODB_S3_SECONDARY2_PORT=17023
|
||||
TEST_MONGODB_CONFIGSVR_RS=csReplSet
|
||||
TEST_MONGODB_CONFIGSVR1_PORT=17007
|
||||
TEST_MONGODB_CONFIGSVR2_PORT=17008
|
||||
TEST_MONGODB_CONFIGSVR3_PORT=17009
|
||||
TEST_MONGODB_MONGOS_PORT=17000
|
||||
TEST_PSMDB_VERSION=3.6
|
||||
TEST_MONGODB_FLAVOR=percona/percona-server-mongodb
|
@@ -1,10 +1,16 @@
|
||||
help: ## Display this help message.
|
||||
@echo "Please use \`make <target>\` where <target> is one of:"
|
||||
@grep '^[a-zA-Z]' $(MAKEFILE_LIST) | \
|
||||
awk -F ':.*?## ' 'NF==2 {printf " %-26s%s\n", $$1, $$2}'
|
||||
|
||||
GO := go
|
||||
pkgs = $(shell find . -type d -name "pt-*" -exec basename {} \;)
|
||||
pkgs = $(shell find . -type d -name "pt-*" -exec basename {} \;)
|
||||
VERSION=$(shell git describe --abbrev=0 --tags)
|
||||
BUILD=$(shell date +%FT%T%z)
|
||||
GOVERSION=$(shell go version | cut --delimiter=" " -f3)
|
||||
COMMIT=$(shell git rev-list -1 HEAD)
|
||||
GOUTILSDIR ?= $(GOPATH)/bin
|
||||
FILES = $(shell find . -type f -name '*.go' -not -path "./vendor/*")
|
||||
|
||||
PREFIX=$(shell pwd)
|
||||
TOP_DIR=$(shell git rev-parse --show-toplevel)
|
||||
@@ -91,7 +97,7 @@ endef
|
||||
env:
|
||||
@echo $(TEST_ENV) | tr ' ' '\n' >.env
|
||||
|
||||
test-cluster: env
|
||||
env-up: env ## Start MongoDB docker containers cluster
|
||||
TEST_PSMDB_VERSION=$(TEST_PSMDB_VERSION) \
|
||||
docker-compose up \
|
||||
--detach \
|
||||
@@ -101,40 +107,41 @@ test-cluster: env
|
||||
init
|
||||
docker/test/init-cluster-wait.sh
|
||||
|
||||
test-cluster-clean: env
|
||||
env-down: env ## Clean-up MongoDB docker containers cluster
|
||||
docker-compose down -v
|
||||
rm .env
|
||||
|
||||
linux-amd64:
|
||||
linux-amd64: ## Build Mongo tools for linux-amd64
|
||||
@echo "Building linux/amd64 binaries in ${BIN_DIR}"
|
||||
@cd ${TOP_DIR} && dep ensure
|
||||
@$(foreach pkg,$(pkgs),rm -f ${BIN_DIR}/$(pkg) 2> /dev/null;)
|
||||
@$(foreach pkg,$(pkgs),GOOS=linux GOARCH=amd64 go build -ldflags ${LDFLAGS} -o ${BIN_DIR}/$(pkg) ./$(pkg);)
|
||||
|
||||
linux-386:
|
||||
linux-386: ## Build Mongo tools for linux-386
|
||||
@echo "Building linux/386 binaries in ${BIN_DIR}"
|
||||
@cd ${TOP_DIR} && dep ensure
|
||||
@$(foreach pkg,$(pkgs),rm -f ${BIN_DIR}/$(pkg) 2> /dev/null;)
|
||||
@$(foreach pkg,$(pkgs),GOOS=linux GOARCH=386 go build -ldflags ${LDFLAGS} -o ${BIN_DIR}/$(pkg) ./$(pkg);)
|
||||
|
||||
darwin-amd64:
|
||||
darwin-amd64: ## Build Mongo tools for darwin-amd64 (MacOS)
|
||||
@echo "Building darwin/amd64 binaries in ${BIN_DIR}"
|
||||
@cd ${TOP_DIR} && dep ensure
|
||||
@$(foreach pkg,$(pkgs),rm -f ${BIN_DIR}/$(pkg) 2> /dev/null;)
|
||||
@$(foreach pkg,$(pkgs),GOOS=darwin GOARCH=amd64 go build -ldflags ${LDFLAGS} -o ${BIN_DIR}/$(pkg) ./$(pkg);)
|
||||
|
||||
style:
|
||||
style: ## Check code style
|
||||
@echo ">> checking code style"
|
||||
@! gofmt -d $(shell find . -path ./vendor -prune -o -name '*.go' -print) | grep '^'
|
||||
|
||||
test:
|
||||
test: ## Run tests
|
||||
@echo ">> running tests"
|
||||
@./runtests.sh
|
||||
|
||||
format:
|
||||
@echo ">> formatting code"
|
||||
@$(GO) fmt $(pkgs)
|
||||
format: ## Format source code.
|
||||
gofmt -w -s $(FILES)
|
||||
goimports -local github.com/percona/pmm-managed -l -w $(FILES)
|
||||
|
||||
vet:
|
||||
vet: ## Run vet on Go code
|
||||
@echo ">> vetting code"
|
||||
@$(GO) vet $(pkgs)
|
||||
@$(foreach pkg,$(pkgs), cd $(TOP_DIR)/src/go/$(pkg); go vet ./... ;)
|
||||
|
||||
|
@@ -143,6 +143,34 @@ services:
|
||||
- configsvr1
|
||||
# - configsvr2
|
||||
# - configsvr3
|
||||
postgres9:
|
||||
image: ${MYSQL_IMAGE:-postgres:9.6}
|
||||
container_name: go_postgres9_1
|
||||
ports:
|
||||
- ${POSTGRE_HOST:-127.0.0.1}:${POSTGRE_96_PORT:-6432}:5432
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=root
|
||||
postgres10:
|
||||
image: ${POSTGRE_IMAGE:-postgres:10.7}
|
||||
container_name: go_postgres10_1
|
||||
ports:
|
||||
- ${POSTGRE_HOST:-127.0.0.1}:${POSTGRE_10_PORT:-6433}:5432
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=root
|
||||
postgres11:
|
||||
image: ${POSTGRE_IMAGE:-postgres:11}
|
||||
container_name: go_postgres11_1
|
||||
ports:
|
||||
- ${POSTGRE_HOST:-127.0.0.1}:${POSTGRE_11_PORT:-6434}:5432
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=root
|
||||
postgres12:
|
||||
image: ${POSTGRE_IMAGE:-postgres:12}
|
||||
container_name: go_postgres12_1
|
||||
ports:
|
||||
- ${POSTGRE_HOST:-127.0.0.1}:${POSTGRE_12_PORT:-6435}:5432
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=root
|
||||
init:
|
||||
network_mode: host
|
||||
image: ${TEST_MONGODB_FLAVOR}:${TEST_PSMDB_VERSION}
|
||||
@@ -166,6 +194,10 @@ services:
|
||||
- s3-mongo2
|
||||
- s3-mongo3
|
||||
- standalone
|
||||
- postgres9
|
||||
- postgres10
|
||||
- postgres11
|
||||
- postgres12
|
||||
test:
|
||||
build:
|
||||
dockerfile: docker/test/Dockerfile
|
||||
|
@@ -1,52 +1,88 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIESjCCAjKgAwIBAgIRAKG/1k+fiFpnx/pdBHp0Hc8wDQYJKoZIhvcNAQELBQAw
|
||||
ETEPMA0GA1UEAxMGcm9vdENBMB4XDTE4MDkwNjExMDQzNloXDTIwMDMwNjExMDQz
|
||||
M1owFDESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
||||
MIIBCgKCAQEAl+Qnlg3dSlyYi34yF2D35g9PhU6o5gm3qN22pEdDTOrTEihnF6lq
|
||||
XqieDAaTTYehilqSsBjdZN8uTeJQ5Dsr/g8n43y8KCQFIcpNJLldV+pNEZydCK3R
|
||||
sPr4+GgWGdpmA5Za8VlRgilYNVzSmABz9LZoa33YIjMSQ0BftAFnFl6N0ikDwPuN
|
||||
L1A40EaE121QeEQgUTbcWcrJ1vJkJgcSGK6blVOy1dmHL4ABoD+n1+abDsoKM1Yz
|
||||
XOgci8rbNUTS6P/2j4VW+MZRnM6rFCbo7wW11IUYSyShhTJoWFMdtc7zmQdTVBlo
|
||||
RhKU0Ok1QDVr6vO+3PKriUcWY0cLFRcsGwIDAQABo4GZMIGWMA4GA1UdDwEB/wQE
|
||||
AwIDuDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFAaP
|
||||
Vu/GKnWUUjNznMkpU7t1V8V3MB8GA1UdIwQYMBaAFNVjkwWn6aryJsRlIsOr4gFM
|
||||
ISnFMCUGA1UdEQQeMByCCWxvY2FsaG9zdIIJMTI3LjAuMC4xhwR/AAABMA0GCSqG
|
||||
SIb3DQEBCwUAA4ICAQCYl8SMZJlaBOyUM0VAOZDks+OICJn8PUdu5XqvFA5ATnXE
|
||||
MRGP1h34R/6Vkl/jwB/+2+9zEgT1z4hZ55blyOmZFB/j/jPrlqEIkUMHK1CVC6jI
|
||||
f8ubNp4MNHVoV2Cw6wLw8E/GMZIcZ4t0G9Z7kFjHh0qS5PN00zbBCj927Q2FoBc2
|
||||
oybS4KVgFeD9fklYCMoETp+WWaM7dec0OBdKWyCEP3JmMHITKTipro5yf6RZDvAB
|
||||
TvoGcZIsIdKnoAknMYwG4ibcyI0z6XIF6/Hy/E6XdbsnmCHGIBHbRMMvqNXz3XJa
|
||||
1s/vA4MHkUF9N14MRVI8cepFMsYBZkztNylYw159b9qiHzbeUm3BrSaJzQjefqkD
|
||||
cMFLJ0jcZDg8N+pyMi3vvr41HfONw8iyqis3ZAjftZ56fwoj6ap4QZI8P+M7R//X
|
||||
A4r11+ldDRsJRnLi6kCJK/ta2pKGuUvFeVqDDc/wNfBUMkmUeyZ9AcNoxFNDMmZT
|
||||
sEhj6mTHcKlo+BcVdYMO4FrrgXkuRS0gY82qZucHRGQh3G1QPs4di7pVCopXuWjQ
|
||||
8foI+SSRFqfcdPS5ljVyLV1g+RVBJnGYQiCM/JAPokRZpimZherxsmdnAW1A/XR1
|
||||
/LXHw/5upwkouzsjFTEM8g1WDwtfp3HGFnHUxVHSe2lXI/2o+DZBU/ILEpxrgQ==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
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
|
||||
-----END RSA PRIVATE KEY-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGhjCCBG6gAwIBAgIUA8DTDskAzhfsbrJkErEqsxyeRLcwDQYJKoZIhvcNAQEL
|
||||
BQAwgZwxCzAJBgNVBAYTAkFSMSEwHwYDVQQIDBhUZXN0Q2VydGlmaWNhdGVTdGF0
|
||||
ZU5hbWUxJDAiBgNVBAcMG1Rlc3RDZXJ0aWZpY2F0ZUxvY2FsaXR5TmFtZTEfMB0G
|
||||
A1UECgwWVGVzdENlcnRpZmljYXRlT3JnTmFtZTEjMCEGA1UECwwaVGVzdENlcnRp
|
||||
ZmljYXRlT3JnVW5pdE5hbWUwHhcNMjAwMzI0MjEzNzQ2WhcNMjEwMzI0MjEzNzQ2
|
||||
WjCBpDELMAkGA1UEBhMCQVIxIzAhBgNVBAgMGlRlc3RDbGllbnRDZXJ0aWZpY2F0
|
||||
ZVN0YXRlMSYwJAYDVQQHDB1UZXN0Q2xpZW50Q2VydGlmaWNhdGVMb2NhbGl0eTEh
|
||||
MB8GA1UECgwYVGVzdENsaWVudENlcnRpZmljYXRlT3JnMSUwIwYDVQQLDBxUZXN0
|
||||
Q2xpZW50Q2VydGlmaWNhdGVPcmdVbml0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
|
||||
MIICCgKCAgEAqRso1A6DaTW05bFRbThZAy6seMwjcGZYk0JUFHenYPoCf0qZwi3y
|
||||
JThS2KoYJBK1TzagbqWLc4R2JGBL7sr7KDq4jFGVRcxIW1AZ4z7fhH3Khk8iPoaA
|
||||
JX4Q8iwVJ/3sPiUJ02d6w26c6QIfChh5iTArAHX1oXX7nhDeV74KnlMv3HssOFnX
|
||||
3ZZhikdvsGXCpH9vt23AnCcNiCOPZUtxl1i8bhoehw3PwwiLAxn/VDLG4hOWlSIa
|
||||
UAqrmNrGHurGSQHM7zk3RCumapg+R4R6+aTzJPNQtY5MXWr3p9w3oOtNeKvsz+kc
|
||||
gxoU7sm/jPQSitmqQF3gm6iP//TNlGVvAy4HziQ7+C/WiqPpUOD1wtG4Cts0FWvv
|
||||
VynP4BF/4VthpgB8cdmdkCBgPX9PA06RhHGlQXEXluxRBHfPsVy/cC3tMFy2YoK6
|
||||
Rl4rLjAAKOWIkO8Z2Q2lVu5JkRNiWzLbRpJMN+yvTMBn2CEtaWWGyBgqKVRhpfA0
|
||||
kbAb78+LhNnsbaNMhp87Ve5c8sUMzr00vgV73RGTNex3GG9WXeufgaxlxmF3yQYH
|
||||
p7Mraj++RZUwi3nWCiEz3SQUHdvt3jMs9GGabRUY18oxWqnCB7CCnrJtaC0iyXIc
|
||||
i2VxV7wIBuUDEcllCkWDO5GKPs4HuUhhF5CQhHEHoYG33B5NKJQ2/NsCAwEAAaOB
|
||||
tTCBsjAdBgNVHQ4EFgQU3NfuC45IyCKP7cc5JrKsBAypKPIwCQYDVR0TBAIwADAO
|
||||
BgNVHQ8BAf8EBAMCBaAwVwYJYIZIAYb4QgENBEoWSE9wZW5TU0wgR2VuZXJhdGVk
|
||||
IENlcnRpZmljYXRlIGZvciBURVNUSU5HIG9ubHkuICBOT1QgRk9SIFBST0RVQ1RJ
|
||||
T04gVVNFLjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcN
|
||||
AQELBQADggIBADN25Ne2BW16E7HJHblInBdeivN4RjYsckRL56V5Vs2b8G6cjPLZ
|
||||
4qz0uFBMpwO+y8cCccGWUD8uSsNvyjFq2umyaqFEVQmGyo1sDBV6WQtY82xCEVcI
|
||||
C+alZymANtLanf6T5EhTC9GttaHSxisGP/kHm2AKUzCi49fe/la9EqJRLgPsjsiw
|
||||
YSmTZKyF+v+VaruCiIJj4rPYHDSk15STxuAS63fhCNW4kCw02vdMhHVz2GIMDwWF
|
||||
Ulaao6yAO4t+1hAEQDZvH/ve8Kwj6y199Hna0zyhGSmCYkEmT0LfgTwcGhYinCUe
|
||||
eUqqHcyPyGRSvc06dKvFBP89vD7gDzQbKgn7LGfEvseDml0WBpG0QbqhflQgWDb+
|
||||
qi9d7Zw2yonhfb79zad9YF8VhDRQ25zXID22n+PLxwFCjNrCQFlGLclQYXmoZhlR
|
||||
EOPs3HMAGp5mFaHDPMQygMd80M6e5RjjUh4d2AhBqDmsSB1vwaH6c1Qi+MSt1CfQ
|
||||
duCZBU1/bA26J6U+zxsPNzVf1xR2lfk/kThK5VWTVmUSX6niIALEh6BNTff81uko
|
||||
ruBw369tfdPNVcv6BE7LayK0RtNMGArONlww1NJ8D/rWTdI+GrfYQUlcZHBkvqCY
|
||||
NIcueRuYCfTZK0fes3sl71Cg9ZMHNgRmIRxsCa65xxni2L2Bgq/hyK0S
|
||||
-----END CERTIFICATE-----
|
||||
|
89
src/go/docker/test/ssl/mongod.pem
Normal file
89
src/go/docker/test/ssl/mongod.pem
Normal file
@@ -0,0 +1,89 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIJKgIBAAKCAgEA30LuGXT5EfBrBBhrkdmtQ7PrRleEBAOQI5eh/C7U4uNvV2Aw
|
||||
Sozlk0OFhqRgmOvlIWULoSGdOkLa2QAXxuOo5qVibDvjKhbfbNNVOsH9xtOy2f/3
|
||||
4dWUGlvLIVgmA6J1Ge9Q7P+qapY8SqXgvZaubwKGlURq+nj+CuBKwnrLC1b4Cxg1
|
||||
/cTsB4LiGFGlHeP6gU1deGZJOf7RocnD3AmCyozk4Yqq6m5y17YH7hME8hNCAb2A
|
||||
ToNmf5p0+W+ieklNcH9bwAf7q9h9AFbpDh1L8c0CXRgA18ZTzDMg92Xp2Ifa1HFA
|
||||
WamWzCeenWi1mxARFvFfeqPCHUs1JgGRuhldWs0GgtywCy/JyTbxsPES9RyU0nvk
|
||||
YwqK+kEO+2nu0LvgRZlYVerj6vjjFsJalhnVf07wxqj/dqMzKR5jlDai6eoXjAyg
|
||||
xB74ooenbG+Ekfctf76SBAB2N42rR3U+4DBe6T+3ZLd1m+3d+/ZLjjvoO+R3L3L5
|
||||
B3SQXxGI5nOBElpaICj+cIt5t+k5gCxfWddeL7jsYOHjAX/8v8NnqzG0bM6vXtc/
|
||||
n7b4/1GyGD4E3JZhZ1QYmZbUbGc9egvy+b6JReoeChe6IlpulCxD5hHczfmV4u+H
|
||||
BRHS501fArmruPvPTBtF7BDgDASbVsZl5Qni/hcMSfJ2qJjeNAP6t4HmY4sCAwEA
|
||||
AQKCAgBykMfZrFq7R+HCgj2A5HCy0zqiJ/qIjMOEYCUxYV7A5vCVp7hgKRkNjpKQ
|
||||
Wv1uu24iytVC5BrocLIYtKF+4AgmAywUWk7hpEcWcwPDWRS+2Jdoop8y9gQ/2mbM
|
||||
P42SQ+VPX6zpUPDELT/XFnPTFeWA9YzWP/udeET0k9AJKDXVJdW267+Y71onKJSY
|
||||
4hyW0AwWGfsi82oUJpywJvcojIDfK5mv2xaFohOweapsErpw9kzi07lpkKgiRsJL
|
||||
1WtM0Ry548DTM8WDk13htLd3FLWJ6SeTWePk1dLecEY0bcmn4V77sPnSiOHm9VXB
|
||||
dJ/saDw8x7O1HR9ZJOSrEhcTpjxui/60bHiWyf43DLhAQKk2FgUd9ssETEC45uae
|
||||
nN/wukOxbkNr9sQwmV3jhhoWk35jkz+lCibuNCKLH1BeifbDdrpyUY3EJhGFfeKx
|
||||
8FVVuKDOyfdNNiXvw/1FpWCscumRoqk/VNlIwA2fVmVEMPyyWCbnQe609IvA9ACl
|
||||
gy2DIrwXMb+Bddg9RyLqrFCnqtb+a6RE19oJJzccABF/4fCOTnNRLse6YBZaCkuV
|
||||
yU7SWHs73Z/W1OTlBzaRqg5hWje6zcivwbiX+lo4z6ajNy7Pt3Q4UdfKViyuMRmU
|
||||
P6qVT/srchHE7VQ8UqXGMbjOZdwK6WVHxHG+45BogfBSAezxEQKCAQEA/lNhfI15
|
||||
1P27RlV0dCnLq1Y3+RCWzSReKvkKZOebmeNfw2XAXwrAe0ghjJt0T8Rr4HXUz58k
|
||||
UAAvupjhxQPLhRPRj91YLpuM1bsrOQnFG7Buhzvg7owo99vZTE6+kAPD6jJS7lrC
|
||||
+KyM38cO+ck1EFgoTWhI6zct619pUQVDDjEJ1h/dUmUfdgizuLVQlyMn7FA5GTEQ
|
||||
HNCJqIalQuw/lYO2rnHgxKfdr7hH6DcU9eaPj2UqdOO4n7kmHLfi9Z6GLxL8kB6O
|
||||
n6FGPCxhT1ANQ+3YS2lGdkcMb0bXik40EMSMeQbxAqVWddhJiZFWNA8VuJzYb2CP
|
||||
sEGq/C3Hf9iPLwKCAQEA4LsyOFh/pOb+bylj9UefzbGcDKW0dvjc2qsJ6mGNgmqr
|
||||
NN2p+ePMKbrUyCX7yspGGfmYXG3SsJxo1ZF/7SiR5Dsu8IejJOvNdZJPSaM8cCL1
|
||||
NmBrd3fbz+JEC0NVptOJeqVI2hNUY0s6l/9S7C/2HvCsfmKrDgouPjhGhpeXku4M
|
||||
EEmQTggaVb61KgdFaCEEddM3/0SrRN+6u11BZ2b/LUCrYuDUIA+ej1/VI6o3zmpW
|
||||
O1UdZuD9vTpr5KJcfkc64qVfNMDZVDPZC4u8YF3mbxN7i6ZKsEJVQk3HdH5SEGJP
|
||||
HYJytjkNaVrFzt8P25wWu1VyQplaUX+Xy6w0i/76ZQKCAQEA4oVZmxpXnUGxf9+1
|
||||
LZHceer9R7Vi26y8wwG2JFG14ccHEH6cbQqijiuc1iPP4QxOGUpaFeLk8Ox5lnV9
|
||||
AYFz0D/qs3yugjTBp8xhnxf4m8T1bTYEDfSAuOL0FGc+i/8OjJXuD6Z/agYmI1ql
|
||||
GA4CWWBr5SYxbG9lUvNUVnmdVBKRdEpFUpIHB5aQnL/B3BvP/0ck1C9C7qc/NP9Y
|
||||
Stcpev4pxA5h6EaryUsVoNsOrEaDL3En85ywYHMEYyfV2ncrhNogYi0VU1DNweK1
|
||||
eXMPnaVGtUQ7IjX9+U7bw7AL57NoepOYLocdDzFprkHoyc11x0zL6cfTs2WJ6brM
|
||||
qi40uQKCAQEAs70ErYwaiwk09jNkfwiKBznGVVcyvvTLrxidFZhwVZ560A15pSNM
|
||||
ZxPGm03F1Kty5dN6yHIN0LNIJYf5iPSpuqCbKkVRdnYiHaanQ34LGKTc+mCjkymJ
|
||||
5PpS8a8pEgSeMDmByukq1T+V3XuYFs9FSfmz/GFt7gy2b40S2xLjZ+B8RYqQn9hb
|
||||
N7kPrE2kdWPy7UnBv6hsUumdr70mUk1OSiMu8CZhgkL7zjAXiC7b83uY/FtW6LGK
|
||||
P446POKel2Dg9+TMAKU9LNtK/LEGOQzhAHXUmhymH9Lt3dnXbJSbjf8Sx8dNd/Cp
|
||||
iVnQW2SMiliM1cfBWwLL+eLSxVM1s8J7AQKCAQEA+Hmz1C0xCequikUjylY3oZ2v
|
||||
PY/A07xTvgjP4uCsuXslLDIRsnFPEeMl/tWkmiJAzg18ou/Wbwg47T3npvuPvhZl
|
||||
JVb2LKkm1Hsdu1xmHWsuhB9/WFla+tnnWSbPPJkPd+/y4HnITyGD3CAZk9bsQXaf
|
||||
2/5kbbp+aK1qevuzMOE25qVwsjo0YOLrdZ1BjLeQUxr0p4etw+e0139CAOC9aZqh
|
||||
P8T5lvNDw2qlMNeFODGz4tAFA2NN9pmIJJ2Tn7ArgfxyOr7kgRHKkSM1rMQM6vpY
|
||||
/Mo/Q5DULxjGgBvHM9Y00Zeb8q8HVMkYcmNJF/S1lsZq9eHkYz0xGypXWhXxGg==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGnTCCBIWgAwIBAgIUT1Tut/IJvQu47l3mJ1+pBEXKK04wDQYJKoZIhvcNAQEL
|
||||
BQAwgZAxITAfBgNVBAgMGFRlc3RDZXJ0aWZpY2F0ZVN0YXRlTmFtZTEkMCIGA1UE
|
||||
BwwbVGVzdENlcnRpZmljYXRlTG9jYWxpdHlOYW1lMR8wHQYDVQQKDBZUZXN0Q2Vy
|
||||
dGlmaWNhdGVPcmdOYW1lMSQwIgYDVQQLDBtUZXN0Q2VydGlmaWNhdGVPcmdVbml0
|
||||
TmFtZTIwHhcNMjAwMzI0MjAxMTI4WhcNMjEwMzI0MjAxMTI4WjCBpDELMAkGA1UE
|
||||
BhMCQVIxIzAhBgNVBAgMGlRlc3RTZXJ2ZXJDZXJ0aWZpY2F0ZVN0YXRlMSYwJAYD
|
||||
VQQHDB1UZXN0U2VydmVyQ2VydGlmaWNhdGVMb2NhbGl0eTEhMB8GA1UECgwYVGVz
|
||||
dFNlcnZlckNlcnRpZmljYXRlT3JnMSUwIwYDVQQLDBxUZXN0U2VydmVyQ2VydGlm
|
||||
aWNhdGVPcmdVbml0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnEhd
|
||||
lUJr348iYseh18NTZFyfWvZy83jmkMBtRdr2O3KxbaVG0g2QwAEnnW9t+W3lwjUg
|
||||
hTPdG6i6duRsHrqJAbt4augmSH/u2smhH2367nVhbK+eg1wfFzsJZ9NHfrcLS4NT
|
||||
RwLFLRt7P0QYwYZIYuSYWBLfX7B1539UBz1R61T2uV6jcW1U5lZDTDaEhLkUg1Dk
|
||||
CdAGzmM04U53YPejsk6OLCVGwkLpG0rUHVzAcuM8Hx+1jJ/zZJuWU4kfeNcyHpbH
|
||||
hN4K0WoDVECadRNhc9nT4OyqChE6UCFQ0WYBD3XHwbAo1eaox38tgLC5/SncCAgI
|
||||
h5jarmUBBsqePkksm3cxjmQ5oBwB3HU7JTSLlRQqbMAQYHQyt6Up4Xbp0IPKHKoH
|
||||
93K7LZCTEdI87jjWRrscEPOydYI3atBrGpLrcpC6uVa6ZwIVYHyilrY6oP1BbPsU
|
||||
rL96z384HLtj3tAOxHMK6rxSbr+8TpXgsv4EYNGqjjZ977yh9Qy3zXn06KOjGs9C
|
||||
dkHODdbH01LRC9qCZLbbm33STG5Sfedlp0v3cRxZzRrKIvm2V3Oct21VmFpuUqL1
|
||||
pai5RuQZxbR8GEtPnb+V+M6JtprtLgpHsCx9z96tVvqUytWvkjfQ/Tk7wK215KqM
|
||||
jbl81mlq23bxlkaE/W7lQJFxRM5y9ls4HvD9DDsCAwEAAaOB2DCB1TAdBgNVHQ4E
|
||||
FgQUvqV8Vw4CxcPgrcvQc4XxmmvZ1SswCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMC
|
||||
BaAwVwYJYIZIAYb4QgENBEoWSE9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRl
|
||||
IGZvciBURVNUSU5HIG9ubHkuICBOT1QgRk9SIFBST0RVQ1RJT04gVVNFLjAdBgNV
|
||||
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIQYDVR0RBBowGIIHMS4xLjEuMYIH
|
||||
OC44LjguOIcEfwAAATANBgkqhkiG9w0BAQsFAAOCAgEAOWK0fdKV6dnzPKhuLtfi
|
||||
03BrewclMAHfg4nbosyvWPyd41JIqVFxka8xyF7unVPmS1GvZXONgRUgBkTiBW4n
|
||||
x8BorrSP3u9+rxBNt58Y8DCH83YAlGSmU8TsmPGXmJH1AxGZWeo78aDEmssigbBN
|
||||
qxe5J+FXC2HsVaw3MZnw88gsmN4z+k8x9hImGCsppgLMEzJppESrN39l1sHT5XAP
|
||||
Fm2w7OB+E956ljIqZXSXj67sgUuQEM1sLQXOiDR7AYFBln2plCwygIosWlSz7O1A
|
||||
3jRxuhQ/vI/+ScWQKQ6fcNu/7gPU/pxDSbtLTyn2Emg7WFEC9HCwJB3fMiCa/+0x
|
||||
oxPZpwzMdztY5Bi654MLOfxxNpF02HNaym/iLZv7aJcxt3rFtPqsZfDqL0v89GCD
|
||||
006pQUT6Sxvvz/n+sQ3lMXcNeq2SvAg+vRQOiRJ2wf/pSMXwbNlOgVxL5NcDJnpF
|
||||
hfurBro++RyqlIkc0ouokWIKa0SUANzXGU0FkUA4223rQRvgrKs9utYJw2NuG6kM
|
||||
QnNwceC+myoIwW7JBjCzPatZgIdY08BUaTHVefI2ntKP5fvDXLJFnSO/8TYkWK4a
|
||||
nv2Unn4nbUuuAN3Y2TEVJAtHL4io8w2xB4W5Vy/i1iEHWnME5qXIHNgRzl57k+EO
|
||||
EgxUDXWZVQZJg0alm4o0TJY=
|
||||
-----END CERTIFICATE-----
|
@@ -1,52 +1,89 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIESjCCAjKgAwIBAgIRAKG/1k+fiFpnx/pdBHp0Hc8wDQYJKoZIhvcNAQELBQAw
|
||||
ETEPMA0GA1UEAxMGcm9vdENBMB4XDTE4MDkwNjExMDQzNloXDTIwMDMwNjExMDQz
|
||||
M1owFDESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
||||
MIIBCgKCAQEAl+Qnlg3dSlyYi34yF2D35g9PhU6o5gm3qN22pEdDTOrTEihnF6lq
|
||||
XqieDAaTTYehilqSsBjdZN8uTeJQ5Dsr/g8n43y8KCQFIcpNJLldV+pNEZydCK3R
|
||||
sPr4+GgWGdpmA5Za8VlRgilYNVzSmABz9LZoa33YIjMSQ0BftAFnFl6N0ikDwPuN
|
||||
L1A40EaE121QeEQgUTbcWcrJ1vJkJgcSGK6blVOy1dmHL4ABoD+n1+abDsoKM1Yz
|
||||
XOgci8rbNUTS6P/2j4VW+MZRnM6rFCbo7wW11IUYSyShhTJoWFMdtc7zmQdTVBlo
|
||||
RhKU0Ok1QDVr6vO+3PKriUcWY0cLFRcsGwIDAQABo4GZMIGWMA4GA1UdDwEB/wQE
|
||||
AwIDuDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFAaP
|
||||
Vu/GKnWUUjNznMkpU7t1V8V3MB8GA1UdIwQYMBaAFNVjkwWn6aryJsRlIsOr4gFM
|
||||
ISnFMCUGA1UdEQQeMByCCWxvY2FsaG9zdIIJMTI3LjAuMC4xhwR/AAABMA0GCSqG
|
||||
SIb3DQEBCwUAA4ICAQCYl8SMZJlaBOyUM0VAOZDks+OICJn8PUdu5XqvFA5ATnXE
|
||||
MRGP1h34R/6Vkl/jwB/+2+9zEgT1z4hZ55blyOmZFB/j/jPrlqEIkUMHK1CVC6jI
|
||||
f8ubNp4MNHVoV2Cw6wLw8E/GMZIcZ4t0G9Z7kFjHh0qS5PN00zbBCj927Q2FoBc2
|
||||
oybS4KVgFeD9fklYCMoETp+WWaM7dec0OBdKWyCEP3JmMHITKTipro5yf6RZDvAB
|
||||
TvoGcZIsIdKnoAknMYwG4ibcyI0z6XIF6/Hy/E6XdbsnmCHGIBHbRMMvqNXz3XJa
|
||||
1s/vA4MHkUF9N14MRVI8cepFMsYBZkztNylYw159b9qiHzbeUm3BrSaJzQjefqkD
|
||||
cMFLJ0jcZDg8N+pyMi3vvr41HfONw8iyqis3ZAjftZ56fwoj6ap4QZI8P+M7R//X
|
||||
A4r11+ldDRsJRnLi6kCJK/ta2pKGuUvFeVqDDc/wNfBUMkmUeyZ9AcNoxFNDMmZT
|
||||
sEhj6mTHcKlo+BcVdYMO4FrrgXkuRS0gY82qZucHRGQh3G1QPs4di7pVCopXuWjQ
|
||||
8foI+SSRFqfcdPS5ljVyLV1g+RVBJnGYQiCM/JAPokRZpimZherxsmdnAW1A/XR1
|
||||
/LXHw/5upwkouzsjFTEM8g1WDwtfp3HGFnHUxVHSe2lXI/2o+DZBU/ILEpxrgQ==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
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
|
||||
-----END RSA PRIVATE KEY-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGojCCBIqgAwIBAgIUA8DTDskAzhfsbrJkErEqsxyeRLYwDQYJKoZIhvcNAQEL
|
||||
BQAwgZwxCzAJBgNVBAYTAkFSMSEwHwYDVQQIDBhUZXN0Q2VydGlmaWNhdGVTdGF0
|
||||
ZU5hbWUxJDAiBgNVBAcMG1Rlc3RDZXJ0aWZpY2F0ZUxvY2FsaXR5TmFtZTEfMB0G
|
||||
A1UECgwWVGVzdENlcnRpZmljYXRlT3JnTmFtZTEjMCEGA1UECwwaVGVzdENlcnRp
|
||||
ZmljYXRlT3JnVW5pdE5hbWUwHhcNMjAwMzI0MjEzNzQzWhcNMjEwMzI0MjEzNzQz
|
||||
WjCBpDELMAkGA1UEBhMCQVIxIzAhBgNVBAgMGlRlc3RTZXJ2ZXJDZXJ0aWZpY2F0
|
||||
ZVN0YXRlMSYwJAYDVQQHDB1UZXN0U2VydmVyQ2VydGlmaWNhdGVMb2NhbGl0eTEh
|
||||
MB8GA1UECgwYVGVzdFNlcnZlckNlcnRpZmljYXRlT3JnMSUwIwYDVQQLDBxUZXN0
|
||||
U2VydmVyQ2VydGlmaWNhdGVPcmdVbml0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
|
||||
MIICCgKCAgEAw6UzR/6YmJVu6FT9W3ZuzIYIHSNzkYHHbxNe3xj5GprZ9Bs4FiRd
|
||||
nt7jFfX1SVQQc94BDxD97PZYm9EFmqS0K8wGB+54FQxAFyXg0Ydt9fKNHayUhJ+0
|
||||
Gh/agu5xF/1k6dtXg7lm3BOGxf75bH275JRtbSsVhP71RmmHWBy4vNWDB5SfTDN/
|
||||
oMR4OhOGGyh0dS6KjvKu0iMXs5rDgM0xXtbMgt9yrp7nxT0R+3B4oUUi1NRSEVlo
|
||||
8x7NYwLuq32VK+rT0IyvzHa4eWjDpIqSft4Nw56pJRQXCmpFLGarduKr9lrKmUVS
|
||||
c9OmG1jJ/p0hxu/3DPpH/FMRye6dXeeot0JLOxfhJJ1uyNdV9FyvKu+QUOXCMEp2
|
||||
pWk6mc1rEqlrBczJHqx/iX4fPI7AnS8K/cmuOKTHURnCdTsF5QcOLe+z0xAr3Ys5
|
||||
3O8IsgH2AO80UOnOF5H7TboiEEoDvDtH3FnYRCgpWCMDF/EyA5Ef++bMEXmLI+XU
|
||||
mqQTdxkczJkPvDNgV4GH/Dxns1jSMjid8/ySQHUlcBQRxH7AGDeNyY6mLy09HJnS
|
||||
di2l81eN0bgvK/Vxrse0Ragj75+1/Unq8pJ6HeOsgFS8y3THBVWzKQpR/3U62E/N
|
||||
miaJaYSoykXrKCiuCzM076gilIjGfv45618r1jIjGxGay6piRBjkPKsCAwEAAaOB
|
||||
0TCBzjAdBgNVHQ4EFgQUo2vyNFhqZb17FC/2s9zgs2y3+7IwCQYDVR0TBAIwADAO
|
||||
BgNVHQ8BAf8EBAMCBaAwVwYJYIZIAYb4QgENBEoWSE9wZW5TU0wgR2VuZXJhdGVk
|
||||
IENlcnRpZmljYXRlIGZvciBURVNUSU5HIG9ubHkuICBOT1QgRk9SIFBST0RVQ1RJ
|
||||
T04gVVNFLjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGgYDVR0RBBMw
|
||||
EYIJMTI3LjAuMC4xhwR/AAABMA0GCSqGSIb3DQEBCwUAA4ICAQC4h+15PorQxATg
|
||||
9G3BywtJwvmKF+j/S3dc25jIUO6LyXjaXanSf5FYKr+X4fdjflhMNp6TFBDHwVX2
|
||||
T+ihZmhq7xKrP0RQAVIkMwAFNElFmiDuelJNzhxZBzu4ZIaOIk5J/oAWh8sqjX4Y
|
||||
YYeXEOkM14+YeGbGD/YI+1YMhkA/CuEZl5LxinOHTXnx5chLgueDems01FgwidoX
|
||||
NlK1XjLHzb0jBjhwzNU8CwR8d55PJq2lLs6W0Gc9KGbWKxQNMrqgVIVT/AkWGGK0
|
||||
g1WHI5ehOEvyHXSTYgXUkynW4xn/yLq50IkxYMLwPg7U7O/U2StdlG88nPINHbKu
|
||||
VfYFQ0F3M4CRFWaV0UNxK9hV6x+qu96jCmp+ftpC9zM7bathen9fnOM6Arg+U2Or
|
||||
jDD5hRboMqdT1bw3k19WUnnbR3uFNDJFgNvTMOTt563UdaNxMSALJOpPDO21JK83
|
||||
BxnfFEe1SMoTpsus9VEzZ3Fyjkug4CN7PzFt+x/NWRqyoEOuUXWtxzdQLj3f9MS1
|
||||
RvMCbnvJcBr4NzDmFBmt8MehgbS4V1SKO7V2YCEnDu1YjSn6FxQqU7t8dl6K2Srz
|
||||
HXbrRm/mcps1/QcKXgpOX1sajcvd0BsrqzGJtvrb8EnBbLk5lNYFcU3bnFAdHtbN
|
||||
hdf6gGd96V3VkW7ZbxUoi3TBOmN7Tg==
|
||||
-----END CERTIFICATE-----
|
||||
|
@@ -1,29 +1,78 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIE4jCCAsqgAwIBAgIBATANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDEwZyb290
|
||||
Q0EwHhcNMTgwOTA2MTEwNDM0WhcNMjAwMzA2MTEwNDM0WjARMQ8wDQYDVQQDEwZy
|
||||
b290Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDqVvFpIft91o1x
|
||||
ALjDQ+zoCke2daQ5tntwbDwosbiGB58Jz5p/KVwGHQvYIt5yKSzc7KN7OkTFF8Xt
|
||||
QGbVY2ZHOONHHZHOtuiBPz05fE/HDPxic2MO9jN4GGTphgFDBBfaEaF0G/19Rffk
|
||||
1wtB8PoOY3MU0mSTxT1q2Ka2yY2VRbvoPxo7qbhCfXuAu1cA8RmbYCWQzGsqxPC6
|
||||
s7cen9C5IOhHB/osQcI7ZoSL2fkiDch8SLFBPj7W5nofjH+P4Xncm2c65tHSy4pI
|
||||
hbYW44NDR9o2RS1OdD2GhS9MHBppzQGAnXM3yxsbKDyzjcxZpIjwMlxaGz97y404
|
||||
8ROET8Hu7CoOK9kPA20rmhpX/3ET7kiHs2f4/BlD7xNVL74tr1Plva/C8DcCWDC8
|
||||
sf1PW4RJsuwadbkMAST4MY87HknIiN4NGKE6mSlfukaKKkW1HdCY7ynpCyv3Uru3
|
||||
FiD5XrphSvonZbSfcnKjYQVKEudJWyMbdoO5JX6cDIb7QP3jsKADzedwrtWBWx2Z
|
||||
CxWOJPeVan/I6OfV45q3LZFAsNjK2gquOe/3WmJKpO+EspivY+Fv/32IAACmjoY/
|
||||
90Szf6YUKEE1Etpj9PT2gqmFleOx51A7jg3z4wUl3KI8CTcdVlDogct+4CHiQfJU
|
||||
4ajXTqd3O0qGbulQPrZuhPZWBSbVqQIDAQABo0UwQzAOBgNVHQ8BAf8EBAMCAQYw
|
||||
EgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU1WOTBafpqvImxGUiw6viAUwh
|
||||
KcUwDQYJKoZIhvcNAQELBQADggIBAMEw6cOWi7s/6A5cMObSbbfS91yXx4tjFda/
|
||||
5lJ+7gxO935pQas2ZppxVpGUZezXH5rYl8bR/xGTZ1SLDqp0mjphVp4G6VQFtonK
|
||||
E9nNRuVK9jDJ41IXjWEtdgeig5Sf6hRUbwTDTBulhSviQQzo7hQUpSknMC1UNAgy
|
||||
op3q1dluBaG8BWi9aZu0WL5VdxdQdTCAXSrYqmeGZlc0IgiNiebRmkQwNImnvfzb
|
||||
WmrCK8rThNdXml7G/BD+m9na1OwUVoee1oohbHmxH1YsNwe1rSEBL7oAHzNi695H
|
||||
QrriZWu7t7QdO5ZITGZpzmVU1nrwSB/VgPH0tBAUeZSifctNII9NuW9FS1h3Gys1
|
||||
JV2cwQYVCLK9+M/VhRdSv6u+UCHE1TtZwHmSKYjcdN52pUEnWZNtlwPyrJ7cbSEj
|
||||
Wrq+iZBBO9qcPg20ldYLkjv1QlOGLnVbl2K9ePTTYbUaGo0DLGlA6E2lVjoD8FvS
|
||||
DQYS6qQGHCgVgOPhca8FOCxKEfMvXSzKOF9eGn0rnzsUcJbiYxNArjDDKSRSyMhD
|
||||
2TfBupFV+tYM8OXBDArgk464IZnjsrT4DeQQ+WOtEm3kHo/NVhZ/6A1uV/JyQhkF
|
||||
D6FSNoKvWz3LIC5v42+hvj6teAk4wC9tFk4Q76c2PQxiwY1Ur8ySVUYiIv8bETCt
|
||||
nQT44DuY
|
||||
MIIG3TCCBMWgAwIBAgIUImm7nNshohrxdxIyIFBh+W6FtVMwDQYJKoZIhvcNAQEL
|
||||
BQAwgZwxCzAJBgNVBAYTAkFSMSEwHwYDVQQIDBhUZXN0Q2VydGlmaWNhdGVTdGF0
|
||||
ZU5hbWUxJDAiBgNVBAcMG1Rlc3RDZXJ0aWZpY2F0ZUxvY2FsaXR5TmFtZTEfMB0G
|
||||
A1UECgwWVGVzdENlcnRpZmljYXRlT3JnTmFtZTEjMCEGA1UECwwaVGVzdENlcnRp
|
||||
ZmljYXRlT3JnVW5pdE5hbWUwHhcNMjAwMzI0MjEzNzM3WhcNMjUwMzI0MjEzNzM3
|
||||
WjCBnDELMAkGA1UEBhMCQVIxITAfBgNVBAgMGFRlc3RDZXJ0aWZpY2F0ZVN0YXRl
|
||||
TmFtZTEkMCIGA1UEBwwbVGVzdENlcnRpZmljYXRlTG9jYWxpdHlOYW1lMR8wHQYD
|
||||
VQQKDBZUZXN0Q2VydGlmaWNhdGVPcmdOYW1lMSMwIQYDVQQLDBpUZXN0Q2VydGlm
|
||||
aWNhdGVPcmdVbml0TmFtZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
|
||||
ANAiZD1FH60/gVJ/rmGph2Q+N9T0lcGeQcrPLeLYXK0SaKL+FOGUZUHldVu9v+WU
|
||||
Gu4Lc1kI94MDtQRFWkOwpcLj3ATUg1GibV+vOuntxLOvpVOZSmyy4BvC3vuV6rXl
|
||||
paYOVpXegZssWUdlWQGPZomb9trr/dQNTMPCkppI1QW7xHNdUtsRvR7lP5PEk4TX
|
||||
G9amKIOhcZdkclylNek8qV2EuXA0FGcdxSAjJvqx13vnFCrCTTlzzQzBxyjbTv3M
|
||||
1T0rbJEXGgC7l5JZq8AoTSOR7EapsdRlF08W4Fw30Ap+q24KEfdZSZmqbHmvqFTq
|
||||
NPJNV57p+dPVCQ13IEvBMW3Bb2Gxt1M3ldVYkaWYnPUdisnoWQJga4EYEV3hwHC1
|
||||
hfa3Fafq7cVcl3ZBkIjs3u9f785cSGwT3xnQKpCdMmpQW86maeaEfgSykP5fIJcG
|
||||
dJ2Dv2pYOCIiHiwks/GWdaQukJ13VnIaISwF0FCcE8FhkguQLjRsmLxCpoY+3fn7
|
||||
PwYcBaplzW+sHx7Yi7yTefi7CSKYfuA/IHbHJkKo6V23pbHbYwgvCKLRK4Vi4DEm
|
||||
8d5ultHnbSHNgi+8x+aVnfepTzxEAVySX3jbatk/XN2AE4LA0wILlE+K64MfnS1r
|
||||
grZJ8vAU+Vm2RwfaRq87l6Vme2/BoZvrJoOlIljv8lPXAgMBAAGjggETMIIBDzAd
|
||||
BgNVHQ4EFgQUkJPzgPfIa6aVR4e0ZaPrNIGtf3wwDwYDVR0TAQH/BAUwAwEB/zCB
|
||||
3AYDVR0jBIHUMIHRgBSQk/OA98hrppVHh7Rlo+s0ga1/fKGBoqSBnzCBnDELMAkG
|
||||
A1UEBhMCQVIxITAfBgNVBAgMGFRlc3RDZXJ0aWZpY2F0ZVN0YXRlTmFtZTEkMCIG
|
||||
A1UEBwwbVGVzdENlcnRpZmljYXRlTG9jYWxpdHlOYW1lMR8wHQYDVQQKDBZUZXN0
|
||||
Q2VydGlmaWNhdGVPcmdOYW1lMSMwIQYDVQQLDBpUZXN0Q2VydGlmaWNhdGVPcmdV
|
||||
bml0TmFtZYIUImm7nNshohrxdxIyIFBh+W6FtVMwDQYJKoZIhvcNAQELBQADggIB
|
||||
AM53we9IF6skJ/zqgBS6mmztYabkoNLU8Sm5p9a5atQkMEv0cFbuzDpnUkQALAIg
|
||||
wdUj5lFg7QjyAbHzE++b0GrqFjGeAHYlE9ngcvwrlFu9r8d0IQrtrUuDaOM7YQ+y
|
||||
xguQfN/5J61yYTEZh49pmf9m8FGjx8hvck+LYVSkBW5st6rgJqSzukrVHZhzfSY8
|
||||
u7yUYZIU0FMqnIArWh/YZENKBWkJu2Q0TwQKmk04Uyh3rZhIAIIkGEwsPbA4CQiB
|
||||
cIx0upFxfkOtJRcjMy7EXmHGZiQXuP7IXxDRWgdi+rIRGgEYJ9rgL7Br4AEpyAL7
|
||||
AyV7mXzUhe2pfAMfFXTKau7tO9z/bb2dBQT8OyKI4CCZBJ0eyOtpk8AjOeWq1HPt
|
||||
dPgi82lNUyKH9WGpVlF5+XK0hf2XZ8xbN+nc/svqmxP3yyJMrvnMkc+lkVx0r2Qp
|
||||
Fak01dNkGGEdQp4JeAzy8+Fh5CmAwVjrC+YWTNj1RqnaBAcjsVo3xeQN92r5E87J
|
||||
QcBzHu2wPGBy9XFip01uw2QVCZCYWVGRdOOnDCs1tNZyzVGHhtdchgZtSxQvDVJZ
|
||||
sYZPzix7YIfAirDPP1U6Bb1hqEbi+Zkt/uX8jVBc4atktc2cfNm7vddh5KzFzqCC
|
||||
PFrKy5yS0opQhkp7lNcoMYM0l06O2doBlOLSFSZe2TAh
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGyjCCBLKgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBnDELMAkGA1UEBhMCQVIx
|
||||
ITAfBgNVBAgMGFRlc3RDZXJ0aWZpY2F0ZVN0YXRlTmFtZTEkMCIGA1UEBwwbVGVz
|
||||
dENlcnRpZmljYXRlTG9jYWxpdHlOYW1lMR8wHQYDVQQKDBZUZXN0Q2VydGlmaWNh
|
||||
dGVPcmdOYW1lMSMwIQYDVQQLDBpUZXN0Q2VydGlmaWNhdGVPcmdVbml0TmFtZTAe
|
||||
Fw0yMDAzMjQyMTM3NDBaFw0yMjAzMjQyMTM3NDBaMIGcMQswCQYDVQQGEwJBUjEh
|
||||
MB8GA1UECAwYVGVzdENlcnRpZmljYXRlU3RhdGVOYW1lMSQwIgYDVQQHDBtUZXN0
|
||||
Q2VydGlmaWNhdGVMb2NhbGl0eU5hbWUxHzAdBgNVBAoMFlRlc3RDZXJ0aWZpY2F0
|
||||
ZU9yZ05hbWUxIzAhBgNVBAsMGlRlc3RDZXJ0aWZpY2F0ZU9yZ1VuaXROYW1lMIIC
|
||||
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzDJEp73jSblTKaD/zCdAIS+M
|
||||
t6HbQiUi3E/Vnwsiu8VNX+Ym4M3FIU8ImzU5fdD7Uvdgkar1mAFXLab4OK3rT/bL
|
||||
w6v2lU1SILPMFZMS/YVaaH+v9janXbxYkS4bee7cX6sK+MLg8SHjB8f/eLP7azrF
|
||||
Q3CyCY+Ul0QX1bdyWKEA4cnnPl1dSGvEzTKpJu70C0SHgv0mYz/Cu+QXTWzToXM6
|
||||
vzSKSS5uthL2DldgNojB5FIlfZP5axRC0XOE74KS+oohC8kvGn7+eFl321HSDibF
|
||||
39LfCSnxzxIawnPTjICajA+x1Gw8YU82SGGJgrSRkLQ8HTf+MpWxZdAxSRPCmxxA
|
||||
eIGatrfNoVbbtjG6Xrton2e1Gc9PDVLP8bb+GlVnwIsz/fUg+7+uYFitL4DQUtYQ
|
||||
nuqy3YuHTW9mmvEiBIdskTB7bawfrWnk17vNOdHfnwmA1UT5Va5Du1wsslPGPjHV
|
||||
fJNQ9b6/GE2YE6ZGMMUBnA84vqhnZfcMpvZP1vBsmfncA+uXUV0yJ+eREc2/xOQU
|
||||
DQQ0s0gCT/DnYreLjUYv6MEhPKrY/9oNCW6Ay0bQoYdpalSdXCVfB/LvGHyXkUN3
|
||||
3/Zwa0KtNx3wHwS+YRao9rexFnU+WHDKOjjzaKITd3WVjk9rH9k3oY7qGrrywjQI
|
||||
7X3ggKDidUJPNJ7QAPECAwEAAaOCARMwggEPMB0GA1UdDgQWBBQC0b2Fa6ck3osL
|
||||
3tJGbxGe9c1xiTAPBgNVHRMBAf8EBTADAQH/MIHcBgNVHSMEgdQwgdGAFJCT84D3
|
||||
yGumlUeHtGWj6zSBrX98oYGipIGfMIGcMQswCQYDVQQGEwJBUjEhMB8GA1UECAwY
|
||||
VGVzdENlcnRpZmljYXRlU3RhdGVOYW1lMSQwIgYDVQQHDBtUZXN0Q2VydGlmaWNh
|
||||
dGVMb2NhbGl0eU5hbWUxHzAdBgNVBAoMFlRlc3RDZXJ0aWZpY2F0ZU9yZ05hbWUx
|
||||
IzAhBgNVBAsMGlRlc3RDZXJ0aWZpY2F0ZU9yZ1VuaXROYW1lghQiabuc2yGiGvF3
|
||||
EjIgUGH5boW1UzANBgkqhkiG9w0BAQsFAAOCAgEAhvoDyji+OeYUI4ZKPvUtBg5k
|
||||
A7coX9U7B/22BEAngYqSTfa0My53LfROA8DnoUgbyWENe4qRFx5/yYnTnwZ5YqtA
|
||||
5Qtkd6pJRG1YqCC57k0tSAu/xpAXqDGof4w/mejGSt+VkYcQ3f34+L4dS9EDeZ5I
|
||||
H76mHD51+PxZKSzMS1RK8TuYZ+2Sp1AcZVrpjSxL1QE3E6vodDm7tMwZQHAWVAcJ
|
||||
F2qqJFLke6TE3+w1aG/nDswJ5L0D1L9cUkgisXHiavsIpndB+zxjyRauVWHcQcd5
|
||||
o4kBl/NzA78Gx+eJK7kW2NxdkEAJRWbj9+cYpQ6HzlmshcuoQG47wruTQIE2E2hG
|
||||
B1uhfyHK0d5kC12iX74VZK2slbTc0Q5JKE1DfleTLXyY9/m1M+qBIpL7T5Pc6NeJ
|
||||
GQSyAReFs92dNeQ/3p55e1UktkVi2GxAu2/rsZRkRSVFN6XWe+APz7seoF7Eut1H
|
||||
0s39RMx0DEqjpNReGBdxXjpdmaasJeNXW8GJjnGLpqVKmus4a2PtcxqZuiVsHHZV
|
||||
FMr2Gp/XPa8JJFoZ7oAzlzIV1G32KFNJPQnoz4M8LnWMQg+BLverP3MC4FxpBhVg
|
||||
Y9X9KWaA/OYfCrgXFF+phLAZDjutV4Xdorrn9Qtk/d2bw97eT6nv0Y5qAcQm5/Rg
|
||||
RltLHRYT8rBHu26V3jQ=
|
||||
-----END CERTIFICATE-----
|
||||
|
@@ -10,7 +10,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
uuid "github.com/satori/go.uuid"
|
||||
"github.com/google/uuid"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
@@ -52,11 +52,11 @@ func CheckUpdates(toolName, version string) (string, error) {
|
||||
}
|
||||
|
||||
func checkUpdates(url string, timeout time.Duration, toolName, version string) (string, error) {
|
||||
|
||||
client := &http.Client{
|
||||
Timeout: timeout,
|
||||
}
|
||||
payload := fmt.Sprintf("%x;%s;%s", uuid.NewV2(uuid.DomainOrg).String(), PERCONA_TOOLKIT, version)
|
||||
vuuid := uuid.New()
|
||||
payload := fmt.Sprintf("%x;%s;%s", vuuid.String(), PERCONA_TOOLKIT, version)
|
||||
req, err := http.NewRequest("POST", url, strings.NewReader(payload))
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
@@ -18,7 +18,7 @@ func TestCheckUpdates(t *testing.T) {
|
||||
m := strings.Split(string(body), ";")
|
||||
|
||||
advices := []Advice{
|
||||
Advice{
|
||||
{
|
||||
Hash: m[0],
|
||||
ToolName: m[1],
|
||||
Advice: "There is a new version",
|
||||
|
Binary file not shown.
@@ -23,10 +23,10 @@ const (
|
||||
ipv6PG11Port = "6432"
|
||||
ipv6PG12Port = "6432"
|
||||
|
||||
pg9Container = "pt-pg-summary_postgres9_1"
|
||||
pg10Container = "pt-pg-summary_postgres10_1"
|
||||
pg11Container = "pt-pg-summary_postgres11_1"
|
||||
pg12Container = "pt-pg-summary_postgres12_1"
|
||||
pg9Container = "go_postgres9_1"
|
||||
pg10Container = "go_postgres10_1"
|
||||
pg11Container = "go_postgres11_1"
|
||||
pg12Container = "go_postgres12_1"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@@ -4,7 +4,9 @@ export BASEDIR=$(git rev-parse --show-toplevel)
|
||||
export CHECK_SESSIONS=0
|
||||
cd $BASEDIR
|
||||
|
||||
for dir in $(ls -d pt-*)
|
||||
source ${BASEDIR}/src/go/setenv.sh
|
||||
|
||||
for dir in $(ls -d ./src/go/pt-*)
|
||||
do
|
||||
echo "Running tests at $BASEDIR/$dir"
|
||||
cd $BASEDIR/$dir
|
||||
|
@@ -84,6 +84,21 @@ is_deeply(
|
||||
'Basic DSN'
|
||||
);
|
||||
|
||||
is_deeply(
|
||||
$dp->parse('u=a,p=b,F=/something.cnf'),
|
||||
{
|
||||
F => '/something.cnf',
|
||||
P => undef,
|
||||
u => "a",
|
||||
p => "b",
|
||||
h => undef,
|
||||
A => undef,
|
||||
S => undef,
|
||||
D => undef,
|
||||
},
|
||||
'Read from config overrides other params'
|
||||
);
|
||||
|
||||
is_deeply(
|
||||
$dp->parse('S=/tmp/sock'),
|
||||
{ u => undef,
|
||||
@@ -257,7 +272,7 @@ SKIP: {
|
||||
is($d->{h}, '127.0.0.1', 'Left hostname alone');
|
||||
|
||||
my $want = $sandbox_version lt '8.0' ? [ qw(utf8 utf8 utf8) ]: [ qw(utf8mb4 utf8mb4 utf8mb4) ];
|
||||
warn Data::Dumper::Dumper($want);
|
||||
|
||||
is_deeply(
|
||||
$dbh->selectrow_arrayref('select @@character_set_client, @@character_set_connection, @@character_set_results'),
|
||||
$want,
|
||||
@@ -632,6 +647,20 @@ SKIP: {
|
||||
$dbh->disconnect();
|
||||
}
|
||||
|
||||
is_deeply(
|
||||
$dp->parse('h=f000::1,P=12345,u=msandbox,p=msandbox'),
|
||||
{ u => 'msandbox',
|
||||
p => 'msandbox',
|
||||
S => undef,
|
||||
h => 'f000::1',
|
||||
P => '12345',
|
||||
F => undef,
|
||||
D => undef,
|
||||
A => undef,
|
||||
},
|
||||
'IPV6 support'
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# Done.
|
||||
# #############################################################################
|
||||
|
@@ -335,7 +335,6 @@ $res = $ms->wait_for_master(
|
||||
slave_dbh => $slaves[0],
|
||||
timeout => 10,
|
||||
);
|
||||
warn "res->{result}: $res->{result}";
|
||||
|
||||
ok($res->{result} >= 0, 'Wait was successful');
|
||||
|
||||
@@ -868,6 +867,33 @@ SKIP: {
|
||||
|
||||
$sb->stop_sandbox(qw(chan_master1 chan_master2 chan_slave1));
|
||||
}
|
||||
|
||||
my $connected_slaves = [
|
||||
{
|
||||
command => 'Binlog Dump',
|
||||
db => undef,
|
||||
host => '2001:db8:1::242:ac11:3:53902',
|
||||
id => 7,
|
||||
info => undef,
|
||||
rows_examined => 0,
|
||||
rows_sent => 0,
|
||||
state => 'Master has sent all binlog to slave; waiting for more updates',
|
||||
time => 80,
|
||||
user => 'root'
|
||||
},
|
||||
];
|
||||
|
||||
my @g = $ms->_process_slaves_list ($dp, $dsn, $connected_slaves);
|
||||
is (
|
||||
scalar @g,
|
||||
1,
|
||||
"1 slave (IPv6) detected",
|
||||
);
|
||||
is (
|
||||
$g[0]->{h},
|
||||
"[2001:db8:1::242:ac11:3]",
|
||||
"Brackets were added to IPv6 detected slave host",
|
||||
);
|
||||
# #############################################################################
|
||||
# Done.
|
||||
# #############################################################################
|
||||
|
@@ -28,7 +28,7 @@ elsif ( !$slave_dbh ) {
|
||||
} elsif ($sandbox_version lt '5.7') {
|
||||
plan skip_all => 'Only on MySQL 5.7+';
|
||||
} else {
|
||||
plan tests => 5;
|
||||
plan tests => 4;
|
||||
}
|
||||
|
||||
my ($master1_dbh, $master1_dsn) = $sb->start_sandbox(
|
||||
@@ -76,17 +76,10 @@ $output = output(
|
||||
sub { $exit_status = pt_archiver::main(@args) },
|
||||
stderr => 1,
|
||||
);
|
||||
|
||||
isnt(
|
||||
is(
|
||||
$exit_status,
|
||||
0,
|
||||
'Must specify a channel name',
|
||||
);
|
||||
|
||||
like (
|
||||
$output,
|
||||
qr/"channel" was not specified/,
|
||||
'Message saying channel name must be specified'
|
||||
'No need of channel name since there is only one master',
|
||||
);
|
||||
|
||||
push @args, ('--channel', 'masterchan1');
|
||||
|
@@ -57,7 +57,8 @@ system('/tmp/12345/use -e "insert into issue_758.t select sleep(3)"');
|
||||
# Slave seems to be lagging now so the first row should get purged
|
||||
# immediately, then the script should wait about 2 seconds until
|
||||
# slave lag is gone.
|
||||
system("$cmd --source F=$cnf,D=issue_758,t=t --purge --where 'i>0' --check-slave-lag h=127.1,P=12346,u=msandbox,p=msandbox >/dev/null 2>&1 &");
|
||||
#system("$cmd --source F=$cnf,D=issue_758,t=t --purge --where 'i>0' --check-slave-lag h=127.1,P=12346,u=msandbox,p=msandbox >/dev/null 2>&1 &");
|
||||
system("$cmd --source F=$cnf,D=issue_758,t=t --purge --where 'i>0' --check-slave-lag h=127.1,P=12346,u=msandbox,p=msandbox &");
|
||||
|
||||
sleep 1;
|
||||
is_deeply(
|
||||
|
@@ -51,7 +51,6 @@ ok(
|
||||
);
|
||||
|
||||
SKIP: {
|
||||
skip "Skipping in MySQL 8.0.4-rc since there is an error in the server itself. See https://bugs.mysql.com/bug.php?id=89441", 9 if ($sandbox_version ge '8.0');
|
||||
($output, $exit_status) = full_output(
|
||||
sub { pt_online_schema_change::main(@args,
|
||||
"$master_dsn,D=issue26211,t=process_model_inst",
|
||||
|
@@ -28,7 +28,8 @@ if ( !$master_dbh ) {
|
||||
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
||||
# so we need to specify --set-vars innodb_lock_wait_timeout-3 else the
|
||||
# tool will die.
|
||||
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
|
||||
$master_dbh->do('SET @@collation_server="latin1_swedish_ci"');
|
||||
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox,charset=utf8';
|
||||
my @args = (qw(--set-vars innodb_lock_wait_timeout=3 --alter-foreign-keys-method rebuild_constraints));
|
||||
my $output;
|
||||
my $exit_status;
|
||||
@@ -47,6 +48,7 @@ $sb->load_file('master', "$sample/long_fk_constraints.sql");
|
||||
sub { pt_online_schema_change::main(@args,
|
||||
"$master_dsn,D=bug1215587,t=Table1",
|
||||
"--alter", "ENGINE=InnoDB",
|
||||
"--charset", "utf8",
|
||||
qw(--execute)) },
|
||||
);
|
||||
|
||||
@@ -66,10 +68,10 @@ my @sorted_constraints = sort { @$a[0].@$a[1] cmp @$b[0].@$b[1] } @$constraints;
|
||||
is_deeply(
|
||||
\@sorted_constraints,
|
||||
[
|
||||
[ 'Table1', '__fkey1a' ],
|
||||
[ 'Table1', '__fkey_SALES_RECURRING_PROFILE_CUSTOMER_CUSTOMER_ENTITY_ENTITY_I' ],
|
||||
[ 'Table2', '__fkey2b' ],
|
||||
[ 'Table2', '_fkey2a' ],
|
||||
[ 'Table1', '_fkey1a' ],
|
||||
[ 'Table1', '_fkey_SALES_RECURRING_PROFILE_CUSTOMER_CUSTOMER_ENTITY_ENTITY_ID' ],
|
||||
[ 'Table2', '_fkey2b' ],
|
||||
[ 'Table2', 'fkey2a' ],
|
||||
],
|
||||
"First run adds or removes underscore from constraint names, accordingly"
|
||||
);
|
||||
|
@@ -23,10 +23,6 @@ my $master_dbh = $sb->get_dbh_for('master');
|
||||
|
||||
my $vp = VersionParser->new($master_dbh);
|
||||
|
||||
if ($vp->cmp('8.0.14') > -1 && $vp->flavor() !~ m/maria/i) {
|
||||
plan skip_all => 'Cannot run this test under the current MySQL version';
|
||||
}
|
||||
|
||||
if ( !$master_dbh ) {
|
||||
plan skip_all => 'Cannot connect to sandbox master';
|
||||
}
|
||||
|
@@ -58,8 +58,8 @@ is_deeply(
|
||||
$constraints,
|
||||
[
|
||||
['person', '_fk_testId'],
|
||||
['test_table', '_fk_person'],
|
||||
['test_table', '__fk_refId'],
|
||||
['test_table', 'fk_person'],
|
||||
['test_table', 'fk_refId'],
|
||||
],
|
||||
"First run adds or removes underscore from constraint names, accordingly"
|
||||
);
|
||||
@@ -79,9 +79,9 @@ $constraints = $master_dbh->selectall_arrayref("SELECT TABLE_NAME, CONSTRAINT_NA
|
||||
is_deeply(
|
||||
$constraints,
|
||||
[
|
||||
['person', '__fk_testId'],
|
||||
['test_table', '_fk_refId'],
|
||||
['test_table', '__fk_person'],
|
||||
['person', '_fk_testId'],
|
||||
['test_table', 'fk_person'],
|
||||
['test_table', 'fk_refId'],
|
||||
],
|
||||
"Second run self-referencing will be one due to rebuild_constraints"
|
||||
);
|
||||
@@ -100,7 +100,7 @@ $constraints = $master_dbh->selectall_arrayref("SELECT TABLE_NAME, CONSTRAINT_NA
|
||||
is_deeply(
|
||||
$constraints,
|
||||
[
|
||||
['person', 'fk_testId'],
|
||||
['person', '_fk_testId'],
|
||||
['test_table', 'fk_person'],
|
||||
['test_table', 'fk_refId'],
|
||||
],
|
||||
|
69
t/pt-table-checksum/pt-1766.t
Normal file
69
t/pt-table-checksum/pt-1766.t
Normal file
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
BEGIN {
|
||||
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
|
||||
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
|
||||
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
|
||||
};
|
||||
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
use English qw(-no_match_vars);
|
||||
use Test::More;
|
||||
|
||||
use PerconaTest;
|
||||
use Sandbox;
|
||||
use SqlModes;
|
||||
use threads;
|
||||
use Time::HiRes qw( usleep );
|
||||
use constant PTDEBUG => $ENV{PTDEBUG} || 0;
|
||||
|
||||
require "$trunk/bin/pt-table-checksum";
|
||||
|
||||
my $dp = new DSNParser(opts=>$dsn_opts);
|
||||
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
|
||||
my $dbh = $sb->get_dbh_for('master');
|
||||
my $slave1_dbh = $sb->get_dbh_for('slave1');
|
||||
|
||||
if ( !$dbh ) {
|
||||
plan skip_all => 'Cannot connect to sandbox master';
|
||||
}
|
||||
else {
|
||||
plan tests => 2;
|
||||
}
|
||||
|
||||
my $num_rows = 1000;
|
||||
my $table = 't1';
|
||||
|
||||
$dbh->do("DROP DATABASE IF EXISTS test");
|
||||
$dbh->do("CREATE DATABASE IF NOT EXISTS test");
|
||||
$dbh->do("CREATE TABLE `test`.`$table` (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(5)) Engine=InnoDB");
|
||||
|
||||
diag(`util/mysql_random_data_load --host=127.0.0.1 --port=12345 --user=msandbox --password=msandbox test $table $num_rows`);
|
||||
$slave1_dbh->do("DELETE FROM `test`.`$table` WHERE 1=1");
|
||||
|
||||
diag("Starting checksum");
|
||||
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
||||
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
|
||||
# And --max-load "" prevents waiting for status variables.
|
||||
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
|
||||
my @args = ($master_dsn, qw(--no-check-binlog-format --chunk-size 10));
|
||||
my $output;
|
||||
|
||||
$output = output(
|
||||
sub { pt_table_checksum::main(@args) },
|
||||
stderr => 1,
|
||||
);
|
||||
|
||||
like(
|
||||
$output,
|
||||
qr/100\s+1000\s+10\s+102\s+0\s+\d+\.\d+\s+test.t1/,
|
||||
"Truncating tables while checksum is running"
|
||||
);
|
||||
|
||||
# #############################################################################
|
||||
# Done.
|
||||
# #############################################################################
|
||||
$sb->wipe_clean($dbh);
|
||||
ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
|
||||
exit;
|
@@ -6,9 +6,9 @@ Starting checksum ...
|
||||
|
||||
REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', convert(`c` using utf8mb4), CONCAT(ISNULL(`c`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `osc`.`t2` FORCE INDEX(`c`) WHERE (((? IS NULL OR `c` >= ?))) AND (((? IS NULL OR `c` <= ?))) /*checksum chunk*/
|
||||
|
||||
REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `osc`.`t2` FORCE INDEX(`c`) WHERE ((((? IS NOT NULL AND `c` IS NULL) OR (`c` < ?)))) ORDER BY `c` /*past lower chunk*/
|
||||
REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `osc`.`t2` FORCE INDEX(`c`) WHERE (((? IS NOT NULL AND `c` IS NULL) OR (`c` < ?))) ORDER BY `c` /*past lower chunk*/
|
||||
|
||||
REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `osc`.`t2` FORCE INDEX(`c`) WHERE ((((? IS NULL AND `c` IS NOT NULL) OR (`c` > ?)))) ORDER BY `c` /*past upper chunk*/
|
||||
REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `osc`.`t2` FORCE INDEX(`c`) WHERE (((? IS NULL AND `c` IS NOT NULL) OR (`c` > ?))) ORDER BY `c` /*past upper chunk*/
|
||||
|
||||
SELECT /*!40001 SQL_NO_CACHE */ `c`, `c` FROM `osc`.`t2` FORCE INDEX(`c`) WHERE (((? IS NULL OR `c` >= ?))) ORDER BY `c` LIMIT ?, 2 /*next chunk boundary*/
|
||||
|
||||
|
Reference in New Issue
Block a user