Fivetran HVR (High-Volume Replicator) is a self-hosted enterprise-level replication platform for databases and file systems. It provides real-time Change Data Capture (CDC) with low latency and high throughput, supporting a distributed architecture across numerous Database Management Systems (DBMSs).
| Module | Description |
|---|---|
| Refresh | Initial bulk load of data from source to target |
| Capture | Continuous change data capture from the source location (CDC) |
| Integrate | Applies captured changes to the target location in near real-time |
| Compare | Compares source and target to verify data is in sync |
| Property | Value |
|---|---|
| Hostname | saphvrhub |
| Operating System | Rocky Linux 8.10 (Green Obsidian) |
| Kernel | 4.18.0-553.51.1.el8_10.cloud.0.1.x86_64 |
| CPUs | 2 vCPUs — Intel(R) Xeon(R) CPU @ 2.20GHz |
| Memory | 3.6 GB RAM |
| Private IP | 10.128.15.240 |
| Public IP | 35.209.174.110 |
| Cloud Platform | Google Cloud Platform (us-central1-a) |
| HVR Version | Fivetran HVR 6.2.5/5 (linux_glibc2.12-x64-64bit) |
| Repository DB | PostgreSQL 14.20 |
| Mount | Size | Used | Purpose |
|---|---|---|---|
/ | 50 GB | 26 GB (52%) | Root filesystem (XFS) |
/boot/efi | 200 MB | 5.8 MB (3%) | UEFI boot partition |
/SUMHANA | 589 GB | 270 GB (49%) | SAP/HANA data volume (LVM, ext4) |
/media | 786 GB | 591 GB (80%) | Media/data volume (LVM, ext4) |
/archive | 738 GB | 494 GB (71%) | NFS mount from sapidesecc8 (Oracle archive logs) |
| Port | Service | Description |
|---|---|---|
4340 | hvrhubserver | HVR Hub Server — Web UI and REST API (HTTP) |
4343 | systemd (HVR) | HVR HTTPS port |
4344 | systemd (HVR) | HVR additional service port |
5432 | PostgreSQL | HVR repository database (localhost only) |
43177 | hvrhubserver | Internal hub server port |
43111 | hvrscheduler | Internal scheduler port |
22 | sshd | SSH access |
20201 | otelopscol | OpenTelemetry operations collector |
The HVR Hub Server is the central component that manages all replication channels, schedules jobs, and maintains the configuration repository.
| Component | User | Description |
|---|---|---|
| hvrhubserver | hvr | Main hub server process — manages channels, REST API, Web UI |
| hvrscheduler | hvr | Job scheduler (main + DB scheduler for hub hvrhub) |
| hvrstats | hvr | Statistics collector (global metrics + log analysis) |
| proxyagent | root | Fivetran cloud proxy agent (Java) — secure tunnel to Fivetran |
| PostgreSQL 14 | postgres | Repository database (hvr6) storing all HVR metadata |
HVR uses a Hub-Agent model:
/usr/hvr/hvr_home. Manages channels, locations, actions, and scheduling./usr/hva/hvr_home (HVR 6.2.0/1). Agents run on source/target systems to execute capture and integrate jobs locally.wss://prod.aws.us-east-1.proxy.fivetran.com) for managed replication.| Setting | Value |
|---|---|
| Hub Name | hvrhub |
| Repository Class | PostgreSQL (Aurora compatible) |
| Database Host | localhost |
| Database Name | hvr6 |
| Database Port | 5432 |
| Database User | postgres |
| HTTP Port | 4340 |
| Path | Purpose |
|---|---|
/usr/hvr/hvr_home | HVR Hub binaries, libraries, JRE, web UI (v6.2.5/5) |
/usr/hvr/hvr_config | Hub configuration: hubs, logs, log archives, metering, wallet |
/usr/hvr/hvr_tmp | Hub temporary files |
/usr/hva/hvr_home | HVR Agent binaries (v6.2.0/1) |
/usr/hva/hvr_config | Agent configuration |
/usr/hva/hvr_tmp | Agent temporary files |
/home/hvr/hvr_config/proxy | Fivetran proxy agent configuration |
| User | Role |
|---|---|
hvr | HVR Hub Server owner — runs hvrhubserver, scheduler, stats |
hva | HVR Agent owner — runs agent processes |
postgres | PostgreSQL database owner |
root | System administrator — runs proxy agent |
[Unit]
Description=HVR Hub Server
[Service]
Type=forking
Environment="HVR_HOME=/usr/hvr/hvr_home"
Environment="HVR_CONFIG=/usr/hvr/hvr_config"
Environment="HVR_TMP=/usr/hvr/hvr_tmp"
User=hvr
ExecStart=/usr/hvr/hvr_home/bin/hvrhubserver
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.targetRestart=always with 5 second delay. To keep it stopped, use the Stop button in the cockpit which also disables the service.The hub server configuration is stored in /usr/hvr/hvr_config/etc/hvrhubserver.conf:
{
"Database_Host": "localhost",
"Database_Name": "hvr6",
"Database_Port": 5432,
"Database_User": "postgres",
"HTTP_Port": "4340",
"License_Agreement_Accepted": true,
"Repository_Class": "postgresql",
"Repository_Class_Flavor": "aurora_pq"
}The proxy agent connects this hub to Fivetran's cloud management plane via a secure WebSocket tunnel:
| Property | Value |
|---|---|
| Agent ID | bluntly_ethanol |
| Proxy Server | wss://prod.aws.us-east-1.proxy.fivetran.com |
| Config File | /home/hvr/hvr_config/proxy/proxyagent.conf |
| Process | Java (JRE bundled with HVR) |
| Memory Usage | ~180 MB |
auth_token stored in the proxy configuration file. This enables Fivetran's cloud dashboard to manage replication channels on this hub.HVR uses a local PostgreSQL 14 instance as its metadata repository. The cockpit displays real-time status including uptime in both Amsterdam (CET/CEST) and Los Angeles (PT) timezones.
| Property | Value |
|---|---|
| Version | PostgreSQL 14.20 |
| Database | hvr6 |
| Listens on | 127.0.0.1:5432 and [::1]:5432 (localhost only) |
| User | postgres |
| Connections | 4 persistent from HVR (scheduler, stats) |
| Uptime source | pg_postmaster_start_time() |
The server has an NFS mount from sapidesecc8 for Oracle archive log access:
# /etc/fstab entry
sapidesecc8:/oracle/ABA/oraarch /archive nfs defaults 0 0This provides access to SAP ECC Oracle archive logs for CDC replication.
systemctl status hvrhubserver --no-pager# Start (also re-enable auto-restart)
systemctl enable hvrhubserver && systemctl start hvrhubserver
# Stop (also disable to prevent auto-restart)
systemctl stop hvrhubserver && systemctl disable hvrhubserver
# Restart
systemctl restart hvrhubserverWhen running, the following processes should be active:
| Process | User | Description |
|---|---|---|
hvrhubserver | hvr | Main hub server (PID parent) |
hvrscheduler hvrhub | hvr | Job scheduler for hub |
hvrscheduler -wdb hvrhub | hvr | Database scheduler for hub |
hvrstats -g0 hvrhub | hvr | Statistics collector |
hvr -chvrstats-logs | hvr | Log statistics processor |
hvr -chvrstats-glob | hvr | Global statistics processor |
proxyagent.jar | root | Fivetran cloud proxy (Java) |
HVR provides a web-based user interface for managing replication:
| Property | Value |
|---|---|
| URL | http://35.209.174.110:4340 (or internal http://10.128.15.240:4340) |
| Requires | PC/laptop with at least 1024px screen width |
| Not supported | Mobile phones, Internet Explorer 11 |
| Section | Description |
|---|---|
| Channels | Create, configure, activate/deactivate replication channels |
| Locations | Manage source and target database connections |
| Tables | Select and configure tables for replication |
| Jobs | Monitor running and completed replication jobs |
| Events | View replication events and alerts |
| Statistics | Performance metrics, latency, throughput |
| Topology | Visual architecture diagram of replication flows |
| System | Hub settings, permissions, users, repository config |
HVR exposes a comprehensive REST API on port 4340 with ~200 endpoints organized into 19 interface categories:
The API uses standard HTTP methods (GET, PUT, POST, DELETE) and returns JSON. It is version-independent and backward-compatible.
The Capture module continuously reads changes from the source database transaction logs (CDC). Key parameters:
| Parameter | Description |
|---|---|
Coalesce | Merge multiple changes to same row into single operation |
NoBeforeUpdate | Skip capturing before-image of updated rows |
HashBuckets / HashKey | Partition captured changes for parallel processing |
IgnoreCondition | Filter out changes matching a condition |
DeleteAfterCapture | Remove source rows after capture (for queue tables) |
The Integrate module applies captured changes to the target location. Supports various target types including databases, Kafka, and file systems.
| Parameter | Description |
|---|---|
| Commit frequency | Control batch size for target writes |
| Methods | INSERT/UPDATE/DELETE, MERGE, or bulk operations |
| Kafka Topic/MessageKey | Target Kafka topic and partitioning key |
| FileFormat | XML, CSV, Avro, JSON, Parquet with compression |
Actions define replication behavior. A channel requires at minimum Capture (on source) and Integrate (on target).
| Action | Purpose |
|---|---|
| AdaptDDL | Automatic schema adaptation (add/drop tables, alter columns) |
| AgentPlugin | Execute external operations (scripts, stored procedures) |
| Capture | Change data capture from source |
| CollisionDetect | Conflict detection and resolution for bi-directional replication |
| ColumnProperties | Column-level transformations and data type mappings |
| DbObjectGeneration | Auto-create triggers, procedures, tables on target |
| DbSequence | Database sequence management during replication |
| Environment | Set environment variables for replication jobs |
| FileFormat | File-based output format (Avro, Parquet, CSV, JSON) |
| Integrate | Apply changes to target location |
| Restrict | Filter/partition data during replication |
| Scheduling | Job timing, start times, latency SLA |
| TableProperties | Table-level transformations and schema mappings |
| Transform | Custom data transformations via scripts |
Full action reference: fivetran.com/docs/hvr6/action-reference
All commands are in /usr/hvr/hvr_home/bin/. Run as user hvr with environment variables set.
export HVR_HOME=/usr/hvr/hvr_home
export HVR_CONFIG=/usr/hvr/hvr_config
export HVR_TMP=/usr/hvr/hvr_tmp
export PATH=$HVR_HOME/bin:$PATH| Command | Description |
|---|---|
hvrhubserver | Start/manage the hub server |
hvractivate | Activate replication on a channel |
hvrcompare | Compare source and target data |
hvrcontrol | Start/stop/manage replication jobs |
hvragent | Manage HVR agents |
hvragentconfig | Configure agent connections |
hvragenttest | Test agent connectivity |
hvralert | Manage alert definitions |
hvrcrypt | Encrypt/decrypt credentials |
hvradapt | Adapt table definitions (DDL sync) |
# As user hvr
su - hvr
export HVR_HOME=/usr/hvr/hvr_home
export HVR_CONFIG=/usr/hvr/hvr_config
$HVR_HOME/bin/hvrcontrol -h hvrhub listHVR uses a local PostgreSQL 14 instance as its metadata repository. This database stores all hub configuration, channel definitions, location settings, replication state, event history, and job metadata.
| Property | Value |
|---|---|
| Version | PostgreSQL 14.20 |
| Service | postgresql-14 (systemd) |
| Database Name | hvr6 |
| OS User | postgres |
| Binaries | /usr/pgsql-14/bin/ |
| Data Directory | /var/lib/pgsql/14/data/ |
| Listen | localhost:5432 (local only) |
| Size | ~576 MB |
hvr user.The cockpit provides Start, Stop, and Restart controls for the postgresql-14 systemd service on the hub server.
| Action | Auth | Behaviour |
|---|---|---|
| Start | None | Enables and starts postgresql-14. Reports if already running. |
| Stop | Master password | Stops and disables postgresql-14 (prevents auto-restart). HVR Hub will lose its repository connection — all replication stops. |
| Restart | Master password | Restarts postgresql-14 and re-enables self-healing. HVR connections are briefly interrupted. |
# Check status
systemctl status postgresql-14 --no-pager
# Start (enable self-healing)
systemctl enable postgresql-14 && systemctl start postgresql-14
# Stop (disable self-healing)
systemctl stop postgresql-14 && systemctl disable postgresql-14
# Restart
systemctl restart postgresql-14Database backups use pg_dump in custom format (-Fc) for efficient compression and selective restore. Each backup is written to two locations simultaneously:
| Location | Path | Purpose |
|---|---|---|
| Local | /usr/hvr/hvr_config/backup/ | Primary backup, fast restore |
| NFS (/media) | /media/HVR/ | Secondary copy on persistent disk, survives VM rebuild |
Click Backup Now in the PostgreSQL status card. The backup runs in the background and typically completes in a few seconds.
# SSH to the hub server
ssh root@10.128.15.240
# Create backup directories
mkdir -p /usr/hvr/hvr_config/backup /media/HVR
chmod 777 /usr/hvr/hvr_config/backup /media/HVR
# Run pg_dump (custom format for efficient restore)
BKNAME=hvr6_$(date +%Y%m%d_%H%M%S).dump
su - postgres -c '/usr/pgsql-14/bin/pg_dump -Fc hvr6' > /usr/hvr/hvr_config/backup/$BKNAME
# Copy to secondary location
cp /usr/hvr/hvr_config/backup/$BKNAME /media/HVR/$BKNAME
chown hvr:hvr /usr/hvr/hvr_config/backup/$BKNAME /media/HVR/$BKNAME
# Verify both copies
ls -lh /usr/hvr/hvr_config/backup/$BKNAME /media/HVR/$BKNAMEhvr_home directory is backed up.Restoring from a backup requires stopping the HVR Hub Server first, as active connections prevent a clean restore.
Click Restore in the PostgreSQL status card. Select a backup from the list, confirm the operation, and enter the master password. The cockpit automatically stops the hub, restores, re-enables self-healing, and restarts.
# Stop HVR Hub Server
systemctl stop hvrhubserver
# Restore (--clean drops and recreates objects)
su - postgres -c '/usr/pgsql-14/bin/pg_restore --clean --if-exists -d hvr6 /usr/hvr/hvr_config/backup/hvr6_YYYYMMDD_HHMMSS.dump'
# Re-enable and restart
systemctl enable hvrhubserver
systemctl start hvrhubserver
# Verify
systemctl status hvrhubserver --no-pagerHVR Hub updates are managed through the cockpit's HVR Updates section. The process supports both upgrades and downgrades by uploading a Fivetran HVR release package (.tar.gz) and applying it to the running installation.
hub_and_agent_linux_glibc2.12-x64-64bit variant for this server.
Release packages are .tar.gz compressed archives containing the full HVR home directory. Each package includes a hvr.ver file with the version string (e.g., Fivetran HVR 6.2.5/5 (linux_glibc2.12-x64-64bit)).
Example filename: fivetran-6.1.0_94-hub_and_agent-linux_glibc2.12-x64-64bit-ga_patch.tar.gz
The cockpit provides a 4-step workflow for applying updates:
| Step | Action | Description |
|---|---|---|
| 1a. Upload | Upload Package | Select a .tar.gz package from your local machine. The file is streamed to the web server in 64 KB chunks (supports files up to 500 MB), then SCP'd to the hub's staging directory at /usr/hvr/hvr_config/download/. |
| 1b. Download | Download from URL | Paste a direct URL to a .tar.gz package. The hub server downloads it directly via curl into the staging directory — faster than uploading through the browser for large files. |
| 2. Check | Check Updates | Compares the running version (from /usr/hvr/hvr_home/hvr.ver) against the staged package version (extracted from the tar). Reports upgrade, downgrade, or same version. |
| 3. Apply | Apply Update | Requires master password. Stops the hub service, creates a timestamped backup of hvr_home, extracts the package, fixes ownership, and restarts the service. |
| 4. Delete | Delete Staged | Removes all staged .tar.gz packages from the download directory. |
When you click Apply Update in the cockpit, the following commands execute on the hub server via SSH:
# 1. Stop the HVR Hub service
systemctl stop hvrhubserver
# 2. Create a timestamped backup of the current installation
cp -a /usr/hvr/hvr_home /usr/hvr/hvr_home.backup.$(date +%Y%m%d_%H%M%S)
# 3. Extract the new package over the existing installation
cd /usr/hvr/hvr_home
tar xzf /usr/hvr/hvr_config/download/<package>.tar.gz
# 4. Fix file ownership
chown -R hvr:hvr /usr/hvr/hvr_home
# 5. Restart the service
systemctl start hvrhubserversystemctl enable hvrhubserver) to ensure Restart=always is active. If the update fails mid-way, the error handler also re-enables and attempts to restart the service automatically.
If an update fails or causes issues, restore from the automatic backup:
# Stop the service
systemctl stop hvrhubserver
# List available backups
ls -la /usr/hvr/hvr_home.backup.*
# Restore from the most recent backup
rm -rf /usr/hvr/hvr_home
cp -a /usr/hvr/hvr_home.backup.YYYYMMDD_HHMMSS /usr/hvr/hvr_home
# Restart
systemctl start hvrhubserverIf the cockpit is unavailable, you can perform the update manually via SSH:
# SSH to the hub server
ssh root@10.128.15.240
# Upload the package (from your local machine)
scp fivetran-*.tar.gz root@10.128.15.240:/usr/hvr/hvr_config/download/
chown hvr:hvr /usr/hvr/hvr_config/download/*.tar.gz
# Check the staged version
tar xzf /usr/hvr/hvr_config/download/*.tar.gz -O hvr.ver
# Compare with running version
cat /usr/hvr/hvr_home/hvr.ver
# Apply (stop, backup, extract, start)
systemctl stop hvrhubserver
cp -a /usr/hvr/hvr_home /usr/hvr/hvr_home.backup.$(date +%Y%m%d_%H%M%S)
cd /usr/hvr/hvr_home && tar xzf /usr/hvr/hvr_config/download/*.tar.gz
chown -R hvr:hvr /usr/hvr/hvr_home
systemctl start hvrhubserver
# Verify
cat /usr/hvr/hvr_home/hvr.ver
systemctl status hvrhubserver --no-pager| Property | Value |
|---|---|
| Path | /usr/hvr/hvr_config/download/ |
| Owner | hvr:hvr |
| Format | .tar.gz (gzip-compressed tar) |
| Cleanup | Use cockpit "Delete Staged" or rm -f /usr/hvr/hvr_config/download/*.tar.gz |
.tar.gz file is used for version comparison and apply operations. Upload a new package to replace the staged one.HVR version strings follow the pattern: Fivetran HVR major.minor.patch/build (platform)
| Component | Example | Description |
|---|---|---|
| Major | 6 | Major version (HVR 6) |
| Minor | 2 | Feature release |
| Patch | 5 | Bug fix release |
| Build | 5 | Build number within patch |
| Platform | linux_glibc2.12-x64-64bit | Target platform |
The cockpit compares version tuples (major, minor, patch, build) to determine if the staged package is an upgrade, downgrade, or the same version.
| Issue | Resolution |
|---|---|
| Hub server not starting | Check logs: journalctl -u hvrhubserver --no-pager -n 50Verify PostgreSQL is running: systemctl status postgresql-14 |
| Web UI not accessible | Verify port 4340 is listening: ss -tlnp | grep 4340Check GCP firewall allows port 4340 from your IP |
| Proxy agent not connecting | Check Java process: ps aux | grep proxyagentVerify proxy config: cat /home/hvr/hvr_config/proxy/proxyagent.conf |
| NFS mount /archive unavailable | Check sapidesecc8 is reachable: ping sapidesecc8Remount: mount -a |
| /media volume running out of space | Check usage: du -sh /media/*Clean old staging data or extend LVM volume |
| Service keeps restarting | Disable auto-restart: systemctl disable hvrhubserverThen stop: systemctl stop hvrhubserverCheck logs for crash cause |
| Log | Path |
|---|---|
| Hub Server Logs | /usr/hvr/hvr_config/logs/ |
| Log Archives | /usr/hvr/hvr_config/logarchives/ (548 archived logs) |
| Systemd Journal | journalctl -u hvrhubserver |
| Metering Data | /usr/hvr/hvr_config/metering/ |