From 3477a467e685265a2c474e5229157d5fa06baa5a Mon Sep 17 00:00:00 2001 From: BohuTANG Date: Sat, 23 May 2020 14:38:30 +0800 Subject: [PATCH] Add master connect flags and change DryRunEvent parse to ignore --- src/Core/MySQLReplication.cpp | 7 +------ src/Core/tests/mysql_protocol.cpp | 30 +++++++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/Core/MySQLReplication.cpp b/src/Core/MySQLReplication.cpp index decc31f3140..0c74f9a4f34 100644 --- a/src/Core/MySQLReplication.cpp +++ b/src/Core/MySQLReplication.cpp @@ -704,12 +704,7 @@ namespace MySQLReplication } } - void DryRunEvent::parseImpl(ReadBuffer & payload) - { - while (payload.next()) - { - } - } + void DryRunEvent::parseImpl(ReadBuffer & payload) { payload.ignore(header.event_size - EVENT_HEADER_LENGTH); } void DryRunEvent::dump() const { diff --git a/src/Core/tests/mysql_protocol.cpp b/src/Core/tests/mysql_protocol.cpp index 9564bdb544c..a57773e4eb9 100644 --- a/src/Core/tests/mysql_protocol.cpp +++ b/src/Core/tests/mysql_protocol.cpp @@ -5,8 +5,9 @@ #include #include +#include -int main(int, char **) +int main(int argc, char ** argv) { using namespace DB; using namespace MySQLProtocol; @@ -164,14 +165,37 @@ int main(int, char **) { try { + boost::program_options::options_description desc("Allowed options"); + desc.add_options()("host", boost::program_options::value()->required(), "master host")( + "port", boost::program_options::value()->required(), "master port")( + "user", boost::program_options::value()->required(), "master user")( + "password", boost::program_options::value()->required(), "master password")( + "db", boost::program_options::value()->required(), "replicate do db"); + + boost::program_options::variables_map options; + boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), options); + if (argc == 0) + { + return 1; + } + + auto host = options.at("host").as(); + auto port = options.at("port").as(); + auto master_user = options.at("user").as(); + auto master_password = options.at("password").as(); + auto replicate_db = options.at("db").as(); + + std::cerr << "Master Host: " << host << ", Port: " << port << ", User: " << master_user << ", Password: " << master_password + << ", Replicate DB: " << replicate_db << std::endl; + UInt32 slave_id = 9004; - MySQLClient slave("127.0.0.1", 9001, "default", "123"); + MySQLClient slave(host, port, master_user, master_password); /// Connect to the master. slave.connect(); /// start to dump binlog. - slave.startBinlogDump(slave_id, "dbtest", "", 4); + slave.startBinlogDump(slave_id, replicate_db, "", 4); /// Read one binlog event on by one. while (true)