


MySQL Optimization - Detailed Explanation of Cluster Building Code Steps (Picture)
1 Overview
MySQL Cluster is a highly practical, scalable, high-performance, and high-redundancy version of MySQL suitable for distributed computing environments. Its research and development The original intention of the design is to meet the most stringent application requirements in many industries. These applications often require database operation reliability to reach 99.999%. MySQL Cluster allows the deployment of "in-memory" database clusters in shared-nothing systems. Through the shared-nothing architecture, the system can use cheap hardware and has no special requirements for software and hardware. Additionally, since each component has its own memory and disk, there is no single point of failure.
In fact, MySQL Cluster integrates a memory cluster storage engine called NDB with the standard MySQL server. It consists of a set of computers, each running one or more processes, which may include a MySQL server, a data node, a management server and a proprietary data access program.
MySQL Cluster can configure the NDB storage engine with a variety of failover and load balancing options, but it is easiest to do this on the storage engine at the Cluster level. The following is the MySQL cluster structure diagram,
MySQL is composed of three types of nodes (computers or processes) from a structural perspective, namely :
Management node: used to provide configuration, management, arbitration and other functions for other nodes in the entire cluster. In theory, it is enough to provide services through one server.
Data node: The core of MySQL Cluster, stores data and logs, and provides various management services for data. When there are more than 2 nodes, the high availability guarantee of the cluster can be achieved. When the number of DB nodes increases, the processing speed of the cluster will slow down.
SQL node (API): used to access MySQL Cluster data and provide external application services. Adding API nodes will improve the concurrent access speed and overall throughput of the entire cluster. The node can be deployed on the web application server, on a dedicated server, or on the same server as the DB.
2 NDB engine
MySQL Cluster uses a dedicated memory-based storage engine-NDB engine. The advantage of this is that it is fast and has no disk I/O bottleneck. , but because it is based on memory, the size of the database is limited by the total memory of the system. If the MySQL server running NDB must have large enough memory, such as 4G, 8G, or even 16G. The NDB engine is distributed and can be configured on multiple servers to achieve data reliability and scalability. In theory, by configuring two NDB storage nodes, the redundancy of the entire database cluster can be achieved and the single point of failure problem can be solved. .
2.1 Defect
-
Based on memory, the size of the database is limited by the total memory size of the cluster
Based on memory, data may be lost after a power outage. This needs to be verified through testing.
Multiple nodes implement communication, data synchronization, query and other operations through the network, so the integrity is affected by the network speed,
so the speed is relatively slow
2.2 Advantages
-
Multiple nodes can be distributed in different geographical locations, so it is also a solution to implement a distributed database.
The scalability is very good, and the database cluster can be expanded by adding nodes.
The redundancy is very good. There are complete database data on multiple nodes, so any node downtime will not cause service interruption.
The cost of implementing high availability is relatively low. Unlike traditional high availability solutions that require shared storage devices and dedicated software, NDB can be implemented as long as there is enough memory.
2. Cluster Construction
A simplest MySQL Cluster system will be built. All commands in the configuration method are run with the root account. This MySQL Cluster contains one management node, two data nodes, and two SQL nodes. These five nodes will be installed on five virtual machines respectively. The names and IPs of the virtual machines are as follows:
##Management node |
mysql-mgm |
##192.168.124.141 |
Data node 1 |
##mysql-ndbd-1
| ##192.168.124.142
|
2 | mysql-ndbd-2
##192.168.124.143 |
|
Node 1##mysql-sql-1 |
192.168.124.144 |
|
##SQL Node2 |
mysql-sql-2 |
192.168.124.145 |
##1. Public configuration Please configure the configuration items here on the three virtual machines respectively.
1. Install the virtual machineThe virtual machine operating system installs the x86_64 version of CentOS 6.4, uses the NAT network, and also installs vmware-tools. The specific installation method is here Not detailed here.
2. Copy mysql clusterDownload the following version of MySQL-Cluster:
http://www.php.cn/
Copy the downloaded compressed package to the /root/Downloads directory of the virtual machine, and then run the following command in the shell:
Turn off the iptables firewall (or open the 1186 and 3306 ports of the firewall) and run the following command in the Shell:
2. Configuration management node (192.168.124.141)
1. Configure the config.ini configuration fileRun the following command in the shell:
To install the management node, you do not need the mysqld binary file, only the MySQL Cluster server program (ndb_mgmd ) and the listening client program (ndb_mgm). Run the following command in the shell:
1. Add mysql group and user
Run the following command in the shell:
in the shell Run the following command in:
##The contents of the configuration file my.cnf are as follows: |
[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/usr/local/mysql/sock/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql_cluster] ndb-connectstring=192.168.124.141
Run the following command in the shell:
cd /usr/local/mysql mkdir sock scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
in shell Run the following command in:
chown -R root . chown -R mysql.mysql /usr/local/mysql/data chown -R mysql.mysql /usr/local/mysql/sock chgrp -R mysql .
##5. Configure MySQL service |
##
cp support-files/mysql.server /etc/rc.d/init.d/ chmod +x /etc/rc.d/init.d/mysql.server chkconfig --add mysql.server
4. Configuration SQL node ( |
, 192.168.124.145)##1. Add mysql group and userRun the following command in the shell:
##groupadd mysql
useradd -g mysql mysql
Run the following command in the shell: |
gedit /etc/my.cnf
## |
Run the following command in the shell: |
cd /usr/local/mysql mkdir sock scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
4. 设置数据目录
在shell中运行以下命令:
chown -R root . chown -R mysql.mysql /usr/local/mysql/data chown -R mysql.mysql /usr/local/mysql/sock chgrp -R mysql . Copy after login Copy after login |
5. 配置MySQL服务
在shell中运行以下命令:
cp support-files/mysql.server /etc/rc.d/init.d/ chmod +x /etc/rc.d/init.d/mysql.server chkconfig --add mysql.server Copy after login Copy after login |
五、Cluster环境启动
注意启动顺序:首先是管理节点,然后是数据节点,最后是SQL节点。
1. 启动管理结点
在shell中运行以下命令:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini Copy after login |
还可以使用ndb_mgm来监听客户端,如下:
ndb_mgm Copy after login |
2. 启动数据结点
首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。
/usr/local/mysql/bin/ndbd --initial Copy after login |
如果不是首次启动,则执行下面的命令。
/usr/local/mysql/bin/ndbd Copy after login |
3. 启动SQL结点
若MySQL服务没有运行,则在shell中运行以下命令:
/usr/local/mysql/bin/mysqld_safe --user=mysql & Copy after login |
4. 启动测试
查看管理节点,启动成功:
六、集群测试
1. 测试一
现在我们在其中一个SQL结点上进行相关数据库的创建,然后到另外一个SQL结点上看看数据是否同步。
在SQL结点1(192.168.124.144)上执行:
shell> /usr/local/mysql/bin/mysql -u root -p mysql>show databases; mysql>create database aa; mysql>use aa; mysql>CREATE TABLE ctest2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDB,否则同步失败 mysql> INSERT INTO ctest2 () VALUES (1); mysql> SELECT * FROM ctest2; Copy after login |
然后在SQL结点2上看数据是否同步过来了
经过测试,在非master上创建数据,可以同步到master上
查看表的引擎是不是NDB,>show create table 表名;
2. 测试二
关闭一个数据节点 ,在另外一个节点写输入,开启关闭的节点,看数据是否同步过来。
首先把数据结点1重启,然后在结点2上添加数据
在SQL结点2(192.168.124.145)上操作如下:
mysql> create database bb; mysql> use bb; mysql> CREATE TABLE ctest3 (i INT) ENGINE=NDB; mysql> use aa; mysql> INSERT INTO ctest2 () VALUES (3333); mysql> SELECT * FROM ctest2; Copy after login |
等数据结点1启动完毕,启动数据结点1的服务
#/usr/local/mysql/bin/ndbd --initial#service mysqld start Copy after login |
然后登录进去查看数据
# /usr/local/mysql/bin/mysql -u root –p Copy after login |
可以看到数据已经同步过来了,说明数据可以双向同步了。
七、关闭集群
1. 关闭管理节点和数据节点,只需要在管理节点(ClusterMgm--134)里执行:
shell> /usr/local/mysql/bin/ndb_mgm -e shutdown Copy after login |
显示
Connected to Management Server at: localhost:1186 2 NDB Cluster node(s) have shutdown. Disconnecting to allow management server to shutdown. Copy after login |
2. 然后关闭Sql节点(135,136),分别在2个节点里运行:
shell> /etc/init.d/mysql.server stop Shutting down MySQL... SUCCESS! Copy after login |
注意:要再次启动集群,就按照第五部分的启动步骤即可,不过这次启动数据节点的时候就不要加”-initial”参数了。
The above is the detailed content of MySQL Optimization - Detailed Explanation of Cluster Building Code Steps (Picture). For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

