This section describes MemSQL software, hardware, and network requirements.
Software Requirements
MemSQL requires a 64-bit Linux-based operating system. MemSQL will not run on 32-bit Linux. The following distributions are officially supported:
Distribution | Minimum Version | Recommended Version |
---|---|---|
Amazon AMI | 2014.03 (Kernel 3.10) | 2016.03 (Kernel 4.4) |
CentOS | 6.0 (Kernel 2.6) | 7.2 (Kernel 3.10) |
Debian | 7.3 (Kernel 3.2) | 8.3 (Kernel 3.16) |
Fedora | 20 (Kernel 3.11) | 23 (Kernel 4.2) |
OpenSUSE | 13.1 (Kernel 3.11) | 42.1 (Kernel 4.1) |
Red Hat | 6.0 (Kernel 2.6) | 7.2 (Kernel 3.10) |
Ubuntu | 12.04 (Kernel 3.2) | 14.04 (Kernel 3.13) |
Hardware Requirements
On-Premises Hardware Requirements
MemSQL minimum hardware requirements are:
- 4 CPU cores
- 8 GB RAM
MemSQL recommends the following hardware for on-premises deployments:
Component | Recommendation |
---|---|
CPU | Two socket x64-based server with at least 4 total cores per socket. |
Memory | At least 4GB per core, 32GB minimum per node. |
Storage | Provide a storage system for each node with at least 3 times the capacity of main memory. SSD storage is recommended for columnstore workloads. |
Considerations:
- MemSQL rowstore storage capacity is limited by the amount of RAM on the host machine. Increasing RAM increases the amount of available data storage.
- It is strongly recommended to run MemSQL leaf nodes on machines all with equal capacity.
- MemSQL is optimized for architectures supporting SSE4.2 and AVX2 instruction set extensions, but it will run successfully on x64 systems without these extensions.
- For concurrent loads on columnstore tables, SSD storage will improve performance significantly compared to HDD storage.
Cloud Environment Hardware Requirements
The following table shows the recommended resources to use when deploying MemSQL in a cloud environment, including several options to meet different application performance requirements. MemSQL will work with most public or private cloud providers, as long as the selected resource has comparable specifications to those listed below. All instances should have high network performance and must be a supported 64-bit Linux distribution. All instances should be geographically deployed in a single region. Instance types that support Enhanced Networking should have it enabled.
Instance Type | Processor Architecture | vCPU | Memory (GB) | Instance Storage | Network |
---|---|---|---|---|---|
small | 64-bit | 8 | 7 | 4 x 420 | High |
medium | 64-bit | 4 | 15 | 4 x 420 | High |
large | 64-bit | 8 | 30 | EBS Only | High |
extra large | 64-bit | 8 | 68.4 | 2 x 840 | High |
Instruction Set Requirements
For best performance for columnstore query processing, run MemSQL on hardware that supports the Intel AVX2 instruction set extensions. Also, some built-in vector functions in MemSQL require AVX2. Almost all Intel x64 processors made since late 2013 (Haswell and later) support AVX2. MemSQL will operate without AVX2. See here regarding how to verify if your system supports AVX2.
Network Requirements
MemSQL requires routing and firewall settings to be configured to:
- allow database clients (e.g. your application) to connect to the MemSQL aggregators
- allow all nodes in the cluster to talk to each other over the MemSQL protocol (3306) and MemSQL Agent protocol (9000). Note that these port assignments are configurable; for more information on how to change them, see the MemSQL Configuration and the AGENT-START topics.
Port | Source | Destination |
---|---|---|
3306 | Clients | Aggregator Nodes |
3306 | All MemSQL Nodes | All MemSQL Nodes |
9000 | All MemSQL Nodes | All MemSQL Nodes |
We also highly recommend configuring your firewall to prevent other hosts on the Internet from connecting to MemSQL.
Installing without the Minimum CPU and RAM Requirements
MemSQL is designed to run on machines with at least 4 CPU cores and 8 GB RAM. MemSQL can run on machines with lower resources, but users who choose to run MemSQL this way should understand that this could lead to a less ideal experience.
The only users who should deploy MemSQL this way are those who are:
- Running MemSQL on a development environment with low system resources, fully understanding that their test and production systems should have at least 4 CPU cores and 8 GB RAM to function optimally.
- Configuring MemSQL on aggregator nodes after having run performance benchmarks on their MemSQL cluster and determining it is acceptable for those machines to run with low resources during peak production workloads.
To run MemSQL on systems below the minimum system requirements, read the full installation guide and do the following:
- Install MemSQL Ops using the
--ignore-min-requirements
flag when running theinstall.sh
script. - Go through the standard process of installing MemSQL using MemSQL Ops.
- Add the following lines to the
memsql.cnf
file for each specific MemSQL node you would like to lower the requirements for:minimum_core_count = <NUM_CORES> minimum_memory_mb = <NUM_MB>
- Restart the MemSQL nodes for which you have modified the
memsql.cnf
file. You can do so using thememsql-ops memsql-restart
command.