mirror of
https://github.com/EQEmu/Server.git
synced 2026-04-14 20:12:26 +00:00
Add query-serv table dump option, add option to dump directly to console, add initializers for dump settings
This commit is contained in:
parent
dd1470892d
commit
bfecd6ad14
@ -29,10 +29,13 @@
|
|||||||
#include "../file_util.h"
|
#include "../file_util.h"
|
||||||
|
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
|
||||||
#if _WIN32
|
#if _WIN32
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DATABASE_DUMP_PATH "backups/"
|
#define DATABASE_DUMP_PATH "backups/"
|
||||||
@ -159,6 +162,20 @@ std::string DatabaseDumpService::GetLoginTableList()
|
|||||||
return trim(tables_list);
|
return trim(tables_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
std::string DatabaseDumpService::GetQueryServTables()
|
||||||
|
{
|
||||||
|
std::string tables_list;
|
||||||
|
std::vector<std::string> tables = DatabaseSchema::GetQueryServerTables();
|
||||||
|
for (const auto &table : tables) {
|
||||||
|
tables_list += table + " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
return trim(tables_list);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@ -238,6 +255,10 @@ void DatabaseDumpService::Dump()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsDumpOutputToConsole()) {
|
||||||
|
LogSys.SilenceConsoleLogging();
|
||||||
|
}
|
||||||
|
|
||||||
LogInfo("MySQL installed [{}]", GetMySQLVersion());
|
LogInfo("MySQL installed [{}]", GetMySQLVersion());
|
||||||
|
|
||||||
SetDumpFileName(EQEmuConfig::get()->DatabaseDB + '-' + GetDumpDate());
|
SetDumpFileName(EQEmuConfig::get()->DatabaseDB + '-' + GetDumpDate());
|
||||||
@ -266,43 +287,59 @@ void DatabaseDumpService::Dump()
|
|||||||
|
|
||||||
if (!IsDumpAllTables()) {
|
if (!IsDumpAllTables()) {
|
||||||
if (IsDumpPlayerTables()) {
|
if (IsDumpPlayerTables()) {
|
||||||
tables_to_dump += GetPlayerTablesList();
|
tables_to_dump += GetPlayerTablesList() + " ";
|
||||||
dump_descriptor += "-player";
|
dump_descriptor += "-player";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsDumpSystemTables()) {
|
if (IsDumpSystemTables()) {
|
||||||
tables_to_dump += GetSystemTablesList();
|
tables_to_dump += GetSystemTablesList() + " ";
|
||||||
dump_descriptor += "-system";
|
dump_descriptor += "-system";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsDumpContentTables()) {
|
if (IsDumpContentTables()) {
|
||||||
tables_to_dump += GetContentTablesList();
|
tables_to_dump += GetContentTablesList() + " ";
|
||||||
dump_descriptor += "-content";
|
dump_descriptor += "-content";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsDumpLoginServerTables()) {
|
if (IsDumpLoginServerTables()) {
|
||||||
tables_to_dump += GetLoginTableList();
|
tables_to_dump += GetLoginTableList() + " ";
|
||||||
dump_descriptor += "-login";
|
dump_descriptor += "-login";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsDumpQueryServerTables()) {
|
||||||
|
tables_to_dump += GetQueryServTables();
|
||||||
|
dump_descriptor += "-queryserv";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dump_descriptor.empty()) {
|
if (!dump_descriptor.empty()) {
|
||||||
SetDumpFileName(GetDumpFileName() + dump_descriptor);
|
SetDumpFileName(GetDumpFileName() + dump_descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If we are dumping to stdout then we don't generate a file
|
||||||
|
*/
|
||||||
|
std::string pipe_file;
|
||||||
|
if (!IsDumpOutputToConsole()) {
|
||||||
|
pipe_file = fmt::format(" > {}.sql", GetDumpFileNameWithPath());
|
||||||
|
}
|
||||||
|
|
||||||
std::string execute_command = fmt::format(
|
std::string execute_command = fmt::format(
|
||||||
"{} {} {} > {}.sql",
|
"{} {} {} {}",
|
||||||
GetBaseMySQLDumpCommand(),
|
GetBaseMySQLDumpCommand(),
|
||||||
options,
|
options,
|
||||||
tables_to_dump,
|
tables_to_dump,
|
||||||
GetDumpFileNameWithPath()
|
pipe_file
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!FileUtil::exists(GetSetDumpPath())) {
|
if (!FileUtil::exists(GetSetDumpPath()) && !IsDumpOutputToConsole()) {
|
||||||
FileUtil::mkdir(GetSetDumpPath());
|
FileUtil::mkdir(GetSetDumpPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
execute(execute_command, false);
|
std::string execution_result = execute(execute_command, IsDumpOutputToConsole());
|
||||||
|
if (!execution_result.empty()) {
|
||||||
|
std::cout << execution_result;
|
||||||
|
}
|
||||||
|
|
||||||
if (!tables_to_dump.empty()) {
|
if (!tables_to_dump.empty()) {
|
||||||
LogInfo("Dumping Tables [{}]", tables_to_dump);
|
LogInfo("Dumping Tables [{}]", tables_to_dump);
|
||||||
@ -310,7 +347,7 @@ void DatabaseDumpService::Dump()
|
|||||||
|
|
||||||
LogInfo("Database dump created at [{}.sql]", GetDumpFileNameWithPath());
|
LogInfo("Database dump created at [{}.sql]", GetDumpFileNameWithPath());
|
||||||
|
|
||||||
if (IsDumpWithCompression()) {
|
if (IsDumpWithCompression() && !IsDumpOutputToConsole()) {
|
||||||
if (HasCompressionBinary()) {
|
if (HasCompressionBinary()) {
|
||||||
LogInfo("Compression requested... Compressing dump [{}.sql]", GetDumpFileNameWithPath());
|
LogInfo("Compression requested... Compressing dump [{}.sql]", GetDumpFileNameWithPath());
|
||||||
|
|
||||||
@ -331,8 +368,10 @@ void DatabaseDumpService::Dump()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LogDebug("[{}] dump-to-console", IsDumpOutputToConsole());
|
||||||
// LogDebug("[{}] dump-path", GetSetDumpPath());
|
// LogDebug("[{}] dump-path", GetSetDumpPath());
|
||||||
// LogDebug("[{}] compression", (IsDumpWithCompression() ? "true" : "false"));
|
// LogDebug("[{}] compression", (IsDumpWithCompression() ? "true" : "false"));
|
||||||
|
// LogDebug("[{}] query-serv", (IsDumpQueryServerTables() ? "true" : "false"));
|
||||||
// LogDebug("[{}] has-compression-binary", (HasCompressionBinary() ? "true" : "false"));
|
// LogDebug("[{}] has-compression-binary", (HasCompressionBinary() ? "true" : "false"));
|
||||||
// LogDebug("[{}] content", (IsDumpContentTables() ? "true" : "false"));
|
// LogDebug("[{}] content", (IsDumpContentTables() ? "true" : "false"));
|
||||||
// LogDebug("[{}] no-data", (IsDumpWithNoData() ? "true" : "false"));
|
// LogDebug("[{}] no-data", (IsDumpWithNoData() ? "true" : "false"));
|
||||||
@ -439,3 +478,23 @@ const std::string &DatabaseDumpService::GetDumpFileName() const
|
|||||||
{
|
{
|
||||||
return dump_file_name;
|
return dump_file_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DatabaseDumpService::IsDumpQueryServerTables() const
|
||||||
|
{
|
||||||
|
return dump_query_server_tables;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DatabaseDumpService::SetDumpQueryServerTables(bool dump_query_server_tables)
|
||||||
|
{
|
||||||
|
DatabaseDumpService::dump_query_server_tables = dump_query_server_tables;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DatabaseDumpService::IsDumpOutputToConsole() const
|
||||||
|
{
|
||||||
|
return dump_output_to_console;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DatabaseDumpService::SetDumpOutputToConsole(bool dump_output_to_console)
|
||||||
|
{
|
||||||
|
DatabaseDumpService::dump_output_to_console = dump_output_to_console;
|
||||||
|
}
|
||||||
@ -45,16 +45,22 @@ public:
|
|||||||
void SetDumpPath(const std::string &dump_path);
|
void SetDumpPath(const std::string &dump_path);
|
||||||
const std::string &GetDumpFileName() const;
|
const std::string &GetDumpFileName() const;
|
||||||
void SetDumpFileName(const std::string &dump_file_name);
|
void SetDumpFileName(const std::string &dump_file_name);
|
||||||
|
bool IsDumpQueryServerTables() const;
|
||||||
|
void SetDumpQueryServerTables(bool dump_query_server_tables);
|
||||||
|
bool IsDumpOutputToConsole() const;
|
||||||
|
void SetDumpOutputToConsole(bool dump_output_to_console);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool dump_all_tables;
|
bool dump_all_tables = false;
|
||||||
bool dump_system_tables;
|
bool dump_system_tables = false;
|
||||||
bool dump_content_tables;
|
bool dump_content_tables = false;
|
||||||
bool dump_player_tables;
|
bool dump_player_tables = false;
|
||||||
bool dump_login_server_tables;
|
bool dump_query_server_tables = false;
|
||||||
bool dump_with_no_data;
|
bool dump_login_server_tables = false;
|
||||||
bool dump_no_table_lock;
|
bool dump_with_no_data = false;
|
||||||
bool dump_with_compression;
|
bool dump_no_table_lock = false;
|
||||||
|
bool dump_with_compression = false;
|
||||||
|
bool dump_output_to_console = false;
|
||||||
std::string dump_path;
|
std::string dump_path;
|
||||||
std::string dump_file_name;
|
std::string dump_file_name;
|
||||||
|
|
||||||
@ -71,6 +77,7 @@ private:
|
|||||||
bool HasCompressionBinary();
|
bool HasCompressionBinary();
|
||||||
std::string GetDumpFileNameWithPath();
|
std::string GetDumpFileNameWithPath();
|
||||||
std::string GetSetDumpPath();
|
std::string GetSetDumpPath();
|
||||||
|
std::string GetQueryServTables();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -233,7 +233,6 @@ namespace DatabaseSchema {
|
|||||||
"task_activities",
|
"task_activities",
|
||||||
"tasks",
|
"tasks",
|
||||||
"tasksets",
|
"tasksets",
|
||||||
"titles",
|
|
||||||
"tradeskill_recipe",
|
"tradeskill_recipe",
|
||||||
"tradeskill_recipe_entries",
|
"tradeskill_recipe_entries",
|
||||||
"traps",
|
"traps",
|
||||||
@ -282,6 +281,32 @@ namespace DatabaseSchema {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets QueryServer tables
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
static std::vector<std::string> GetQueryServerTables()
|
||||||
|
{
|
||||||
|
return {
|
||||||
|
"qs_merchant_transaction_record",
|
||||||
|
"qs_merchant_transaction_record_entries",
|
||||||
|
"qs_player_aa_rate_hourly",
|
||||||
|
"qs_player_delete_record",
|
||||||
|
"qs_player_delete_record_entries",
|
||||||
|
"qs_player_events",
|
||||||
|
"qs_player_handin_record",
|
||||||
|
"qs_player_handin_record_entries",
|
||||||
|
"qs_player_move_record",
|
||||||
|
"qs_player_move_record_entries",
|
||||||
|
"qs_player_npc_kill_record",
|
||||||
|
"qs_player_npc_kill_record_entries",
|
||||||
|
"qs_player_speech",
|
||||||
|
"qs_player_trade_record",
|
||||||
|
"qs_player_trade_record_entries",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets state tables
|
* Gets state tables
|
||||||
* Tables that keep track of server state
|
* Tables that keep track of server state
|
||||||
|
|||||||
@ -225,9 +225,11 @@ namespace WorldserverCommandHandler {
|
|||||||
"--login-tables",
|
"--login-tables",
|
||||||
"--player-tables",
|
"--player-tables",
|
||||||
"--system-tables",
|
"--system-tables",
|
||||||
|
"--query-serv-tables",
|
||||||
"--table-structure-only",
|
"--table-structure-only",
|
||||||
"--no-table-lock",
|
"--no-table-lock",
|
||||||
"--dump-path=",
|
"--dump-path=",
|
||||||
|
"--dump-output-to-console",
|
||||||
"--compress"
|
"--compress"
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -252,9 +254,11 @@ namespace WorldserverCommandHandler {
|
|||||||
database_dump_service->SetDumpPlayerTables(cmd[{"-c", "--player-tables"}] || dump_all);
|
database_dump_service->SetDumpPlayerTables(cmd[{"-c", "--player-tables"}] || dump_all);
|
||||||
database_dump_service->SetDumpSystemTables(cmd[{"-c", "--system-tables"}] || dump_all);
|
database_dump_service->SetDumpSystemTables(cmd[{"-c", "--system-tables"}] || dump_all);
|
||||||
database_dump_service->SetDumpWithNoData(cmd[{"-c", "--table-structure-only"}]);
|
database_dump_service->SetDumpWithNoData(cmd[{"-c", "--table-structure-only"}]);
|
||||||
|
database_dump_service->SetDumpQueryServerTables(cmd[{"--query-serv-tables"}]);
|
||||||
database_dump_service->SetDumpAllTables(dump_all);
|
database_dump_service->SetDumpAllTables(dump_all);
|
||||||
database_dump_service->SetDumpNoTableLock(cmd[{"--no-table-lock"}]);
|
database_dump_service->SetDumpNoTableLock(cmd[{"--no-table-lock"}]);
|
||||||
database_dump_service->SetDumpWithCompression(cmd[{"--compress"}]);
|
database_dump_service->SetDumpWithCompression(cmd[{"--compress"}]);
|
||||||
|
database_dump_service->SetDumpOutputToConsole(cmd[{"--dump-output-to-console"}]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dump
|
* Dump
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user