Features
Failover Plugin
The Failover Plugin provides fast detection and recovery from database failures in Aurora clusters.
How It Works
- Topology Discovery: Wrapper queries Aurora cluster to discover all instances and their roles (writer/reader)
- Health Monitoring: Continuously monitors connection health using lightweight queries
- Failure Detection: Detects failures through connection errors, timeouts, or health check failures
- Failover Execution: When writer fails, connects to new writer; when reader fails, connects to different reader
- Topology Refresh: Updates cluster topology after failover completes
Configuration Options
failoverTimeoutMs(default: 60000): Maximum time to complete failoverfailoverClusterTopologyRefreshRateMs(default: 5000): How often to refresh topologyfailoverReaderConnectTimeoutMs(default: 30000): Timeout for reader connectionsfailoverWriterReconnectIntervalMs(default: 2000): Delay between writer reconnection attempts
Typical Failover Times
- Writer Failover: 1-30 seconds (vs 60-120 seconds without wrapper)
- Reader Failover: <1 second (immediate switch to healthy reader)
IAM Authentication Plugin
Enables AWS IAM database authentication without managing passwords.
How It Works
- Token Generation: Uses AWS SDK to generate authentication token from IAM credentials
- Token Caching: Caches token for up to 15 minutes (token lifetime)
- Automatic Refresh: Generates new token before expiration
- Connection: Uses token as password in database connection
Prerequisites
- Database user must be configured for IAM authentication
- Application must have IAM permissions:
rds-db:connect - AWS credentials available via standard credential chain
IAM Policy Example
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "rds-db:connect",
"Resource": "arn:aws:rds-db:region:account:dbuser:cluster-id/db-user"
}]
}
Configuration Options
iamDefaultPort(default: 5432 for PostgreSQL, 3306 for MySQL): Port for token generationiamTokenExpiration(default: 900): Token cache duration in secondsiamRegion: AWS region (auto-detected if not specified)
Secrets Manager Plugin
Retrieves database credentials from AWS Secrets Manager.
How It Works
- Secret Fetch: Retrieves secret from Secrets Manager at connection time
- Credential Extraction: Parses JSON secret for username, password, host, port
- Caching: Caches credentials to reduce API calls
- Rotation Support: Detects secret rotation and fetches new credentials
Secret Format
{
"username": "dbuser",
"password": "dbpassword",
"host": "cluster.region.rds.amazonaws.com",
"port": 5432,
"dbname": "mydb"
}
Configuration Options
secretId: Secret ARN or name (required)secretRegion: AWS region for Secrets ManagersecretRefreshIntervalMs(default: 300000): How often to check for rotation
Prerequisites
- IAM permissions:
secretsmanager:GetSecretValue - Secret must exist in Secrets Manager
Read/Write Splitting Plugin
Routes queries to appropriate database instances based on operation type.
How It Works
- SQL Analysis: Parses SQL statement to determine operation type
- Routing Decision:
- SELECT → Reader instance
- INSERT/UPDATE/DELETE → Writer instance
- DDL statements → Writer instance
- Connection Management: Maintains separate connections to readers and writers
- Load Balancing: Distributes read queries across available readers
Configuration Options
readWriteSplittingStrategy(default:random): How to select reader (random,roundRobin,leastConnections)readWriteSplittingInternalPoolSize(default: 5): Connection pool size per instance
Limitations
- Requires explicit transaction management
- Read-after-write consistency not guaranteed (replication lag)
- Not suitable for applications requiring strong consistency
Host Monitoring Plugin
Tracks database instance health and performance.
How It Works
- Connection Monitoring: Tracks connection success/failure rates
- Latency Tracking: Measures query response times
- Health Scoring: Assigns health score to each instance
- Unhealthy Host Removal: Temporarily removes unhealthy instances from rotation
- Recovery Detection: Periodically retries unhealthy instances
Configuration Options
monitoringConnectionCheckIntervalMs(default: 5000): Health check frequencymonitoringFailureDetectionTimeMs(default: 30000): Time to mark instance unhealthymonitoringFailureDetectionIntervalMs(default: 5000): Interval between failure checksmonitoringFailureDetectionCount(default: 3): Failures before marking unhealthy
Metrics Collected
- Connection success/failure rate
- Query latency (min, max, avg)
- Active connection count
- Instance availability percentage
Aurora Connection Tracker Plugin
Optimizes connection management for Aurora clusters.
How It Works
- Connection Tracking: Maintains registry of all connections to cluster
- Stale Connection Detection: Identifies connections to instances no longer in cluster
- Automatic Cleanup: Closes stale connections
- Connection Reuse: Reuses existing connections when possible
Configuration Options
connectionTrackerIntervalMs(default: 30000): How often to check for stale connectionsconnectionTrackerMaxIdleTimeMs(default: 1800000): Max idle time before cleanup
Plugin Compatibility
Not all plugins work together. Compatible combinations:
✅ Compatible:
- Failover + IAM
- Failover + Secrets Manager
- Failover + Read/Write Splitting
- IAM + Secrets Manager (use one or the other)
- All monitoring plugins with any feature plugin
❌ Incompatible:
- IAM + Secrets Manager (both provide credentials)
- Read/Write Splitting + certain transaction modes
Custom Plugins
All wrappers support custom plugin development. Implement the plugin interface for your language:
- JDBC: Extend
ConnectionPlugininterface - Python: Extend
Pluginclass - Node.js: Implement
Plugininterface - Go: Implement
Plugininterface
Custom plugins can intercept any database operation and add custom logic.