Henan College of Traditional Chinese Medicine
Course Design Report of MySQL Database Management
Title: Research and Implementation of MySQL Clusters
Completion date:2012January 1, December 31
Contents
1. Course Design overview 3
2. research contents and objectives 3
3. Research Methods 4
3.1 Research Methods ................................................................................... 4
3.2 experiment method .................................................................................... 5
3.3 feasibility analysis ........................................................................................... 5
4. Study Report. 10
4.1 planning stage .................................................................................... 10
4.2 install Mysql server ........................................................................ 10
4.3 install Mysql Cluster ...................................................................... 11
4.4 configure and manage nodes .............................................................................. 11
4.5 configure an SQL node ............................................................................... 13
4.6 configure the storage node .............................................................................. 13
4.7 start MySQL Cluster ...................................................................... 13
4.8 close MySQL Cluster ....................................................................... 14
4.9 Data Testing .................................................................................... 14
4.10 Close Security .................................................................................. 14
5. Test Report/Experiment Report ........................................................................... 15
6. Research conclusions .................................................................................. 22
7. Conclusion .............................................................................................. 23
1. Course Design Overview
MySQL Cluster is a technology that allows you to deploy the "in memory" Database Cluster in a non-shared system. Without a shared architecture, the system can use cheap hardware without special requirements for hardware and software. In addition, since each component has its own memory and disk, there is no single point of failure.
MySQL Cluster is composed of a group of computers, each of which runs a variety of processes, including MySQL servers, NDB Cluster data nodes, management servers, and (possibly) dedicated Data Access Program.
MySQL Cluster is a highly practical and redundant MySQL version suitable for distributed computing environments. MySQL
The Cluster can use a variety of failover and load balancing options to configure the NDB storage engine, but it is the easiest to do this on the storage engine at the Cluster level. The NDB storage engine of MySQL Cluster contains the complete dataset, which depends only on other data in the Cluster.
Currently, the Cluster of the MySQL Cluster can be configured independently of the MySQL server. In MySQL Cluster, each part of the Cluster is considered as one node.
[Keyword]: Cluster MySQL Cluster
2. research contents and objectives
Objective:
With the growth of enterprises, as the business volume increases, the system's access volume and data traffic increase rapidly, and the processing capability and computing strength also increase accordingly, making it impossible for a single device to undertake. In this case, if you discard the existing device to perform a large number of hardware upgrades, this will cause a waste of existing resources, and if you face the next increase in business volume, this will lead to a high cost investment for another hardware upgrade, and even devices with superior performance cannot meet the current business needs. As a result, people want to build clusters through several small and medium-sized servers to achieve load balancing of databases. In the case of a higher database processing speed, we can simply increase the number of database servers.
As the core of the application system, the database plays a very important role in the enterprise's IT system. A single device cannot guarantee the continuous operation of the system. system failures seriously affect the normal operation of the system, it even brings huge economic losses. Therefore, people hope to build a database cluster to ensure the availability of the system. Once a node fails, the system will automatically fail over to achieve continuous system work.
Enterprise Data is some important information of the enterprise. Some core data is even related to the lifeblood of the enterprise. A single device cannot guarantee the security of the data. Once the data is lost, it is difficult to find it back, therefore, people want to build a database cluster to achieve data cluster redundancy and ensure security through multiple copies of data.
MySql is a free open-source database widely used currently. In small and medium-sized data applications, a single MySql server can meet the requirements, however, for large WEB applications or other applications with massive data storage access, a single MySql server cannot be well qualified, and multiple MySql servers must work collaboratively, consider not only the MySql server cluster structure, but also the HA hot backup of the MySql server, but also the load balancing problem between servers.
Study content:
With the popularization of computer applications, databases have become one of the key services for building e-commerce. Although the cluster technology solves the problem of improving the access capacity (such as c009le and other search portals), the database becomes the bottleneck of the website, because in order to avoid data consistency problems, websites use a single database server to provide data for all web services. When the access volume increases, a single database server is often overwhelmed. Even the server system built based on the best configuration in the past may not be able to bear the explosive growth in access traffic. Therefore, it is necessary to create a network database server with good scalability and superior performance/price ratio to meet the rapidly growing traffic and data traffic needs.
This requires a specific connection method to combine relatively low-price hardware devices and provide high-performance task processing capabilities, that is, database clusters.
Using Linux can improve the reliability and stability of customers' workstation operations and obtain high-availability servers. In the Linux system, a specific implementation scheme of MySQL Database Cluster Working in mutual backup mode is provided to achieve high availability cluster servers. Two relatively independent applications run on both machines at the same time, but both are set as backup machines. When a server fails, the application of the faulty server can be taken over by another server in a short time, thus ensuring the application continuity.
3. Research Methods
3.1Research methods
Experimental Method
3.2Lab Methods
(1) Build a cluster using three hosts as management nodes, data nodes, and SQL nodes respectively.
<1> Create a database, create a data table, and insert data on the master node.
<2> View data updates of the master node on a non-master node
<3> create databases, create data tables, and insert data on non-master nodes
<4> View non-master node data updates on the master node
(2) Build a cluster with three hosts, one of which serves as the management node, and the other two as the data node and SQL node respectively.
<1> Create a database, create a data table, and insert data on the master node.
<2> View data updates of the master node on a non-master node
<3> create databases, create data tables, and insert data on non-master nodes
<4> View non-master node data updates on the master node
3.3Feasibility Analysis
(1) MySQL
Cluster is a technology that allows you to deploy "in memory" databases in a non-shared system.
Cluster. Without a shared architecture, the system can use cheap hardware without special requirements for hardware and software. In addition, since each component has its own memory and disk, there is no single point of failure. MySQL Cluster is composed of a group of computers, each of which runs a variety of processes, including MySQL servers, NDB Cluster data nodes, management servers, and (possibly) dedicated Data Access Program.
(2) Three hosts can be connected together through a vswitch. You only need to modify the IP address of the host before the connection and install the software to be installed. These three hosts are installed with ubuntu 11.04 at the same time.
(3) When you build five hosts with MySQL installed into a cluster, you only need to use three hosts, you only need to use the two hosts as data nodes and SQL nodes respectively.
(4) Since we have installed virtual machines, we can enable multiple virtual systems in them, so we can create larger clusters in these two hosts, however, considering the current computer performance, it is difficult to run multiple virtual systems on a single host, in this experiment, we only build three MySQL-installed hosts into a small cluster.
(5) various solutions implemented by clusters
<1> MySQL Clustering (ndb-cluster stogare)
The high-reliability solution provided by MySQL in the form of storage engines is transaction-safe, real-time data replication, and can be used in scenarios requiring high reliability and load balancing. This solution requires at least three node servers to achieve better results.
Cost:
(1) The Node server has a large demand for RAM and is linearly proportional to the database size;
(2) it is best to use a Gigabit Ethernet network;
(3) you also need to use the expensive SCI card provided by doldolphin.
Advantages:
(1) It can be used in Server Load balancer scenarios;
(2) It can be used in scenarios with high reliability;
(3) high scalability;
(4) Real database redundancy;
(5) easy to maintain.
Disadvantages:
(1) as the database grows, the demand for RAM increases, resulting in high costs;
Speed:
(1) It is almost 10 times slower than a typical single server (no Gigabit Ethernet, no SCI card, and storage engine restrictions.
Application scenarios:
(1) redundancy, high reliability, and load balancing
<2> MySQL/GFS-GNBD/HA
(Active/Passive)
GFS is a transaction-safe file system. A MySQL instance can share data at the same time.
Cost:
(1) The cost of up to n High-Performance servers, one of which is activated and others are used as backup servers.
Advantages:
(1) High Reliability
(2) Some degree of Redundancy
(3) Scaling Based on High Reliability
Disadvantages:
(1) No Server Load balancer
(2) unguaranteed Redundancy
(3) The write operation cannot be scaled.
Speed:
(1) Two times of a single server. The read operation is well supported.
Application scenarios:
(1) read-intensive applications requiring high reliability
<3> MySQL/DRBD/HA
(Active/Passive)
DRBD can provide shared hard disks. DRBD can be set to transaction security. A MySQL instance can share data at the same time.
Cost:
(1) The cost of up to n High-Performance servers, one of which is activated, while the others are used as backup servers.
Advantages:
(1) high reliability;
(2) a certain degree of redundancy;
(3) It is scalable in the name of high reliability.
Disadvantages:
(1) No Server Load balancer
(2) unguaranteed Redundancy
(3) No scalability in writing Load
Speed:
(1) reading and writing is equivalent to a separate server.
Application scenarios:
(1) applications requiring high reliability and read-intensive operations
<4> MySQL Write Master/
Multiple MySQL Read Slaves (Active/Active)
Consider different read and write database connections. One master server can be used for write operations, while n slave servers can be used for read operations.
Cost:
(1) The cost of up to one high-performance write server and n read servers
Advantages:
(1) high reliability of read operations;
(2) Load Balancing of read operations;
(3) Load Balancing in read operations is scalable.
Disadvantages:
(1) high reliability without write operations;
(2) Load Balancing without write operations;
(3) No scalability in write operations;
Speed:
(1) Same as a separate server; better support for reading operations
Application scenarios:
(1) read-intensive applications that require high reliability and load balancing.
<5> Standalone MySQL
Servers (Functionally separated) (Active)
Multiple independent servers with separated functions do not have high reliability and load balancing capabilities. They have many obvious disadvantages and are not considered. (
Basic Principles of MySQL Cluster
MySQL cluster is a technology that allows you to deploy "in memory" database clusters in a non-shared system. Without a shared architecture, the system can use cheap hardware without special requirements for hardware and software. In addition, since each component has its own memory and disk, there is no single point of failure.
The MySQL cluster integrates the standard MySQL server with the "in-memory" Cluster Storage engine named NDB. In our document, the term NDB refers to the settings related to the storage engine, and the term "MySQL cluster" refers to the combination of MySQL and NDB storage engines.
A MySQL cluster consists of a group of computers, each of which runs a variety of processes, including MySQL servers, NDB cluster data nodes, management servers, and (possibly) dedicated Data Access Program. For the relationship between these components in the cluster, see:
NDB is a "in-memory" storage engine with high availability and good data consistency.
The NDB storage engine can be configured using multiple failover and load balancing options, but the storage engine at the cluster level is the easiest to start. The NDB storage engine of the MySQL cluster contains the complete dataset, which depends only on other data in the cluster.
In the lowest MySQL cluster configuration, there are at least three nodes. These three nodes are:
<1> Management (MGM) nodes: these nodes manage other nodes in the MySQL cluster, such as providing configuration data, starting and stopping nodes, and running backups. Because these nodes are responsible for managing the configurations of other nodes, they should be started before other nodes are started. The MGM node is started with the command ndb_mgmd.
<2> data nodes: these nodes are used to save the data of clusters. The number of data nodes is related to the number of copies, which is a multiple of the segments. For example, if two copies have two segments, each of them has four data nodes. There is no need for more than one copy. The data node is started with the command ndbd.
<3> SQL node: This is the node used to access cluster data. For MySQL clusters, client nodes are traditional MySQL servers that use the NDB Cluster Storage engine. In typical cases, the SQL node is started with the command mysqld-ndbcluster, or the ndbcluster is added to my. cnf and started with mysqld. The cluster configuration includes the configuration of individual nodes in the cluster and the individual communication links between nodes. For the current design of MySQL clusters, the intention is that the storage nodes are homogeneous in terms of processor capabilities, memory space and bandwidth. In addition, in order to provide a single configuration point as a whole, all configuration data of the cluster is located in one configuration file.
4. Study Report
4.1PLANNING PHASE
We plan to establish a MySQL CLuster System with five nodes. Here we will install two SQL nodes and data nodes together, so we need to use three machines. The specific allocation is as follows:
Node name |
Operating System |
IP address |
Management Node |
Ubuntu 11.04 |
10.0.31.49 |
Data Node 1 |
Ubuntu 11.04 |
10.0.31.40 |
Data Node 2 |
Ubuntu 11.04 |
10.0.31.41 |
SQL Node 1 |
Ubuntu 11.04 |
10.0.31.40 |
SQL Node 2 |
Ubuntu 11.04 |
10.0.31.41 |
4.2Install Mysql server
$ Wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.59.tar.gz/from/http://mysql.cs.pu.edu.tw/
$ Tar-xzvf mysql-5.1.59.tar.gz
$ Mysql-5.1.59 cd
$./Configure
-- With-charset = utf8 -- with-collation = utf8_bin -- with-extra-
Charsets = gbk, gb2312, big5, utf8, binary, ascii
-- Prefix =/usr/local/mysql
-- With-plugins = partition, ndbcluster
$ Make
$ Make install
4.3Install Mysql Cluster
$ Wget
Http://dev.mysql.com/get/Downloads/MySQL-Cluster-7. 1/mysql-cluster-
Gpl-7.1.15a-linux-x86_64-glibc23.tar.gz/from/http://mysql.ntu.edu.tw/
$ Tar-xzvf
Mysql-cluster-gpl-7.1.15a-linux-x86_64-glibc23.tar.gz
$ Mv
Mysql-cluster-gpl-7.1.15a-linux-x86_64-glibc23.tar.gz
/Usr/local/mysql-cluster
$ Cd/usr/local/mysql-cluster
$ Groupadd mysql
$ Useradd-g mysql
$ Passwd mysql
$ Cd/usr/local/mysql-cluster
$ Chown-R mysql: mysql.
$ Scripts/mysql_install_db
-- User = mysql
$ Cp-rp bin/ndb *
/Usr/local/bin/
4.4Configuration Management Node
$ Cp
Support-files/ndb-config-2-node.ini/etc/ndb_mgmd.ini
$ Vi/etc/ndb_mgmd.ini
[Ndbd default]
NoOfReplicas = 2
MaxNoOfConcurrentOperations =
10000
DataMemory = 80 M
IndexMemory = 24 M
TimeBetweenWatchDogCheck =
30000
DataDir =
/Usr/local/mysql-cluster/data
MaxNoOfOrderedIndexes = 512
# Set a management node Server
[Ndb_mgmd default]
DataDir =
/Usr/local/mysql-cluster/data # directory for storing logs on MGM
[Ndb_mgmd]
Id = 1
HostName = 10.0.31.49
# Set storage node server (NDB node)
[Ndbd]
Id = 2
HostName = 10.0.31.40
DataDir =/usr/local/mysql-cluster/data
[Ndbd]
Id = 3
HostName = 10.0.31.41
DataDir =/usr/local/mysql-cluster/data
# Setting an SQL node Server
[Mysqld]
Id = 5
HostName = 10.0.31.40
[Mysqld] # second SQL Node
Id = 6
HostName = 10.0.31.41
# Select an unused Port
[Tcp default]
PortNumber = 63132
4.5Configure SQL nodes
[Mysqld]
Basedir =/usr/local/mysql/
Datadir =/usr/local/mysql/data
User = mysql
Port = 3306
Socket =/tmp/mysql. sock
Ndbcluster
Ndb-connectstring = 10.0.31.40
[MYSQL_CLUSTER]
Ndb-connectstring = 10.0.31.41
4.6Configure a storage node (NDB node)
$ Vi/etc/ndbd. cnf
[mysqld]
ndbcluster
DataDir=/usr/local/mysql-cluster/data
[MYSQL_CLUSTER]
ndb-connectstring=nodeid=192.168.0.55
4.7Start MySQL Cluster
First, start the management node server, then start the storage node server, and then start the SQL node Server:
(1) on the management node server, run the following command to start the MGM node process:
$/usr/local/bin/ndb_mgmd -f /etc/ndb_mgmd.ini --configdir=/usr/local/mysq
l-cluster
$ Netstat-ntpl | grep ndb # check whether it is successful
(2) On each storage node server, run the following command:
$/usr/local/bin/ndbd --initial --defaults-file=/etc/ndbd.cnf
(3) run the following command to start the SQL node Server:
$mysqld_safe --defaults-file=/etc/my.cnf &
4.8Disable MySQL Cluster
On the machine where the MGM node is located, Shell simply enters the following command to close the Cluster:
$/usr/local/bin/ndb_mgm -e shutdown
Run the following command to disable the mysqld service of the SQL node:
$/usr/local/bin/mysqladmin -uroot shutdown
4.9Data Testing
(1) create a new database ClusterTest on the master node, create a data table user, and insert a row of data.
mysql> create database ClusterTest
mysql> use ClusterTest
mysql> create table user(nu mint , name varchar(50) engine=NDB);
mysql> select * from user;
(2) view data synchronization on a non-master node
mysql> use ClusterTest
mysql> select * from user;
(3) create a new database ClusterTest on a non-master node, create a data table user, and insert a row of data.
mysql> create database ClusterTest
mysql> use ClusterTest
mysql> create table user(nu mint , name varchar(50) engine=NDB);
mysql> select * from user;
(4) view data synchronization on the master node
mysql> use ClusterTest
mysql> select * from user;
4.10Disable Security
To disable Cluster, you can simply enter the following command in Shell on the machine where the MGM node is located:
[Db1 ~] Root #/usr/local/mysql/ndb_mgm-e shutdown
Run the following command to disable the mysqld service of the SQL node:
[Db2 ~] Root #/usr/local/mysql/bin/mysqladmin-uroot shutdown
5. Test Report/Experiment Report
Lab report
(1) download the mysql-cluster-gpl-7.1.22-linux-x86_64-glibc 23.tar.gz installation package, select the server architecture type.
(2) create a mysql user group and a mysql user: # groupadd mysql & useradd mysql-g mysql (3) decompress the compressed package and rename it:
# Tar zxvf mysql-cluster-gpl-7.1.22-linux-x86_64-glibc 23.tar.gz
# Music mysql-cluster-gpl-7.1.22-linux-x86_64-glibc 23 mysqlc
(4) Go To The mysqlc directory to create the logs directory and change the owner of the mysqlc directory.
# Cd mysqlc & mkdir logs
# Cd... & chown-R mysql: mysql mysqlc
As follows:
(5) Create System-related databases and tables
# Scripts/mysql_install_db -- user = mysql
(6) Configuration Management Node
# Mkdir/var/lib/mysql-cluster & cd/var/lib/mysql-cluster
# Vim/var/lib/mysql-cluster/config. ini
Save and return
As follows:
(7) install and configure data nodes
Copy the entire mysqlc directory on the Management node to the/usr/local directory on Data Node 1 and rename it to mysql to ensure that the user and group of the mysql directory are mysql.
Copy the configuration file and startup script
# Cp support-files/my-medium.cnf/etc/my. cnf
# Cp support-files/mysql. server/etc/init. d/mysqld
Edit configuration file
# Vim/etc/my. cnf
Add configuration items under [mysqld]
Save and exit. perform the same operation on Data Node 2.
As follows:
(8) Start the management Node
(9) Start a Data Node
(10) Start an SQL Node
(11) Check the current status of the cluster on the Management end
(12) Start the data node and SQL node on node 2
Test report
(1) Create the ClusterTest database on the master node, and insert a data entry into the user data table.
(2) view data synchronization on a non-master node:
(3) update data on a non-master node
(4) view data synchronization on the master node
6.Research conclusions
MySQL Cluster is composed of a group of computers, each of which runs a variety of processes, including MySQL servers, NDB Cluster data nodes, management servers, and (possibly) dedicated Data Access Program.
MySQL Cluster is a highly practical and redundant MySQL version suitable for distributed computing environments. MySQL Cluster can use a variety of failover and load balancing options to configure the NDB storage engine, but it is the easiest to do this on the storage engine at the Cluster level. The NDB storage engine of MySQL Cluster contains the complete dataset, which depends only on other data in the Cluster. In the course design, you can create a database, create a data table, and insert data on a computer to view the information on other computers.
Using Linux can improve the reliability and stability of customers' workstation operations and obtain high-availability servers. In the Linux system, a specific implementation scheme of MySQL Database Cluster Working in mutual backup mode is provided to achieve high availability cluster servers. Two relatively independent applications run on both machines at the same time, but both are set as backup machines. When a server fails, the application of the faulty server can be taken over by another server in a short time, thus ensuring the application continuity.
7. Summary
With the rapid development of network technology, the traditional server architecture is increasingly unable to meet the current needs, and the cluster technology is well adapted to the needs of the current network development with its unique advantages. Linux has become a hot topic in cluster research with its open source code mode. Based on this, this article introduces the basic concepts and implementation methods of MySQL clusters, by relying on the cluster file system, global access to all files, devices, and network resources in the system breaks through the bottleneck of database capacity. MySQL, an open-source database developer, announced the latest MySQL Cluster Carrier Grade Edition database DBT2 benchmark test results at the 2007 MySQL conference. The benchmark test results show the high scalability of MySQL Cluster Carrier Grade Edition. The Cluster with eight nodes can process 100,000 transactions per minute. Therefore, when the network planning funds are insufficient, enterprises can use free MySQL Cluster to set up database clusters, which can fully meet the high-traffic information processing needs.
MySQL database has many advantages
Scalability and flexibility
The MySQL database server provides powerful scalability and supports deep application system embedding. The size is only 1 MB. It also supports TB-level data warehouses. Platform flexibility has always been a feature of MySQL. MySQL now supports Linux, UNIX, and Windows. Of course, the open-source nature of MySQL allows comprehensive customization, which meets the needs for adding special requirements to the database.
High Performance
The unique storage engine architecture allows database professionals to configure targeted MySQL databases for specific applications, thereby achieving unexpected performance results. Whether applications process high-speed transactions or process hundreds of millions of large-capacity web sites per day, MySQL can meet the performance requirements most urgently needed by any system. Using High-Speed loading tools, different memory caches, full-text indexes, and other performance enhancement mechanisms, MySQL provides all the features and features required by today's key business systems.
High Availability
Reliability and continuous availability are the characteristics of MySQL. Customers rely on MySQL to ensure 24-hour service. MySQL provides various high-availability solutions, High-Speed Master/Slave replication configurations, real-time switching of special cluster servers, and unique high-availability solutions provided by other third-party vendors for MySQL databases.
Powerful transaction support
MySQL provides a powerful transaction processing engine. Features include complete ACID (atomicity, consistency, isolation, durability) transaction support, unlimited row-level locks, distributed transaction capabilities, and multi-version transaction support. In addition, it also ensures data integrity by means of forced reference integrity on the server, special transaction isolation level, and instant Deadlock Detection.
Web and data warehouse capabilities
MySQL can be used in high-speed web sites because it has a high-performance query engine and a large number of fast data insertion capabilities, which effectively supports specific web methods such as full-text search. These features are also applicable to the data warehouse environment. Here, MySQL can be expanded to accommodate T-level data years. Other features, such as memory tables, B-tree indexes and hash indexes, and compressed tables with a compression rate of up to 80%. This allows MySQL to be fully used for web sites and business intelligence applications.
Powerful Data Protection
Ensuring the security of the company's data assets is one of the daily work of the database administrator. MySQL provides extraordinary security features to ensure absolute data security. In terms of database security authentication, MySQL provides a powerful mechanism to ensure that only the authorized user can access the database server, so that the user can be prevented on the client machine layer. SSH and SLL support ensures secure and reliable connections. The granularity object permission framework ensures that users may see what they are permitted to view. The powerful data encryption and decryption functions Ensure that sensitive data is not viewed without authorization. Finally, MySQL and other third-party software providers provide backup and recovery tools that allow full logical and physical backup and recovery by time point.
Comprehensive Application Development
One of the reasons why MySQL becomes the world's most popular open source database is that it provides comprehensive support for every application development. The Database supports stored procedures, triggers, functions, views, cursors, ANSI standard SQL, and more. For embedded applications, you can use the plug-in Library of embedded MySQL to support almost any application. MySQL provides connectors and drivers (ODBC, JDBC, and so on ). This allows various applications to use MySQL as the preferred database management server. Whether it is PHP, Perl, Java, Visual Basic, or. NET, MySQL can meet the needs of application developers to successfully build a database-driven information system.
Convenient Management
MySQL has extraordinary Fast deployment capabilities. The average time from software download to installation completion is less than 15 minutes. Any of the following platforms is Microsoft Windows, Linux, Macintosh, or UNIX. Once installed, the user-managed features such as automatic space growth, automatic restart, and dynamic configuration change greatly reduce the pressure on the database administrator. MySQL provides a set of graphical management and migration tools that allow DBA to manage, solve problems, and control multiple MySQL servers from a single workbench. Many third-party software vendors provide tools for DBA to design and ETL data, complete database management, task management, and performance monitoring.
Open source and free 24x7 Support
Many companies are skeptical about whether open source software is fully used. Because they think that using MySQL won't be able to get support from the business services they currently rely on for key businesses. In fact, these doubts are completely unnecessary. MySQL Enterprise Edition provides 24 hours a day. MySQL is not a typical open-source project, because all its software is owned by Oracle. Because of this, there is a special payment and support model, this allows for a combination of free open source and trusted software.
Lowest total cost of ownership
Migrating the current database-driven application to MySQL or using MySQL in a new development project can greatly reduce the cost. By combining MySQL database servers with a cheap hardware scaling architecture, companies can find that they can achieve far-reaching scalability and performance. All these costs are far less than using horizontal scaling. In addition, reliability and maintainability mean that MySQL allows database administrators not to spend time solving performance problems or downtime, but to focus on more advanced business-related tasks.