feat(DB): New DB exporter and versioning tools for DB squashes (#20920)

This commit is contained in:
Kitzunu
2024-12-16 16:13:05 +01:00
committed by GitHub
parent 35f316b1a6
commit 3a20433827
5 changed files with 503 additions and 25 deletions

View File

@@ -1,42 +1,31 @@
New routines around handling database squashes since https://github.com/azerothcore/azerothcore-wotlk/pull/18197
New process around handling database squashes since https://github.com/azerothcore/azerothcore-wotlk/pull/18197
> [!CAUTION]
> These steps are only for project maintainers who intend to update base files.
During the DB squash procedure, we do NOT move files.
The archive dir is NO longer used as part of the DB squash procedure,
but simply as a place where to move update files when they get too many.
Moving files to the archive folder is NOT part of the squash procedure anymore.
as the `updates` table in base files always will contain the entries from the updates dir they will never be run again on a clean setup.
How to do the squash.
> [!IMPORTANT]
> A squash needs to be done on a clean database. Drop all tables in Auth, Characters and World.
1. Update the acore.json file. Increment version by one
2. Create a new file in the updates/db_world/ dir, the file should be incremented containing
1. Update the acore.json and DB version by running VersionUpdater.ps1 (Located in ..\apps\VersionUpdater\)
> [!NOTE]
> It should NOT be placed as a pending update and should only be done on world db. This is because we want the updated DB version to follow into the base files
> Read the versionupdater.md file to use it properly.
2. Drop all your databases, and run Worldserver to populate a clean database.
3. Export the databases using the DatabaseExporter.ps1 (Located in ..\apps\DatabaseExporter\)
```sql
UPDATE `version` SET `db_version`='ACDB 335.11-dev', `cache_id`=11 LIMIT 1;
```
> [!NOTE]
> Remember to increment the db_version and cache_id the same as acore.json
> Read the databaseexporter.md file to use it properly.
4. Drop all your databases, and run Worldserver to populate a clean database.
5. Export the databases using i.e HeidiSQL
6. Make a PR
> [!IMPORTANT]
> Set the following values
> Tables -> DROP + CREATE
> Data -> Delete + insert (truncate existing data)
> Max INSERT size -> 1024
> This is so that no unexpected issues occur.
> No DB PRs should be merged during this process!
6. Move the exported table files into the base directory to update the existing files.
7. Make a PR
> [!NOTE]
> During the DB squash procedure, we do NOT move files.
> The archive dir is NO longer used as part of the DB squash procedure,
> but simply as a place where to move update files when they get too many
> as the `updates` table in base files always will contain the entries from the updates dir they will never be run again on a clean setup.