Update README with latest features
- Added ETA estimation section with examples - Documented authentication detection and smart guidance - Added MariaDB support details - Expanded PostgreSQL authentication section with 4 solutions - Added troubleshooting for authentication errors - Updated recent changes with November 2025 features - Added links to new documentation files
This commit is contained in:
89
README.md
89
README.md
@ -4,10 +4,35 @@
|
|||||||
|
|
||||||
Database backup utility for PostgreSQL and MySQL with support for large databases.
|
Database backup utility for PostgreSQL and MySQL with support for large databases.
|
||||||
|
|
||||||
## Recent Changes
|
## Recent Changes (November 2025)
|
||||||
|
|
||||||
|
### 🎯 ETA Estimation for Long Operations
|
||||||
|
- Real-time progress tracking with time estimates
|
||||||
|
- Shows elapsed time and estimated time remaining
|
||||||
|
- Format: "X/Y (Z%) | Elapsed: 25m | ETA: ~40m remaining"
|
||||||
|
- Particularly useful for 2+ hour cluster backups
|
||||||
|
- Works with both CLI and TUI modes
|
||||||
|
|
||||||
|
### 🔐 Authentication Detection & Smart Guidance
|
||||||
|
- Detects OS user vs DB user mismatches
|
||||||
|
- Identifies PostgreSQL authentication methods (peer/ident/md5)
|
||||||
|
- Shows helpful error messages with 4 solutions before connection attempt
|
||||||
|
- Auto-loads passwords from `~/.pgpass` file
|
||||||
|
- Prevents confusing TLS/authentication errors in TUI mode
|
||||||
|
- Works across all Linux distributions
|
||||||
|
|
||||||
|
### 🗄️ MariaDB Support
|
||||||
|
- MariaDB now selectable as separate database type in interactive mode
|
||||||
|
- Press Enter to cycle: PostgreSQL → MySQL → MariaDB
|
||||||
|
- Stored as distinct type in configuration
|
||||||
|
|
||||||
|
### 🎨 UI Improvements
|
||||||
|
- Conservative terminal colors for better compatibility
|
||||||
|
- Fixed operation history navigation (arrow keys, viewport scrolling)
|
||||||
|
- Clean plain text display without styling artifacts
|
||||||
|
- 15-item viewport with scroll indicators
|
||||||
|
|
||||||
### Large Database Handling
|
### Large Database Handling
|
||||||
|
|
||||||
- Streaming compression reduces memory usage by ~90%
|
- Streaming compression reduces memory usage by ~90%
|
||||||
- Native pgx v5 driver reduces memory by ~48% compared to lib/pq
|
- Native pgx v5 driver reduces memory by ~48% compared to lib/pq
|
||||||
- Automatic format selection based on database size
|
- Automatic format selection based on database size
|
||||||
@ -73,11 +98,20 @@ go build -o dbbackup main.go
|
|||||||
### Interactive Mode
|
### Interactive Mode
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
dbbackup interactive
|
# PostgreSQL - must match OS user for peer authentication
|
||||||
|
sudo -u postgres dbbackup interactive
|
||||||
|
|
||||||
|
# Or specify user explicitly
|
||||||
|
sudo -u postgres dbbackup interactive --user postgres
|
||||||
|
|
||||||
|
# MySQL/MariaDB
|
||||||
|
dbbackup interactive --db-type mysql --user root
|
||||||
```
|
```
|
||||||
|
|
||||||
Interactive mode provides menu navigation with arrow keys and automatic status updates.
|
Interactive mode provides menu navigation with arrow keys and automatic status updates.
|
||||||
|
|
||||||
|
**Authentication Note:** For PostgreSQL with peer authentication, run as the postgres user to avoid connection errors.
|
||||||
|
|
||||||
### Command Line
|
### Command Line
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@ -133,11 +167,44 @@ dbbackup cpu
|
|||||||
|
|
||||||
### PostgreSQL
|
### PostgreSQL
|
||||||
|
|
||||||
Use the `postgres` system user for local connections:
|
#### Authentication Methods
|
||||||
|
|
||||||
|
PostgreSQL uses different authentication methods depending on your system configuration:
|
||||||
|
|
||||||
|
**Peer Authentication (most common on Linux):**
|
||||||
```bash
|
```bash
|
||||||
|
# Must run as postgres user
|
||||||
sudo -u postgres dbbackup backup cluster
|
sudo -u postgres dbbackup backup cluster
|
||||||
|
|
||||||
|
# If you see this error: "Ident authentication failed for user postgres"
|
||||||
|
# Use one of these solutions:
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Solution 1: Use matching OS user (recommended)**
|
||||||
|
```bash
|
||||||
|
sudo -u postgres dbbackup status --user postgres
|
||||||
|
```
|
||||||
|
|
||||||
|
**Solution 2: Configure ~/.pgpass file**
|
||||||
|
```bash
|
||||||
|
echo "localhost:5432:*:postgres:your_password" > ~/.pgpass
|
||||||
|
chmod 0600 ~/.pgpass
|
||||||
|
dbbackup status --user postgres
|
||||||
|
```
|
||||||
|
|
||||||
|
**Solution 3: Set PGPASSWORD environment variable**
|
||||||
|
```bash
|
||||||
|
export PGPASSWORD=your_password
|
||||||
|
dbbackup status --user postgres
|
||||||
|
```
|
||||||
|
|
||||||
|
**Solution 4: Use --password flag**
|
||||||
|
```bash
|
||||||
|
dbbackup status --user postgres --password your_password
|
||||||
|
```
|
||||||
|
|
||||||
|
#### SSL Configuration
|
||||||
|
|
||||||
SSL modes: `disable`, `prefer`, `require`, `verify-ca`, `verify-full`
|
SSL modes: `disable`, `prefer`, `require`, `verify-ca`, `verify-full`
|
||||||
|
|
||||||
Cluster operations (backup/restore/verify) are PostgreSQL-only.
|
Cluster operations (backup/restore/verify) are PostgreSQL-only.
|
||||||
@ -222,8 +289,18 @@ Streaming architecture maintains constant memory usage regardless of database si
|
|||||||
|
|
||||||
### Connection Issues
|
### Connection Issues
|
||||||
|
|
||||||
|
**Authentication Errors (PostgreSQL):**
|
||||||
|
|
||||||
|
If you see: `FATAL: Peer authentication failed for user "postgres"` or `FATAL: Ident authentication failed`
|
||||||
|
|
||||||
|
The tool will automatically show you 4 solutions:
|
||||||
|
1. Run as matching OS user: `sudo -u postgres dbbackup`
|
||||||
|
2. Configure ~/.pgpass file (recommended for automation)
|
||||||
|
3. Set PGPASSWORD environment variable
|
||||||
|
4. Use --password flag
|
||||||
|
|
||||||
|
**Test connection:**
|
||||||
```bash
|
```bash
|
||||||
# Test connection
|
|
||||||
dbbackup status
|
dbbackup status
|
||||||
|
|
||||||
# Disable SSL
|
# Disable SSL
|
||||||
@ -264,6 +341,8 @@ dbbackup backup single mydb --debug
|
|||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
|
- [AUTHENTICATION_PLAN.md](AUTHENTICATION_PLAN.md) - Authentication handling across distributions
|
||||||
|
- [PROGRESS_IMPLEMENTATION.md](PROGRESS_IMPLEMENTATION.md) - ETA estimation implementation
|
||||||
- [HUGE_DATABASE_QUICK_START.md](HUGE_DATABASE_QUICK_START.md) - Quick start for large databases
|
- [HUGE_DATABASE_QUICK_START.md](HUGE_DATABASE_QUICK_START.md) - Quick start for large databases
|
||||||
- [LARGE_DATABASE_OPTIMIZATION_PLAN.md](LARGE_DATABASE_OPTIMIZATION_PLAN.md) - Optimization details
|
- [LARGE_DATABASE_OPTIMIZATION_PLAN.md](LARGE_DATABASE_OPTIMIZATION_PLAN.md) - Optimization details
|
||||||
- [PRIORITY2_PGX_INTEGRATION.md](PRIORITY2_PGX_INTEGRATION.md) - pgx v5 integration
|
- [PRIORITY2_PGX_INTEGRATION.md](PRIORITY2_PGX_INTEGRATION.md) - pgx v5 integration
|
||||||
|
|||||||
Reference in New Issue
Block a user