|
| 1 | +# MygramDB v1.2.5 Release Notes |
| 2 | + |
| 3 | +**Release Date:** 2025-11-22 |
| 4 | +**Type:** Patch Release (Log Noise Reduction) |
| 5 | + |
| 6 | +--- |
| 7 | + |
| 8 | +## Overview |
| 9 | + |
| 10 | +Version 1.2.5 is a patch release that addresses excessive warning logs in production environments with multi-table databases. When only specific tables are replicated, binlog events for non-replicated tables were incorrectly logged at warning level, causing significant log noise. |
| 11 | + |
| 12 | +## Fixed Issues |
| 13 | + |
| 14 | +### 1. Excessive Warning Logs for Multi-Table Databases |
| 15 | + |
| 16 | +**Problem:** In production environments with multiple tables in the MySQL database where only specific tables are configured for replication in MygramDB, warning logs were generated for every binlog event (INSERT/UPDATE/DELETE) on non-replicated tables. |
| 17 | + |
| 18 | +**Impact:** |
| 19 | +- Log files filled with repetitive warning messages |
| 20 | +- Difficult to identify actual issues in logs |
| 21 | +- Unnecessary disk I/O and storage consumption |
| 22 | +- Performance overhead from excessive logging |
| 23 | + |
| 24 | +**Example Log Output (Before Fix):** |
| 25 | +``` |
| 26 | +[2025-11-22 01:05:43.558] [warning] {"event":"mysql_binlog_warning","type":"unknown_table_id","event_type":"update_rows","table_id":"88"} |
| 27 | +[2025-11-22 01:05:46.661] [warning] {"event":"mysql_binlog_warning","type":"unknown_table_id","event_type":"update_rows","table_id":"88"} |
| 28 | +[2025-11-22 01:05:47.903] [warning] {"event":"mysql_binlog_warning","type":"unknown_table_id","event_type":"update_rows","table_id":"88"} |
| 29 | +... (hundreds or thousands of similar entries) |
| 30 | +``` |
| 31 | + |
| 32 | +**Solution:** |
| 33 | +- Changed log level from `warning` to `debug` for unknown table ID events |
| 34 | +- Changed event type from `mysql_binlog_warning` to `mysql_binlog_debug` |
| 35 | +- Applied to all three binlog event handlers: write_rows, update_rows, delete_rows |
| 36 | + |
| 37 | +**Technical Details:** |
| 38 | +- Modified: `src/mysql/binlog_event_parser.cpp` |
| 39 | +- Changed 3 locations (lines 208, 296, 388) |
| 40 | +- Events for non-replicated tables are now logged only when debug logging is enabled |
| 41 | + |
| 42 | +**Root Cause:** |
| 43 | +These events are **expected behavior** for databases with multiple tables when only specific tables are configured for replication. They should not be treated as warnings but as informational debug events. |
| 44 | + |
| 45 | +## Migration Guide |
| 46 | + |
| 47 | +### From v1.2.4 |
| 48 | + |
| 49 | +**No configuration changes required.** This is a transparent log level adjustment. |
| 50 | + |
| 51 | +**Upgrade Steps:** |
| 52 | + |
| 53 | +**Docker users:** |
| 54 | + |
| 55 | +```bash |
| 56 | +# Pull the new image |
| 57 | +docker pull ghcr.io/libraz/mygram-db:v1.2.5 |
| 58 | + |
| 59 | +# Or update docker-compose.yml |
| 60 | +services: |
| 61 | + mygramdb: |
| 62 | + image: ghcr.io/libraz/mygram-db:v1.2.5 |
| 63 | +``` |
| 64 | + |
| 65 | +**RPM users:** |
| 66 | + |
| 67 | +```bash |
| 68 | +# Download and install new RPM |
| 69 | +sudo rpm -Uvh mygramdb-1.2.5-1.el9.x86_64.rpm |
| 70 | +``` |
| 71 | + |
| 72 | +**Source build:** |
| 73 | + |
| 74 | +```bash |
| 75 | +git checkout v1.2.5 |
| 76 | +cmake -B build -DCMAKE_BUILD_TYPE=Release |
| 77 | +cmake --build build --parallel |
| 78 | +``` |
| 79 | + |
| 80 | +### Observing Debug Logs (Optional) |
| 81 | + |
| 82 | +If you want to see these debug events for troubleshooting: |
| 83 | + |
| 84 | +**Change log level in configuration:** |
| 85 | + |
| 86 | +```yaml |
| 87 | +logging: |
| 88 | + level: "debug" # Change from "info" or "warning" |
| 89 | +``` |
| 90 | +
|
| 91 | +**Or set environment variable:** |
| 92 | +
|
| 93 | +```bash |
| 94 | +export LOG_LEVEL=debug |
| 95 | +``` |
| 96 | + |
| 97 | +### Rollback Procedure |
| 98 | + |
| 99 | +If issues arise, rollback is straightforward: |
| 100 | + |
| 101 | +```bash |
| 102 | +# Docker |
| 103 | +docker pull ghcr.io/libraz/mygram-db:v1.2.4 |
| 104 | + |
| 105 | +# RPM |
| 106 | +sudo rpm -Uvh --oldpackage mygramdb-1.2.4-1.el9.x86_64.rpm |
| 107 | +``` |
| 108 | + |
| 109 | +## Compatibility |
| 110 | + |
| 111 | +**MySQL Versions:** |
| 112 | +- MySQL 8.0.x ✓ |
| 113 | +- MySQL 8.4.x ✓ |
| 114 | +- MariaDB 10.x ✓ |
| 115 | + |
| 116 | +**Operating Systems:** |
| 117 | +- Linux (all major distributions) |
| 118 | +- macOS (development/testing) |
| 119 | + |
| 120 | +**Breaking Changes:** None |
| 121 | + |
| 122 | +**Deprecated Features:** None |
| 123 | + |
| 124 | +## Performance Impact |
| 125 | + |
| 126 | +**Positive performance impact:** |
| 127 | +- Reduced disk I/O from excessive logging |
| 128 | +- Lower CPU usage from log processing |
| 129 | +- Reduced log file storage requirements |
| 130 | +- In busy production systems with frequent updates to non-replicated tables, this can significantly reduce logging overhead |
| 131 | + |
| 132 | +## Benefits |
| 133 | + |
| 134 | +1. **Cleaner Logs:** Warning-level logs now contain only actual issues requiring attention |
| 135 | +2. **Easier Debugging:** Real problems are no longer buried in noise |
| 136 | +3. **Reduced Storage:** Less disk space consumed by log files |
| 137 | +4. **Better Performance:** Lower I/O and CPU overhead from logging |
| 138 | +5. **Operational Efficiency:** Easier log monitoring and alerting |
| 139 | + |
| 140 | +## Known Issues |
| 141 | + |
| 142 | +None. |
| 143 | + |
| 144 | +## Upgrade Recommendation |
| 145 | + |
| 146 | +**Priority:** Medium for production systems with: |
| 147 | +- Multi-table MySQL databases |
| 148 | +- Only specific tables replicated to MygramDB |
| 149 | +- Active log monitoring or alerting |
| 150 | +- Limited disk space for logs |
| 151 | + |
| 152 | +**Priority:** Low for: |
| 153 | +- Single-table replication setups |
| 154 | +- Development/testing environments |
| 155 | +- Systems without active log monitoring |
| 156 | + |
| 157 | +## Related Issues |
| 158 | + |
| 159 | +This issue was discovered during production verification of v1.2.4 on europa-mydb02v3 server, where table ID 88 (non-replicated table) generated warnings for every update operation. |
| 160 | + |
| 161 | +## Contributors |
| 162 | + |
| 163 | +- @libraz |
| 164 | + |
| 165 | +## Links |
| 166 | + |
| 167 | +- [Full Changelog](https://github.com/libraz/mygram-db/compare/v1.2.4...v1.2.5) |
| 168 | +- [Docker Image](https://github.com/libraz/mygram-db/pkgs/container/mygram-db) |
| 169 | +- [Configuration Reference](../en/configuration.md) |
| 170 | +- [Logging Guide](../en/configuration.md#logging) |
| 171 | + |
| 172 | +--- |
| 173 | + |
| 174 | +**Questions or Issues?** |
| 175 | +Please open an issue on [GitHub Issues](https://github.com/libraz/mygram-db/issues) |
0 commit comments