Skip to content

MySQL to HeliosDB Migration Guide

MySQL to HeliosDB Migration Guide

Version: 1.0 Last Updated: 2025-11-30


Pre-Migration Checklist

  • Backup MySQL database
  • Review schema for unsupported features
  • Estimate data volume
  • Plan downtime (if any)
  • Test on development environment

Step 1: Export MySQL Schema

Terminal window
# Export schema without data
mysqldump -h localhost -u root -p database_name \
--no-data \
--routines \
--triggers \
> schema.sql
# Review for compatibility
grep -E "ENGINE=|AUTO_INCREMENT|COLLATE" schema.sql

Step 2: Migrate Schema

-- Import MySQL schema into HeliosDB
-- Note: Some SQL syntax may need adjustment
-- Example adjustments:
-- MySQL: `column_name` → PostgreSQL: "column_name"
-- MySQL: INT AUTO_INCREMENT → PostgreSQL: SERIAL
-- MySQL: VARCHAR(255) → PostgreSQL: VARCHAR or TEXT

Step 3: Export and Import Data

Terminal window
# Export from MySQL as CSV
mysql -h localhost -u root -p database_name \
-e "SELECT * FROM table_name" \
| sed 's/\t/,/g' > table_name.csv
# Import into HeliosDB using COPY
psql -h heliosdb.host -U user -d database_name \
-c "COPY table_name FROM STDIN WITH (FORMAT csv)" \
< table_name.csv

Step 4: Validate Data

-- Check row counts
SELECT COUNT(*) FROM table_name;
-- Verify data integrity
SELECT * FROM table_name LIMIT 100;
-- Check for NULL values unexpectedly introduced
SELECT * FROM table_name WHERE column_name IS NULL;

Step 5: Create Indexes

-- Recreate indexes
CREATE INDEX idx_name ON table_name(column_name);
-- Analyze for query optimization
ANALYZE table_name;

Common Compatibility Issues

MySQLHeliosDB Solution
ENUM typeUse VARCHAR with CHECK constraint
UNSIGNED INTUse INTEGER or BIGINT
JSONUse JSONB type
FULL TEXTUse HeliosDB full-text search
SPATIALUse PostGIS-compatible geospatial

Zero-Downtime Migration

Terminal window
# 1. Set up replication
mysql> CHANGE MASTER TO MASTER_HOST='heliosdb.host', ...
mysql> START SLAVE;
# 2. Verify sync
mysql> SHOW SLAVE STATUS;
# 3. Switch applications
# Point connection strings to HeliosDB
# 4. Clean up MySQL
mysql> STOP SLAVE;

Rollback Plan

Terminal window
# Keep MySQL running in read-only mode
mysql> SET GLOBAL read_only = ON;
# If rollback needed
mysql> SET GLOBAL read_only = OFF;
# Point applications back to MySQL

Performance Tuning

-- After migration, optimize indexes
ANALYZE;
VACUUM;
-- Enable query cache for hot tables
ALTER TABLE frequently_accessed ENABLE INTELLIGENT_CACHING;

Post-Migration

  • Verify all data migrated
  • Test application queries
  • Validate performance
  • Monitor error logs
  • Clean up old MySQL database (after verification)

Related Documentation: