MRACM; MySQL Remote Administration and Cluster Management


About

Author: Russell E Glaue ( rglaue@cait.org )

If you wish to help or contribute opinions/advice/suggestions, or are interested in this project and want to know more about it, feel free to contact the author.

This project looks stale, whats the deal? (2006-06-23)
You are correct! This project is stale indeed. I do not know what the future is for it, but the author is reserving the code for possible reencarnacion into something useful, possibly as planned here.
Changes will be that most calls would be performed through HTTP, as either REST or SOAP. (Please do not contact the Author to debate REST and SOAP.)
Currently the Author has not abandond his efforts, but has spent much time writing an application to enable MySQL to run under Linux Virtual Server in a cluster/failover master-master schenerio. This other application is completed, and once it is considered stable for production use (and released), the author might reaproach this project.
Please see codepin.org for more information on this application (termed MySQL Pool-Poller or MPP).

Note: If this project is reencarnated, it will move to CodePin.

Why is this project being created?
The author wanted:
+ the ability to centrally manage processes of MySQL Servers, starting and stoping processes remotely, and yet centrally.
+ a way to view and update configuration files of MySQL Servers which will have the same exact configuration information due to being in a cluster/replication environment.
+ to view logs from multiple MySQL Servers from a single web interface.
+ to introduce MySQL into a load balanced environment using Linux Virutal Server, but managing MySQL Servers intelligently.

Why is this project being written in PERL?
It is believed that PERL is the best language to manipulate OS processes, server configuration files and log files as well as other unix shell level tasks.

Is Unix the only OS type that will be supported by this project (Will Microsoft OSs be supported)?
No/Yes. MRACM should run in any Unix environment supporting the latest PERL, Apache, OpenLDAP and MySQL projects. Although the author does not like it, he has been taking every consideration to allow for the Billy-Boy OS in the MRACM code. However, the Author does not own Billy-Boy Operating Systems and neither does he want to make the time to test MRACM on the Billy-Boy OS.
Perhaps after MRACM matures the author will try testing MRACM on Microsoft Windows 2000. This is if he has access to a MS Windows 2000 Machine (currently Microsoft OSs do not exist in the Author's world).

What OS types is the Author testing initial versions of MRACM on?
The author is developing MRACM on Apple Mac OS X (BSD Unix), and will be testing in a SPARC Solaris Unix production environment. The Linux Virtual Servers will obviously run on Linux.

What type of license will MRACM fall under?
Some type of open source license which allows anyone to edit the MRACM code as they wish and even redistribute it. However the license will not allow the resale of MRACM or the sale of a service based on MRACM unless the author gets compensated. In other words I will be like the RIAA... if you get money from the use of MRACM, I want my cut. If you do not want to pay me money, then don't charge any money for services using MRACM.
I don't like it when companies use a free product to base a service they charge others for to maximize their profit line. However, I do realize some companies pass the saving of using free products onto their customers. If MRACM is used for this later situation, then it must be stated that the service is free.
I don't like licenses, but it is the only way to keep people from making money off of something that was intended to be used for free purposes.

Status

MRACM has not yet been released.

TODO List


Description

MRACM (MySQL Remote Administration and Cluster Management) is a solution for managing distributed MySQL Database Servers either as stand-alone or in a cluster or replicated setting (multiple master and/or multiple slaves).

How Does It Work

In the MRACM environment an administrator can use this system to manage MySQL Databases Servers on only a single physicsal server or on multiple physical servers.
MRACM is used by Administrators to start, stop, restart, view logs, rotate logs, etc. MySQL Database Server Instances on Servers configured in the MRACM Domain Administration. This is executed using RPC (remote procedure call). Each physical server has a Remote Administration Server (or RPC Server) running to accept calls for tasks.
Security measures will be involved that will only allow the MRACM web interface or system tools to make RPC calls from the physical server designated as the administration server.
Single Physical Server Environment In this environment the MRACM system is only on a single physical server and all MySQL Database Servers and Server Instances are contained within one single physical server.
Multiple Physical Server Environment In this environment the MRACM system is on a single physical server, but each physical server with MySQL Database Servers will run the MRACM Remote Administration Server.

What is in the MRACM System

The MRACM system is made up of multiple parts which many may seem make the system complex. But all parts work together to provide a single environment in a distributed system of MySQL Database Servers.
httpd (Apache 1.3.20+) httpd is used on the physical server in which the MRACM system is installed. httpd is used to provide administrators with a web interface to administering remotely installed MySQL Servers in a distributed environment. httpd cgi tools interact with MRACM Remote Administration Servers. These CGI tools are manipulated from the web interface.
Apache httpd should be installed before MRACM is installed.
slapd (OpenLDAP 2.0.20+) slapd is used on the physical server in which the MRACM system, is installed. slapd is used to store configuration information of all MySQL Database Servers and Server Instances participating in MRACM administration domains. MySQL Server Instances pull their configuration information from slapd.
OpenLDAP slapd should be installed before MRACM is installed.
mrasd (MRACM) mrasd is used on all physical servers in which MySQL Database Server Instances will run. mrasd is used to manipulate the system process and files of the local server instances.
mysqld (MySQL 4.0.0+) mysqld is used on all physical servers in which MySQL Database Server Instances will run. mysqld is the actual MySQL Database Server daemon binary and will be invoked for each MySQL Database Server Instance configured to run on the local physical server.
MySQL mysqld should be installed before MRACM is installed.
mrac (MRACM) mrac is the MySQL Remote Administration Client. It can be used on any physical server to manipulate MRACM Remote Administration Servers from the command line.
perl (PERL 5.6+) The MRACM system is written in PERL.


Definitions

Physical Server A computer that has an operating system and is ccapable of running software applications like the MySQL Database Server.

MySQL Database Server A daemon with possibly client tools and libraries that has a purpose to run on an operating system to service client applications with information. mysqld is the MySQL Database Server application and al the libraries, binary tools, client applications and files make up the complete MySQL Database Server.

MySQL Database Server Instance A single running process that once ran on a Physical Server will bind to an IP number and system port number, receive queries from a client and return output. Each process runs independently of each other, and typically will have their own settings. A MySQL Database Server Instance will have its own my.cnf, data directory, logs, and would bind to its own port number and/or IP number. Multiple server instances will share resources that make the server like libraries, binary tools and client applications.

MRACM Administration Domain A realm of MySQL Database Server and MySQL Database Server Instances that will be administered together as a single collection. The MRACM system allows for multiple administration domains.