- Reorganize docs into 'Core deployment guides' and 'Setup and configuration' subdirectories - Consolidate redundant documentation files (ACR, pipelines, deployment guides) - Add documentation consolidation plan - Update backend database factory and logger services - Update migration script and docker-compose configurations - Add PostgreSQL setup script
215 lines
5.3 KiB
Markdown
215 lines
5.3 KiB
Markdown
# PostgreSQL Version Upgrade Guide
|
|
|
|
Guide for upgrading Azure PostgreSQL Flexible Server from version 15 to 18.
|
|
|
|
## ⚠️ Important Considerations
|
|
|
|
### Before Upgrading
|
|
|
|
1. **Backup**: Azure automatically creates backups, but verify backups are working
|
|
2. **Downtime**: Major version upgrades require downtime (typically 5-15 minutes)
|
|
3. **Application Compatibility**: Ensure your application supports PostgreSQL 18
|
|
4. **Extension Compatibility**: Check if any PostgreSQL extensions are compatible with version 18
|
|
|
|
### PostgreSQL 18 Changes
|
|
|
|
- **Performance improvements**: Better query optimization
|
|
- **New features**: Enhanced JSON support, improved partitioning
|
|
- **Breaking changes**: Some deprecated features removed
|
|
- **Extension updates**: Some extensions may need updates
|
|
|
|
---
|
|
|
|
## 🚀 Upgrade Process
|
|
|
|
### Step 1: Check Current Version
|
|
|
|
```bash
|
|
az postgres flexible-server show \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
|
--name zdl-cmdb-insight-prd-psql \
|
|
--query "{name:name, version:version, state:state}" -o table
|
|
```
|
|
|
|
### Step 2: Verify Backups
|
|
|
|
```bash
|
|
# List recent backups
|
|
az postgres flexible-server backup list \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
|
--server-name zdl-cmdb-insight-prd-psql \
|
|
--query "[0:5].{name:name, timeCreated:timeCreated}" -o table
|
|
```
|
|
|
|
### Step 3: Schedule Maintenance Window
|
|
|
|
**Recommended**: Perform upgrade during low-traffic period or maintenance window.
|
|
|
|
### Step 4: Perform Upgrade
|
|
|
|
```bash
|
|
# Upgrade to PostgreSQL 18
|
|
az postgres flexible-server upgrade \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
|
--name zdl-cmdb-insight-prd-psql \
|
|
--version 18 \
|
|
--yes
|
|
```
|
|
|
|
**What happens:**
|
|
- Server will restart
|
|
- Database will be upgraded to version 18
|
|
- Downtime: ~5-15 minutes
|
|
- Existing data is preserved
|
|
|
|
### Step 5: Verify Upgrade
|
|
|
|
```bash
|
|
# Check new version
|
|
az postgres flexible-server show \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
|
--name zdl-cmdb-insight-prd-psql \
|
|
--query "{name:name, version:version, state:state}" -o table
|
|
|
|
# Should show: version: "18"
|
|
```
|
|
|
|
### Step 6: Test Application
|
|
|
|
```bash
|
|
# Restart backend app to reconnect
|
|
az webapp restart \
|
|
--name zdl-cmdb-insight-prd-backend-webapp \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg
|
|
|
|
# Check logs for connection
|
|
az webapp log tail \
|
|
--name zdl-cmdb-insight-prd-backend-webapp \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg
|
|
```
|
|
|
|
---
|
|
|
|
## 🔄 Alternative: Step-by-Step Upgrade (15 → 16 → 17 → 18)
|
|
|
|
If you prefer to upgrade incrementally:
|
|
|
|
```bash
|
|
# Upgrade 15 → 16
|
|
az postgres flexible-server upgrade \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
|
--name zdl-cmdb-insight-prd-psql \
|
|
--version 16 \
|
|
--yes
|
|
|
|
# Wait for completion, then upgrade 16 → 17
|
|
az postgres flexible-server upgrade \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
|
--name zdl-cmdb-insight-prd-psql \
|
|
--version 17 \
|
|
--yes
|
|
|
|
# Wait for completion, then upgrade 17 → 18
|
|
az postgres flexible-server upgrade \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
|
--name zdl-cmdb-insight-prd-psql \
|
|
--version 18 \
|
|
--yes
|
|
```
|
|
|
|
**Note**: Direct upgrade from 15 → 18 is supported and recommended (faster, less downtime).
|
|
|
|
---
|
|
|
|
## 🛠️ Troubleshooting
|
|
|
|
### Upgrade Fails
|
|
|
|
If upgrade fails:
|
|
|
|
1. **Check server state:**
|
|
```bash
|
|
az postgres flexible-server show \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
|
--name zdl-cmdb-insight-prd-psql \
|
|
--query state -o tsv
|
|
```
|
|
|
|
2. **Check logs:**
|
|
```bash
|
|
az monitor activity-log list \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
|
--query "[?contains(operationName.value, 'upgrade')]" \
|
|
--output table
|
|
```
|
|
|
|
3. **Restore from backup if needed:**
|
|
```bash
|
|
# List available backups
|
|
az postgres flexible-server backup list \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
|
--server-name zdl-cmdb-insight-prd-psql
|
|
```
|
|
|
|
### Application Connection Issues
|
|
|
|
If application can't connect after upgrade:
|
|
|
|
1. **Verify connection string** (should still work, no changes needed)
|
|
2. **Check firewall rules** (should remain unchanged)
|
|
3. **Restart application** to refresh connections
|
|
4. **Check application logs** for specific errors
|
|
|
|
---
|
|
|
|
## 📊 Monitoring
|
|
|
|
### Check Upgrade Status
|
|
|
|
```bash
|
|
# Monitor upgrade progress
|
|
az postgres flexible-server show \
|
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
|
--name zdl-cmdb-insight-prd-psql \
|
|
--query "{state:state, version:version}" -o json
|
|
```
|
|
|
|
### Performance After Upgrade
|
|
|
|
Monitor performance metrics after upgrade:
|
|
- Query performance
|
|
- Connection times
|
|
- Resource usage
|
|
|
|
---
|
|
|
|
## ✅ Post-Upgrade Checklist
|
|
|
|
- [ ] Version upgraded successfully (verified)
|
|
- [ ] Application reconnected successfully
|
|
- [ ] All databases accessible
|
|
- [ ] Performance metrics normal
|
|
- [ ] No errors in application logs
|
|
- [ ] Backup system working
|
|
|
|
---
|
|
|
|
## 🔗 Related Documentation
|
|
|
|
- **`docs/AZURE-POSTGRESQL-SETUP.md`** - Initial PostgreSQL setup
|
|
- **`docs/AZURE-APP-SERVICE-DEPLOYMENT.md`** - App Service deployment
|
|
|
|
---
|
|
|
|
## 💡 Best Practices
|
|
|
|
1. **Test in staging first** (if you have a staging environment)
|
|
2. **Schedule during maintenance window**
|
|
3. **Notify users** about planned downtime
|
|
4. **Monitor closely** after upgrade
|
|
5. **Keep backups** for at least 7 days after upgrade
|
|
|
|
---
|
|
|
|
**Note**: PostgreSQL 18 is the latest version with improved performance and features. The upgrade is generally safe and recommended.
|