qtopology-mysql
v2.2.1
Published
MySQL-based coordination storage for QTopology
Downloads
11
Readme
qtopology-mysql
This package contains coordination-storage plugin for QTopology that uses MySQL
database to store and manipulate coordination data.
NPM package: https://www.npmjs.com/package/qtopology-mysql
Installation
npm install qtopology-mysql
Initialization
The database doesn't need to be prepared in advance. All the objects will be created automatically, using the scripts in the db
directory:
- init.sql - create initial database state that will be used to upgrade schema to latest version.
- reset.sql - resets database schema to the initial state. Removes all data, tables and stored procedures.
- clear.sql - just erases all data, but leaves schema in tact. Should be used on the latest schema.
- vX.sql - version upgrades.
Each time the coordinator is instantiated, it first peforms database initialization by executing these steps:
run init.js
fetch version from database
detect version-upgrade files that need to be run
for each upgrade file
run file
update version
If database schema is already at the latest version, then nothing happens.
Database schema
Tables
|Table|Description|
|-----|-----|
| qtopology_settings | Simple settings, also contains version information |
| qtopology_worker | List of workers, their statuses and latest pings |
| qtopology_topology | List of topologies, their statuses and latest pings |
| qtopology_message | Message queue for workers |
| qtopology_worker_history | List of important changes inside qtopology_worker
table |
| qtopology_topology_hostory | List of important changes inside qtopology_topology
table |
Stored procedures
|Table|Description| |-----|-----| | qtopology_sp_add_topology_history | Enters new historical record for topology | | qtopology_sp_add_worker_history | Enters new historical record for worker | | qtopology_sp_announce_leader_candidacy | Sets status for given worker that it is a candidate for leadership | | qtopology_sp_check_leader_candidacy | Checks if leadership candidacy succeeded for given worker | | qtopology_sp_disable_defunct_leaders | Disables leaders that have been inactive too long or are marked as dead | | qtopology_sp_disable_defunct_workers | Disables workers that have been inactive too long or are marked as dead | | qtopology_sp_leader_ping | Updates last ping for given leader | | qtopology_sp_worker_ping | Updates last ping for given worker, doesn't change status | | qtopology_sp_messages_for_worker | Retrieves messages for single worker | | qtopology_sp_refresh_statuses | Refreshes all statuses by calling other stored procedures that update inactive workers etc. | | qtopology_sp_register_topology | Registers new topology. If topology exists, it is overwritten. | | qtopology_sp_register_worker | Registers new worker. If worker exists, it is overwritten. | | qtopology_sp_unassign_waiting_topologies | Sets topologies that have been assigned a while ago but are not running as unassigned. | | qtopology_sp_worker_statuses | Counts how many workers are in certain leadership status. |