Who wouldn’t love a reliable database free from issues and allowing us to sleep peacefully?
That’s what Roman Agabekov, the CEO of Releem, aims to provide. As a tool specializing in MySQL Performance Tuning, Releem helps developers and database administrators by automating MySQL tuning, enhancing application performance, and reducing server costs.
In this blog post, I’ll explain how to use the product and provide some examples of the issues it can effectively address.
Introduction
Releem is a MySQL Performance Tuning Tool that is available as a service, which means you’ll need to sign up on their website. We all understand that signing up can be as tedious as slogging through a long blog post (wink), but fortunately, Releem keeps it simple—just your email, name, and password are needed.
Once registered, we gain access to the interface to begin setting up the tool for monitoring our MySQL databases. For this demonstration, I’m using two MySQL instances with asynchronous replication and a default InnoDB configuration to explore the types of tuning insights the tool can offer.
Installing Releem
The installation process is quite simple, following Releem’s friendly guide. To start, you click on “Add new server”.
This action leads you to a Wizard page where you select the installation type. In my case, I chose the “Automatic Agent Installation”.
This choice prompts you to enter the root password of the MySQL database, after which a shell script is generated for you to copy and execute on your server:
Executing this script automates the entire setup process. Here’s a breakdown of what happens:
- Dependencies are installed.
- The Releem Agent is downloaded and configured.
- Directives are added to the MySQL configuration files.
- A new MySQL user
releem
is created for data collection. - The Releem Agent configures memory limits and cron jobs.
- Metrics are collected and recommendations are fetched from Releem’s cloud platform.
Upon successful completion, the installation prints:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# RELEEM_MYSQL_MEMORY_LIMIT=0 RELEEM_API_KEY=3897ade6-1159-45e0-a7bf-ab7f867aede1 RELEEM_MYSQL_ROOT_PASSWORD='XXXXX' RELEEM_CRON_ENABLE=1 bash -c "$(curl -L https://releem.s3.amazonaws.com/v2/install.sh)" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 20304 100 20304 0 0 295k 0 --:--:-- --:--:-- --:--:-- 295k * Installing dependences... * Downloading Releem Agent, architecture x86_64... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 21673 100 21673 0 0 255k 0 --:--:-- --:--:-- --:--:-- 255k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 19.9M 100 19.9M 0 0 76.9M 0 --:--:-- --:--:-- --:--:-- 76.9M * Configure the application... * Detected service name for appling config * Configure catalog for copy recommend config * The /etc/mysql/my.cnf file is used for automatic Releem settings. * Adding directive includedir to the MySQL configuration /etc/mysql/my.cnf. * Configure MySQL user for collect data * Using MySQL root user Connect to MySQL - successful mysql: [Warning] Using a password on the command line interface can be insecure. mysql: [Warning] Using a password on the command line interface can be insecure. mysql: [Warning] Using a password on the command line interface can be insecure. mysql: [Warning] Using a password on the command line interface can be insecure. mysql: [Warning] Using a password on the command line interface can be insecure. Created new user `releem` Connecting to MySQL with user `releem` - successfull * Configure mysql memory limit * Saving variables to Releem Agent configuration - Adding API key to the Releem Agent configuration: /opt/releem/releem.conf - Adding Releem Configuration Directory /opt/releem/conf to Releem Agent configuration: /opt/releem/releem.conf - Adding user and password mysql to the Releem Agent configuration: /opt/releem/releem.conf - Adding MySQL restart command to the Releem Agent configuration: /opt/releem/releem.conf - Adding MySQL include directory to the Releem Agent configuration /opt/releem/releem.conf. - Adding autodetected hostname to the Releem Agent configuration: /opt/releem/releem.conf * Configure crontab... * Executing Releem Agent for first time... INFO : [Main] - 2024/04/28 21:12:54 main.go:85: Starting releem-agent of version is 1.15.0 INFO : [Main] - 2024/04/28 21:12:54 config.go:41: Loading config /opt/releem/releem.conf INFO : [Main] - 2024/04/28 21:12:54 main.go:155: InstanceType is Local INFO : [Main] - 2024/04/28 21:12:54 main.go:184: Connect Success to DB via tcp 127.0.0.1 INFO : [Worker] - 2024/04/28 21:12:54 runner.go:73: * Collecting metrics to recommend a config... INFO : [ReleemRepeaterConfigurations] - 2024/04/28 21:12:54 releemConfiguration.go:25: * Sending metrics to Releem Cloud Platform... INFO : [ReleemRepeaterConfigurations] - 2024/04/28 21:12:55 releemConfiguration.go:62: * Downloading recommended MySQL configuration from Releem Cloud Platform... INFO : [ReleemRepeaterConfigurations] - 2024/04/28 21:12:55 releemConfiguration.go:80: 1. Recommended MySQL configuration downloaded to /opt/releem/conf INFO : [ReleemRepeaterConfigurations] - 2024/04/28 21:12:55 releemConfiguration.go:81: 2. To check MySQL Performance Score please visit https://app.releem.com/dashboard?menu=metrics INFO : [ReleemRepeaterConfigurations] - 2024/04/28 21:12:55 releemConfiguration.go:82: 3. To apply the recommended configuration please read documentation https://app.releem.com/dashboard INFO : [Main] - 2024/04/28 21:12:55 main.go:85: Starting releem-agent of version is 1.15.0 INFO : [Main] - 2024/04/28 21:12:55 config.go:41: Loading config /opt/releem/releem.conf INFO : [Main] - 2024/04/28 21:12:55 main.go:155: InstanceType is Local INFO : [Main] - 2024/04/28 21:12:55 main.go:184: Connect Success to DB via tcp 127.0.0.1 INFO : [Worker] - 2024/04/28 21:12:58 runner.go:51: Exiting * Installing and starting Releem Agent service to collect metrics.. Installing Releem Agent - successful Restarting Releem Agent - successful * Enabling Performance schema and SlowLog to collect metrics... To apply changes to the mysql configuration, you need to restart the service Please confirm restart MySQL service? (Y/N) y Restarting service with command ' /usr/bin/systemctl restart mysql'... Waiting for mysql service to start 1200 seconds - PID 79152 terminated with exit code 0 The MySQL service restarted successfully! Performance schema and Slow Log are enabled. * Releem Agent is successfully installed. * To view Releem recommendations and MySQL metrics, visit https://app.releem.com/dashboard |
With the agent installed and running on the server, we can now see Releem actively monitoring our instances:
The tool will initiate workload monitoring, and after 24 hours, we can examine the recommended adjustments to enhance our database:
Applying changes in the Releem interface is as easy as clicking a button. However, certain MySQL changes require restarting the database, so use caution when implementing them in a production environment.
Extras
Releem delivers detailed information on MySQL and the operating system, presented in a clear and structured summary:
And it offers query analytics to help us identify and optimize slow queries:
Conclusion
Releem proves to be a lifesaver for those who either lack the budget for dedicated DBAs to manage MySQL or are more focused on automation and overseeing hundreds of databases rather than meticulously tuning MySQL. It spares DBAs from analyzing database metrics (using tools like pt-stalk, OS watcher, PMM, etc.) to pinpoint optimization opportunities. Let’s face it: Any tool that makes a DBA’s day less boring is a friend.
You might be curious about the features I think could enhance Releem. It would be helpful to briefly explain each suggested modification to my database. Also, I would like to see the displayed metrics be a bit more interactive, perhaps with the ability to zoom in and out and set specific date ranges.
As the tool evolves, I would like to see recommendations for replication settings in the future—not only for asynchronous replication scenarios (between source and replica) but also for setups like InnoDB Cluster.
And hey, wouldn’t it be fantastic if Releem expanded to include other tools from the MySQL ecosystem, like ProxySQL and Galera Cluster? A bored engineer can dream, right?
Lastly, this space is open for Roman to share his comments, feedback, and his visions for the future of Releem. Here’s wishing him all the best on his journey! Happy databasing to all!
Thank you, Vinicius, for the detailed overview of Releem and its capabilities. You’ve done it better than our documentation)
I’ve added your suggestions to feature requests published here: https://github.com/Releem/mysqlconfigurer/discussions
In March of 2021, I started this 3-year Twitter thread about the journey of Releem: https://twitter.com/agabekovroman/status/1371812397812436993
Releem wasn’t just about launching another tech tool but about realizing a vision. A vision where database monitoring and management wasn’t just about sifting through endless metrics and alerts, calculation variables, tons of documentation, query optimization, and index management.
It was about simplicity and, most importantly, automation and actionable insights.
That’s why we’re building Releem as a co-pilot for MySQL, simplifying and automating management tasks to ensure the database performs at its best.
We will implement the configuration application without restart when possible, as well as SQL Query Optimization and Security Reviews.
Best,
Roman
Founder, Releem