The process of starting MySQL in Docker consists of the following steps: Pull the MySQL image to create and start the container, set the root user password, and map the port verification connection Create the database and the user grants all permissions to the database

Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

I encountered a tricky problem when developing a small application: the need to quickly integrate a lightweight database operation library. After trying multiple libraries, I found that they either have too much functionality or are not very compatible. Eventually, I found minii/db, a simplified version based on Yii2 that solved my problem perfectly.

Article summary: This article provides detailed step-by-step instructions to guide readers on how to easily install the Laravel framework. Laravel is a powerful PHP framework that speeds up the development process of web applications. This tutorial covers the installation process from system requirements to configuring databases and setting up routing. By following these steps, readers can quickly and efficiently lay a solid foundation for their Laravel project.

The key to installing MySQL elegantly is to add the official MySQL repository. The specific steps are as follows: Download the MySQL official GPG key to prevent phishing attacks. Add MySQL repository file: rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm Update yum repository cache: yum update installation MySQL: yum install mysql-server startup MySQL service: systemctl start mysqld set up booting

MySQL and phpMyAdmin are powerful database management tools. 1) MySQL is used to create databases and tables, and to execute DML and SQL queries. 2) phpMyAdmin provides an intuitive interface for database management, table structure management, data operations and user permission management.

Compared with other programming languages, MySQL is mainly used to store and manage data, while other languages such as Python, Java, and C are used for logical processing and application development. MySQL is known for its high performance, scalability and cross-platform support, suitable for data management needs, while other languages have advantages in their respective fields such as data analytics, enterprise applications, and system programming.
