Install SingleStore Flow
On this page
This section contains instructions for installing Ingest and XL Ingest, and license information.
To use Ingest and XL Ingest, install the products and provide the product IDs to either team@singlestore.
Prerequisites
While the database prerequisites will vary based on the source, the following are the minimum requirements for using both Ingest and XL Ingest.
|
Component |
Requirements |
|
Virtual Machine (VM) |
The sizing recommendation is based on the size of databases/tables being transferred. For smaller databases sized 100GB or less, a minimum of 2 vCPUs, 8 GB RAM, and 100 GB of free disk space is recommended. For large transfers, more disk space may be required. For very large tables, where XL Ingest must be used, the amount of local disk needed is More CPU cores and RAM is required for sources and destinations that contain a large amount of data and have an aggressive timeline in which to transfer it. The VM must be close to the source database to minimize latency. Refer to the Recommended Hardware Configuration section in the Ingest documentation for more information. |
|
Browser |
A Chromium-based browser, such as Google Chrome or Microsoft Edge, installed on the VM |
|
Java |
Amazon Corretto Java 21, a no-cost distribution of the Open Java Development Kit (OpenJDK), installed on the VM |
Set Up the Encryption Key
Flow encrypts sensitive values in config/config. with AES-256-CBC.FLOW_ environment variable.
Use the following key requirements:
-
Algorithm: AES-256.
The decoded key must be exactly 32 bytes. -
Encoding: Base64, with optional trailing = padding.
Flow validates the key at startup.FLOW_ is set but invalid, Flow does not start.FLOW_ is not set, new installations will not start, but upgraded installations may fall back to a legacy hardcoded key (insecure and deprecated).Info(CMG500) to the log together with a short SHA-256 fingerprint.
Note: SingleStore recommends rotating the encryption key every 90 to 180 days for security.
Generate a Key on Windows
Run the following PowerShell commands to generate a Base64-encoded 32-byte key.
$bytes = New-Object byte[] 32[Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes)[Convert]::ToBase64String($bytes)
If OpenSSL is available on the Windows host, run the following command:
openssl rand -base64 32
Store the generated value in a secret manager or another secure location.FLOW_.
Generate a Key on Linux or macOS
Use OpenSSL to generate a Base64-encoded 32-byte key.
Run the following command:
openssl rand -base64 32
Store the generated value in a secret manager or another secure location.FLOW_.
Install Ingest
You can install Ingest in both Windows and non-Windows environments.
Install Ingest as a Windows Service
Note: Filenames may change from release to release.
-
Download the following files to your host:
-
Unzip the Ingest setup ZIP file.
This creates an ingestdirectory. -
Move the
ingestdirectory to your desired install location.For example, C:\SingleStore\ingest. -
Copy the downloaded
ingest.file into the ingest directory so that all required files are in the same location.jar -
Change the directory to the
ingestdirectory and open theingest.file in a Notepad.xml Change the following lines as per your requirements. <id>SingleConnect-Ingest</id>This tag is used as a unique ID in Windows services.
Each Ingest pipeline has its own ID.
<name>SingleConnect Ingest</name>This tag is a display name in the Windows services.
It must be brief but descriptive.
<description>SingleConnect Ingest</description>This tag specifies a description of the Ingest service.
Note: When a server hosts several Java versions, relying on the system’s default Java can result in version conflicts or unexpected failures.
To guarantee Ingest uses the intended Java version, refer the full path to your required Java binary directly. For example, if Java 21 has been extracted to
C:\java\java21, specify the absolute path tojava.in yourexe ingest.file:xml <executable>C:\java\java21\bin\java.exe</executable> -
In
ingest., uncomment the env line and replace the placeholder with the generated Base64 key.xml The service wrapper exports the key to the Java process automatically. <env name="FLOW_ENCRYPTION_KEY" value="YOUR_BASE64_KEY_HERE"/>To keep the secret out of
ingest., omit the env element and setxml FLOW_as a Windows system environment variable in System Properties > Advanced > Environment Variables.ENCRYPTION_ KEY The Ingest service reads the updated value the next time it starts. -
Grant the following permissions to the user that runs the Ingest service, on the entire Ingest directory:
-
Read
-
Write
-
Delete
Ensure that all contained files and subfolders get the same permissions.
-
-
Install Ingest as a Windows service.
-
Open a command prompt as an Administrator.
-
Change the current directory to the
ingestdirectory and run theInstall-Service.file using the following command.bat Install-Service.batThis batch file runs commands to install the service.
Once the command is completed, close the command prompt.
-
-
The Ingest service must appear in the Windows services list like
SingleConnect-Ingest, matching the ID set earlier. -
The Ingest service starts automatically upon installation and must be running.
You can start, stop, or restart the Ingest service similar to other Windows services. -
To verify the encryption configuration, open the most recent log file under
ingest\log\and search forCMG500.Verify that the log contains the following line: Info(CMG500): Resolved AES-256 encryption key from FLOW_ENCRYPTION_KEY env var (fingerprint <16-hex-chars>)If the log shows "
.", Flow is using an insecure default key instead of. . from legacy hardcoded fallback FLOW_.ENCRYPTION_ KEY This means the environment variable was not successfully passed to the JVM. Recheck the ingest.env entry, or the Windows system environment variable, and then restart the service.xml -
Open a Chromium-based browser at
http://localhost:8081, orhttp://<host>:8081if the application is installed on a remote server.You can change this port from the user interface (UI). The new port setting takes effect after the next run. -
Navigate to Settings > License and enter the license key.
Install Ingest in Non-Windows Environment
-
Download the following files to your host:
-
Unzip the Ingest setup ZIP file.
This creates an ingestdirectory. -
Move the
ingestdirectory to your desired install location.For example, /opt/singlestore/ingest. -
Copy the downloaded
ingest.file into the ingest directory so that all required files are in the same location.jar -
Configure and start Ingest using ONE of the following methods:
-
Edit the launcher
ingest.in the Ingest directory.sh Uncomment the FLOW_lines and replace the placeholder with the generated Base64 key.ENCRYPTION_ KEY export FLOW_ENCRYPTION_KEY=YOUR_BASE64_KEY_HEREjava -cp ingest.jar:lib/*:. org.sirus.RunTo start Ingest, run:
./ingest.sh -
Leave
ingest.unchanged, and exportsh FLOW_in the shell that launches Ingest, then start Ingest.ENCRYPTION_ KEY export FLOW_ENCRYPTION_KEY=YOUR_BASE64_KEY_HEREjava -jar ingest.jar java -jar ingest.jar -
Pass the key as a Java system property.
java -Dflow.encryption.key=YOUR_BASE64_KEY_HERE -jar ingest.jarNote: The
flow.Java system property takes precedence over the environment variable.encryption. key This precedence is useful when multiple Flow instances run on the same host with different keys.
-
-
To include external libraries, run the following command.
Windows
java -cp "other_lib.jar;ingest.jar" org.springframework.boot.loader.JarLauncherLinux
java -cp "other_lib.jar:ingest.jar" org.springframework.boot.loader.JarLauncher -
Tail the most recent file under
log/and search forCMG500:grep -F 'Info(CMG500)' log/*.log | tailExpected output:
Info(CMG500): Resolved AES-256 encryption key from FLOW_ENCRYPTION_KEY env var (fingerprint <16-hex-chars>)If the log shows "
.", the variable was not exported into the JVM environment.. from legacy hardcoded fallback Confirm it in the same shell that launched Ingest. env | grep FLOW_ENCRYPTION_KEY -
Open a Chromium-based browser at
http://localhost:8081, orhttp://<host>:8081if the application is installed on a remote server.You can change this port from the user interface (UI). The new port setting takes effect after the next run. -
Navigate to Settings > License and enter the license key.
Install XL Ingest
You can install XL Ingest in both Windows and non-Windows environments.
Note: Filenames may change from release to release.
Install XL Ingest as a Windows Service
-
Download the following files to your host:
-
XL Ingest JAR:
https://release.
memsql. com/singlestoreflow/production/2. 6. 0-b9df345a/xl-ingest. jar -
XL Ingest Setup ZIP:
https://release.
memsql. com/singlestoreflow/setup/xl-ingest. zip
-
-
Unzip the XL Ingest setup ZIP file.
This creates an xlingestdirectory. -
Move the
xlingestdirectory to your desired install location.For example, C:\SingleStore\xlingest. -
Copy the downloaded
xlingest.file into the xlingest directory so that all required files are in the same location.jar -
Change the directory to the
xlingestdirectory and openxlingest.file in a Notepad.xml Change the following lines as per your requirements. <id>SingleConnect-XL-Ingest</id>This tag is used as a unique ID in Windows services.
Each XL Ingest pipeline has its own ID.
<name>SingleConnect XL Ingest</name>This tag is a display name in the Windows services.
It must be brief and descriptive.
<description>SingleConnect XL Ingest</description>This tag specifies a description of the XL Ingest service.
-
In
xlingest., uncomment the env line and replace the placeholder with the generated Base64 key.xml The service wrapper exports the key to the Java process automatically. <env name="FLOW_ENCRYPTION_KEY" value="YOUR_BASE64_KEY_HERE"/>XL Ingest and Ingest use the same
FLOW_value because they share the same configuration file.ENCRYPTION_ KEY The XL Ingest service reads the updated value the next time it starts. -
Install XL Ingest as a Windows service.
-
Open a command prompt as an Administrator.
-
Navigate to
xlingestdirectory and run theInstall-SingleConnect-XL-Ingest-Service.file using the following command.bat Install-SingleConnect-XL-Ingest-Service.batThis batch file runs commands to install the service.
Once the command is completed, close the command prompt.
-
-
The XL Ingest service must appear in the Windows services list like
SingleConnect-XL-Ingest, matching the ID you set earlier. -
The XL Ingest service starts automatically upon installation and must be running.
You can start, stop, or restart the XL Ingest service like other Windows services. -
To verify the encryption configuration, open the most recent log file under
xlingest\log\and search forCMG500.Verify that the log contains the following line: Info(CMG500): Resolved AES-256 encryption key from FLOW_ENCRYPTION_KEY env var (fingerprint <16-hex-chars>)If the log shows "
.", Flow is using an insecure default key instead of. . from legacy hardcoded fallback FLOW_.ENCRYPTION_ KEY This means the environment variable was not successfully passed to the JVM. Recheck the xlingest.env entry, or the Windows system environment variable, and then restart the service.xml -
Open a Chromium-based browser at http://localhost:8084.
If the application is installed on a server, navigate to http://<server-ip-address>:8084instead. -
Navigate to Configuration > License, and enter the license key.
Install XL Ingest in Non-Windows Environment
-
Download the following files to your host:
-
XL Ingest JAR:
https://release.
memsql. com/singlestoreflow/production/2. 6. 0-b9df345a/xl-ingest. jar -
XL Ingest Setup ZIP:
https://release.
memsql. com/singlestoreflow/setup/xl-ingest. zip
-
-
Unzip the XL Ingest setup ZIP file.
This creates an xlingestdirectory. -
Move the
xlingestdirectory to your desired install location.For example, /opt/singlestore/xlingest. -
Copy the downloaded
xlingest.file into the xlingest directory so that all required files are in the same location.jar -
Configure and start XL Ingest using ONE of the following methods:
-
Edit the launcher
xlingest.in the ingest directory.sh Uncomment the FLOW_lines and replace the placeholder with the generated Base64 key.ENCRYPTION_ KEY export FLOW_ENCRYPTION_KEY=YOUR_BASE64_KEY_HEREjava -cp xlingest.jar:lib/*:. cirus.RunTo start XL Ingest, run:
./xlingest.sh -
Leave
xlingest.unchanged, and exportsh FLOW_in the shell that launches XL Ingest, then start XL Ingest.ENCRYPTION_ KEY export FLOW_ENCRYPTION_KEY=YOUR_BASE64_KEY_HEREjava -jar xlingest.jarjava -jar ingest.jar -
Pass the key as a Java system property.
java -Dflow.encryption.key=YOUR_BASE64_KEY_HERE -jar xlingest.jarNote: The
flow.Java system property takes precedence over the environment variable.encryption. key This precedence is useful when multiple Flow instances run on the same host with different keys.
-
-
To include external libraries, use the following command.
Windows
java -cp "other_lib.jar;xlingest.jar" cirus.RunLinux
java -cp "other_lib.jar:xlingest.jar" cirus.Run -
Tail the most recent file under
log/and search forCMG500:grep -F 'Info(CMG500)' log/*.log | tailExpected output:
Info(CMG500): Resolved AES-256 encryption key from FLOW_ENCRYPTION_KEY env var (fingerprint <16-hex-chars>)If the log shows "
.", the variable was not exported into the JVM environment.. from legacy hardcoded fallback Confirm it in the same shell that launched XL Ingest. env | grep FLOW_ENCRYPTION_KEY -
Open a Chromium-based browser at http://localhost:8084.
If the application is installed on a server, navigate to http://<server-ip-address>:8084instead. -
Navigate to Configuration > License, and enter the license key.
Apply the License Key
The Flow suite of products comes with a validity period specific to each customer's agreement.
Licenses specify a maximum capacity in units.
Each software product has its own unique product ID when set up individually.
For Ingest, go to Settings > Licence.
To retrieve the Product ID, go to your Ingest instance, go to Settings > Licence, and copy the ID from the 'Product Id'.
For XL Ingest, go to Configuration.
To retrieve the Product ID, go to your XL Ingest instance, go to Configuration > Licence, and copy the ID from the 'Product Id'.
Last modified: