From 6438a37fb5869c362d08d4404da3b1f8dd2d983a Mon Sep 17 00:00:00 2001 From: Akkadius Date: Mon, 9 Mar 2020 16:31:43 -0500 Subject: [PATCH] Split up state table dump --- common/database/database_dump_service.cpp | 28 +++++++++++++++++++++-- common/database/database_dump_service.h | 26 ++++++++++++--------- common/database_schema.h | 17 +++++++------- utils/sql/peq-dump/peq-dump.sh | 12 ++++++---- world/world_server_command_handler.cpp | 15 +++++++----- 5 files changed, 66 insertions(+), 32 deletions(-) diff --git a/common/database/database_dump_service.cpp b/common/database/database_dump_service.cpp index 7610f3759..5d6da79e9 100644 --- a/common/database/database_dump_service.cpp +++ b/common/database/database_dump_service.cpp @@ -188,12 +188,21 @@ std::string DatabaseDumpService::GetSystemTablesList() tables_list += table + " "; } - tables = DatabaseSchema::GetStateTables(); + tables = DatabaseSchema::GetVersionTables(); for (const auto &table : tables) { tables_list += table + " "; } - tables = DatabaseSchema::GetVersionTables(); + return trim(tables_list); +} +/** + * @return + */ +std::string DatabaseDumpService::GetStateTablesList() +{ + std::string tables_list; + + std::vector tables = DatabaseSchema::GetStateTables(); for (const auto &table : tables) { tables_list += table + " "; } @@ -300,6 +309,11 @@ void DatabaseDumpService::Dump() dump_descriptor += "-system"; } + if (IsDumpStateTables()) { + tables_to_dump += GetStateTablesList() + " "; + dump_descriptor += "-state"; + } + if (IsDumpContentTables()) { tables_to_dump += GetContentTablesList() + " "; dump_descriptor += "-content"; @@ -526,3 +540,13 @@ void DatabaseDumpService::SetDumpDropTableSyntaxOnly(bool dump_drop_table_syntax { DatabaseDumpService::dump_drop_table_syntax_only = dump_drop_table_syntax_only; } + +bool DatabaseDumpService::IsDumpStateTables() const +{ + return dump_state_tables; +} + +void DatabaseDumpService::SetDumpStateTables(bool dump_state_tables) +{ + DatabaseDumpService::dump_state_tables = dump_state_tables; +} diff --git a/common/database/database_dump_service.h b/common/database/database_dump_service.h index 20f57e85c..439a380ba 100644 --- a/common/database/database_dump_service.h +++ b/common/database/database_dump_service.h @@ -51,19 +51,22 @@ public: void SetDumpOutputToConsole(bool dump_output_to_console); bool IsDumpDropTableSyntaxOnly() const; void SetDumpDropTableSyntaxOnly(bool dump_drop_table_syntax_only); + bool IsDumpStateTables() const; + void SetDumpStateTables(bool dump_state_tables); private: - bool dump_all_tables = false; - bool dump_system_tables = false; - bool dump_content_tables = false; - bool dump_player_tables = false; - bool dump_query_server_tables = false; - bool dump_login_server_tables = false; - bool dump_with_no_data = false; - bool dump_table_lock = false; - bool dump_with_compression = false; - bool dump_output_to_console = false; - bool dump_drop_table_syntax_only = false; + bool dump_all_tables = false; + bool dump_state_tables = false; + bool dump_system_tables = false; + bool dump_content_tables = false; + bool dump_player_tables = false; + bool dump_query_server_tables = false; + bool dump_login_server_tables = false; + bool dump_with_no_data = false; + bool dump_table_lock = false; + bool dump_with_compression = false; + bool dump_output_to_console = false; + bool dump_drop_table_syntax_only = false; std::string dump_path; std::string dump_file_name; @@ -73,6 +76,7 @@ private: std::string GetBaseMySQLDumpCommand(); std::string GetPlayerTablesList(); std::string GetSystemTablesList(); + std::string GetStateTablesList(); std::string GetContentTablesList(); std::string GetLoginTableList(); bool IsTarAvailable(); diff --git a/common/database_schema.h b/common/database_schema.h index 40c9c39f1..75856eb9f 100644 --- a/common/database_schema.h +++ b/common/database_schema.h @@ -99,8 +99,6 @@ namespace DatabaseSchema { "account_rewards", "adventure_details", "adventure_stats", - "bugs", - "bug_reports", "buyer", "char_recipe_list", "character_activities", @@ -133,7 +131,6 @@ namespace DatabaseSchema { "completed_tasks", "data_buckets", "discovered_items", - "eventlog", "faction_values", "friends", "guild_bank", @@ -149,9 +146,9 @@ namespace DatabaseSchema { "petitions", "player_titlesets", "quest_globals", - "saylink", "sharedbank", - "reports", + "spell_buckets", + "spell_globals", "timers", "titles", "trader", @@ -263,6 +260,7 @@ namespace DatabaseSchema { { return { "banned_ips", + "chatchannels", "command_settings", "db_str", "eqtime", @@ -318,7 +316,9 @@ namespace DatabaseSchema { { return { "adventure_members", - "chatchannels", + "bugs", + "bug_reports", + "eventlog", "group_id", "group_leaders", "item_tick", @@ -329,8 +329,9 @@ namespace DatabaseSchema { "raid_leaders", "raid_members", "respawn_times", - "spell_buckets", - "spell_globals", + "reports", + "saylink", + }; } diff --git a/utils/sql/peq-dump/peq-dump.sh b/utils/sql/peq-dump/peq-dump.sh index afcb63212..06300fbd7 100755 --- a/utils/sql/peq-dump/peq-dump.sh +++ b/utils/sql/peq-dump/peq-dump.sh @@ -34,14 +34,16 @@ bash -c "${world_bin} database:dump --content-tables --drop-table-syntax-only -- bash -c "${world_bin} database:dump --login-tables --drop-table-syntax-only --dump-output-to-console > ${dump_path}drop_tables_login.sql" bash -c "${world_bin} database:dump --player-tables --drop-table-syntax-only --dump-output-to-console > ${dump_path}drop_tables_player.sql" bash -c "${world_bin} database:dump --system-tables --drop-table-syntax-only --dump-output-to-console > ${dump_path}drop_tables_system.sql" +bash -c "${world_bin} database:dump --state-tables --drop-table-syntax-only --dump-output-to-console > ${dump_path}drop_tables_state.sql" bash -c "${world_bin} database:dump --query-serv-tables --drop-table-syntax-only --dump-output-to-console > ${dump_path}drop_tables_queryserv.sql" ############################################# # generate "create_" table files ############################################# -bash -c "${world_bin} database:dump --content-tables --dump-output-to-console > ${dump_path}create_tables_content.sql" -bash -c "${world_bin} database:dump --login-tables --table-structure-only --dump-output-to-console > ${dump_path}create_tables_login.sql" -bash -c "${world_bin} database:dump --player-tables --table-structure-only --dump-output-to-console > ${dump_path}create_tables_player.sql" -bash -c "${world_bin} database:dump --system-tables --dump-output-to-console > ${dump_path}create_tables_system.sql" -bash -c "${world_bin} database:dump --query-serv-tables --table-structure-only --dump-output-to-console > ${dump_path}create_tables_queryserv.sql" +bash -c "${world_bin} database:dump --login-tables --table-structure-only --dump-output-to-console | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > ${dump_path}create_tables_login.sql" +bash -c "${world_bin} database:dump --player-tables --table-structure-only --dump-output-to-console | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > ${dump_path}create_tables_player.sql" +bash -c "${world_bin} database:dump --state-tables --table-structure-only --dump-output-to-console | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > ${dump_path}create_tables_state.sql" +bash -c "${world_bin} database:dump --query-serv-tables --table-structure-only --dump-output-to-console | sed 's/ AUTO_INCREMENT=[0-9]*\b//g' > ${dump_path}create_tables_queryserv.sql" +bash -c "${world_bin} database:dump --content-tables --dump-output-to-console > ${dump_path}create_tables_content.sql" +bash -c "${world_bin} database:dump --system-tables --dump-output-to-console > ${dump_path}create_tables_system.sql" \ No newline at end of file diff --git a/world/world_server_command_handler.cpp b/world/world_server_command_handler.cpp index 5ccbf167c..9bad28541 100644 --- a/world/world_server_command_handler.cpp +++ b/world/world_server_command_handler.cpp @@ -224,6 +224,7 @@ namespace WorldserverCommandHandler { "--content-tables", "--login-tables", "--player-tables", + "--state-tables", "--system-tables", "--query-serv-tables", "--table-structure-only", @@ -250,13 +251,15 @@ namespace WorldserverCommandHandler { /** * Set Option */ - database_dump_service->SetDumpContentTables(cmd[{"-c", "--content-tables"}] || dump_all); - database_dump_service->SetDumpLoginServerTables(cmd[{"-c", "--login-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->SetDumpWithNoData(cmd[{"-c", "--table-structure-only"}]); - database_dump_service->SetDumpQueryServerTables(cmd[{"--query-serv-tables"}]); + database_dump_service->SetDumpContentTables(cmd[{"--content-tables"}] || dump_all); + database_dump_service->SetDumpLoginServerTables(cmd[{"--login-tables"}] || dump_all); + database_dump_service->SetDumpPlayerTables(cmd[{"--player-tables"}] || dump_all); + database_dump_service->SetDumpStateTables(cmd[{"--state-tables"}] || dump_all); + database_dump_service->SetDumpSystemTables(cmd[{"--system-tables"}] || dump_all); + database_dump_service->SetDumpQueryServerTables(cmd[{"--query-serv-tables"}] || dump_all); database_dump_service->SetDumpAllTables(dump_all); + + database_dump_service->SetDumpWithNoData(cmd[{"--table-structure-only"}]); database_dump_service->SetDumpTableLock(cmd[{"--table-lock"}]); database_dump_service->SetDumpWithCompression(cmd[{"--compress"}]); database_dump_service->SetDumpOutputToConsole(cmd[{"--dump-output-to-console"}]);