Mysql集群
NDBCLUSTER
(also known asNDB
) is an in-memory storage engine offering high-availability and data-persistence features.
NDBCLUSTER(也叫做NDB)是一种提供了高可用性和数据持久性特征的内存式存储引擎。
TheNDBCLUSTER
storage engine can be configured with a range of failover and load-balancing options, but it is easiest to start with the storage engine at the cluster level. MySQL Cluster'sNDB
storage engine contains a complete set of data, dependent only on other data within the cluster itself.
NDBCLUSTER存储引擎能够配置一系列的故障切换和负载均衡功能,然而它也是在集群级别下最容易入手的存储引擎。MySQL集群的NDB存储引擎包含一套完整的数据集,它仅依赖于在集群本身中的其他数据。
The“Cluster”portion of MySQL Cluster is configured independently of the MySQL servers. In a MySQL Cluster, each part of the cluster is considered to be anode.
MySQL集群的Cluster部分是独立配置在MySQL服务上面的。在MySQL集群中,集群的每个部分都被看做是一个节点(node)。
NoteIn many contexts, the term“node”is used to indicate a computer, but when discussing MySQL Cluster it means aprocess. It is possible to run multiple nodes on a single computer; for a computer on which one or more cluster nodes are being run we use the termcluster host.
注解:
在多数情况下,node这个术语用于表示一台计算机,但是当讨论MySQL集群时,则它意味着是一个进程。在一台单独的PC机上能够运行多个node节点;在PC机上正在运行的一个或多个集群节点,我们通常把他称为集群主机(cluster host)。
There are three types of cluster nodes, and in a minimal MySQL Cluster configuration, there will be at least three nodes, one of each of these types:
集群的节点有三种类型,在最低限度的MySQL集群配置中,每一种类型的节点要有一个,至少要有三个节点:
Management node: The role of this type of node is to manage the other nodes within the MySQL Cluster, performing such functions as providing configuration data, starting and stopping nodes, running backup, and so forth. Because this node type manages the configuration of the other nodes, a node of this type should be started first, before any other node. An MGM node is started with the commandndb_mgmd.
管理节点(Management node):这种节点的任务主要是在MySQL集群中管理其他节点。执行诸如提供配置数据,打开节点,关闭节点,运行备份等等相应功能。由于这种类型的节点管理着其他节点的配置,因此该节点应先于其他节点启动。一个MGM节点是通过ndb_mgmd命令来启动的。
-
Data node: This type of node stores cluster data. There are as many data nodes as there are replicas, times the number of fragments (seeSection 18.1.2, “MySQL Cluster Nodes, Node Groups, Replicas, and Partitions”). For example, with two replicas, each having two fragments, you need four data nodes. One replica is sufficient for data storage, but provides no redundancy; therefore, it is recommended to have 2 (or more) replicas to provide redundancy, and thus high availability. A data node is started with the commandndbd(seeSection 18.4.1, “ndbd— The MySQL Cluster Data Node Daemon”) orndbmtd(seeSection 18.4.3, “ndbmtd— The MySQL Cluster Data Node Daemon (Multi-Threaded)”).
MySQL Cluster tables are normally stored completely in memory rather than on disk (this is why we refer to MySQL Cluster as anin-memorydatabase). However, some MySQL Cluster data can be stored on disk; seeSection 18.5.12, “MySQL Cluster Disk Data Tables”, for more information.
数据节点(Data node):这种类型的节点用于存储集群数据。很多的数据节点都有它们的副本,是该分段的一倍。例如,每两个分段就有两个副本,你就需要有四个数据节点。对于数据存储,一个副本是足够的,但是它不提供冗余。因此,我们推荐用两个(或更多)副本去提供冗余,从而实现高可用性。一个数据节点是通过ndbd或ndbmtd命令来启动的。
MySQL集群表通常是完整的存储在内存中的,而不是在硬盘上(这就是为什么我们把MySQL集群称为内存式数据库)。然而,有一些MySQL集群数据是可以存储在硬盘上的。
-
SQL node: This is a node that accesses the cluster data. In the case of MySQL Cluster, an SQL node is a traditional MySQL server that uses the
NDBCLUSTER
storage engine. An SQL node is amysqldprocess started with the--ndbcluster
and--ndb-connectstring
options, which are explained elsewhere in this chapter, possibly with additional MySQL server options as well.An SQL node is actually just a specialized type ofAPI node, which designates any application which accesses MySQL Cluster data. Another example of an API node is thendb_restoreutility that is used to restore a cluster backup. It is possible to write such applications using the NDB API. For basic information about the NDB API, seeGetting Started with the NDB API.
SQL节点(SQL node):这种节点是用于访问集群数据的。对于MySQL集群来讲,一个SQL节点是一个传统的MySQL服务,它使用NDBCLUSTER存储引擎。一个SQL节点是通过mysqld命令的--ndbcluster和--ndb-connectstring参数来启动的进程,该选项在本章的其他地方会解释到,用其他的MySQL服务选项也可以做到。
一个SQL节点实际上只是API node的一种专用类型,该类型的节点指定了任何可以访问MySQL集群数据的应用程序。API node的另外一个例子是node_restore功能,它能够被用来恢复一个集群备份。用NDB API去写应用程序是有可能做到的,有关于NDB API的基本信息,请见Getting Started with the NDB API.
ImportantIt is not realistic to expect to employ a three-node setup in a production environment. Such a configuration provides no redundancy; to benefit from MySQL Cluster's high-availability features, you must use multiple data and SQL nodes. The use of multiple management nodes is also highly recommended.
重要性:
在生产环境中使用三个节点去进行设置是不现实的。诸如提供一个没有冗余的配置;想要发挥MySQL集群高可用性的优点,你必须使用多数据和多SQL节点。多管理节点的使用同样也被强烈推荐。
For a brief introduction to the relationships between nodes, node groups, replicas, and partitions in MySQL Cluster, seeSection 18.1.2, “MySQL Cluster Nodes, Node Groups, Replicas, and Partitions”.
关于在MySQL集群中的节点,节点组,副本以及分区之间的关系的简单介绍,请见Section 18.1.2,“MySQL Cluster Nodes, Node Groups, Replicas, and Partitions”.
Configuration of a cluster involves configuring each individual node in the cluster and setting up individual communication links between nodes. MySQL Cluster is currently designed with the intention that data nodes are homogeneous in terms of processor power, memory space, and bandwidth. In addition, to provide a single point of configuration, all configuration data for the cluster as a whole is located in one configuration file.
在集群中,集群的配置包括配置每一个单独的节点,并且在节点之间需要设置单独的通讯链接。MySQL集群当前的设计意图是依据处理器功率,内存空间以及带宽来将数据节点均匀分布的。此外,对于提供配置的一个单一节点,在集群中所有的配置数据都是作为一个整体存在于一个配置文件上的。
The management server manages the cluster configuration file and the cluster log. Each node in the cluster retrieves the configuration data from the management server, and so requires a way to determine where the management server resides. When interesting events occur in the data nodes, the nodes transfer information about these events to the management server, which then writes the information to the cluster log.
服务管理器管理着集群的配置文件和日志。在集群中的每一个节点都会从服务管理器中去检索配置数据,因此需要通过一种方法来确定服务管理器所在的位置。当我们把注意力关注在数据节点上发生的事件时,对于服务管理器来讲,数据节点将传输关于这些事件的信息,然后把该信息写到集群日志里面。
In addition, there can be any number of cluster client processes or applications. These include standard MySQL clients,NDB
-specific API programs, and management clients. These are described in the next few paragraphs.
此外,还有很多集群客户端进程或应用程序。他们包含了标准的MySQL客户端,NDB-特定的API程序,和管理客户端。这些将在接下来的段落中进行介绍。
Standard MySQL clients. MySQL Cluster can be used with existing MySQL applications written in PHP, Perl, C, C++, Java, Python, Ruby, and so on. Such client applications send SQL statements to and receive responses from MySQL servers acting as MySQL Cluster SQL nodes in much the same way that they interact with standalone MySQL servers.
标准的MySQL客户端:MySQL集群能够和已存在的用PHP,Perl,C,C++,Java,Python,Ruby等语言实现的MySQL应用程序一起使用。诸如客户端发送SQL语句并从以MySQL集群节点为代理的MySQL服务器上去接受响应,该节点以同样的方式去和MySQL服务器独立的进行交互。
MySQL clients using a MySQL Cluster as a data source can be modified to take advantage of the ability to connect with multiple MySQL servers to achieve load balancing and failover. For example, Java clients using Connector/J 5.0.6 and later can usejdbc:mysql:loadbalance://
URLs (improved in Connector/J 5.1.7) to achieve load balancing transparently; for more information about using Connector/J with MySQL Cluster, seeUsing Connector/J with MySQL Cluster.
MySQL客户端将MySQL集群作为一个数据源,利用它能够被修改的能力来和多个MySQL服务器去实现负载均衡和故障转移。例如,Java客户端利用Connector/J 5.0.6和以后使用jdbc:mysql:loadbalance:// URLs(在Connector/J 5.1.7中有所提高)能够显而易见的去实现负载均衡;有关和MySQL集群去使用Connector/J的更多信息,见Using Connector/J with MySQL Cluster.
NDB
client programs. Client programs can be written that access MySQL Cluster data directly from theNDBCLUSTER
storage engine, bypassing any MySQL Servers that may connected to the cluster, using theNDB API, a high-level C++ API. Such applications may be useful for specialized purposes where an SQL interface to the data is not needed. For more information, seeThe NDB API.
NDB客户端程序:客户端程序能够编写为从NDBCLUSTER存储引擎中直接去访问MySQL集群数据,绕过许多能够连接到集群的MySQL服务器,使用NDB API,一个高级别的C++ API。
这样的应用程序,对于数据来讲SQL接口是不需要,通过这种特定的目的,它可能是有用的。想了解更多的信息,见The NDB API.
NDB
-specific Java applications can also be written for MySQL Cluster using theMySQL Cluster Connector for Java. This MySQL Cluster Connector includesClusterJ, a high-level database API similar to object-relational mapping persistence frameworks such as Hibernate and JPA that connect directly toNDBCLUSTER
, and so does not require access to a MySQL Server. Support is also provided in MySQL Cluster NDB 7.1 and later forClusterJPA, an OpenJPA implementation for MySQL Cluster that leverages the strengths of ClusterJ and JDBC; ID lookups and other fast operations are performed using ClusterJ (bypassing the MySQL Server), while more complex queries that can benefit from MySQL's query optimizer are sent through the MySQL Server, using JDBC. SeeJava and MySQL Cluster, andThe ClusterJ API and Data Object Model, for more information.
具有NDB特性的Java应用程序同样也能利用MySQL Cluster Connector forJava编写出MySQL集群。这种MySQL集群连接器包括ClusterJ,一个直接连接NDBCLUSTER的类似于Hibernate和JPA的对象-关系型持久层框架的高级别数据库API,因此它不需要去访问MySQL服务。对于ClusterJPA,在MySQLCluster NDB 7.1和以后的版本中同样支持,OpenJPA利用了ClusterJ和JDBC的优势实现了MySQL的集群。ID查找和其他快速操作是通过ClusterJ来执行的(不通过MySQLServer),而更复杂的查询是受益于MySQL的查询优化器通过MySQL服务用JDBC进行发送操作而得到的好处。见Javaand MySQL Cluster, 和The ClusterJ API and Data Object Model, 以便获得更多的信息。
MySQL Cluster NDB 7.3 also supports applications written in JavaScript using Node.js. The MySQL Connector for JavaScript includes adapters for direct access to theNDB
storage engine and as well as for the MySQL Server. Applications using this Connector are typically event-driven and use a domain object model similar in many ways to that employed by ClusterJ. For more information, seeMySQL NoSQL Connector for JavaScript.
MySQL Cluster NDB 7.3同样支持在应用程序中用Node.js去编写JavaScript。对于JavaScript,MySQL连接器包含可以直接访问NDB存储引擎和MySQL服务的适配器。使用该连接器的应用程序通常是事件驱动的并且利用ClusterJ服务的多种方式去使用类似的域对象模型。想要了解更多的信息,请见MySQL NoSQL Connector for JavaScript.
The Memcache API for MySQL Cluster, implemented as the loadablendbmemcachestorage engine for memcached version 1.6 and later, can be used to provide a persistent MySQL Cluster data store, accessed using the memcache protocol.对于MySQL集群,Memcached 1.6和以后的版本实现了可加载的ndbmemcache存储引擎,它能够被用来提供一个持久的MySQL集群数据存储,并利用memcache协议来进行访问。
The standardmemcachedcaching engine is included in the MySQL Cluster NDB 7.3 distribution. Eachmemcachedserver has direct access to data stored in MySQL Cluster, but is also able to cache data locally and to serve (some) requests from this local cache.标准的memcached缓存引擎是包含在MySQLCluster NDB 7.3分布上的。在MySQL集群中,每个memcached服务都可以直接去访问所存储的数据,但同样能够从本地缓存中去请求本地化的缓存数据和(一些)服务。
For more information, seendbmemcache
—Memcache API for MySQL Cluster.想了解更多信息,请见ndbmemcache
—Memcache API for MySQL Cluster.
管理客户端:这些连接到管理服务器上的客户端提供了开始和停止节点的命令,开始和停止信息跟踪(仅debug版本),显示节点的版本和状态,开始和停止备份等等。举例说明,某种类型的程序在MySQL集群中提供了ndb_mgm管理客户端(见Section 18.4.5,“ndb_mgm— The MySQL ClusterManagement Client”)。该程序能够使用MGM API来进行编写,一个C语言的API能够直接和一个或多个MySQL集群管理服务器进行交互。想了解更多信息,见The MGM API。
Oracle also makes available MySQL Cluster Manager, which provides an advanced command-line interface simplifying many complex MySQL Cluster management tasks, such restarting a MySQL Cluster with a large number of nodes. The MySQL Cluster Manager client also supports commands for getting and setting the values of most node configuration parameters as well asmysqldserver options and variables relating to MySQL Cluster. MySQL Cluster Manager 1.1 provides support for adding data nodes online. See theMySQL Cluster Manager User Manual, for more information.
Oracle同样提供了MySQL集群管理器,它提供一种高级的命令行接口,去简化了复杂的MySQL集群管理任务,如用大量的节点去重新启动一个MySQL集群。MySQL集群管理客户端同样支持命令来设置和获得许多节点配置的参数值和mysqld服务选项以及和MySQL集群有关的变量。MySQL集群管理器1.1版本提供了支持增加在线数据节点。想了解更多信息,见MySQL Cluster Manager User Manual。
Event logs. MySQL Cluster logs events by category (startup, shutdown, errors, checkpoints, and so on), priority, and severity. A complete listing of all reportable events may be found inSection 18.5.6, “Event Reports Generated in MySQL Cluster”. Event logs are of the two types listed here:
Cluster log: Keeps a record of all desired reportable events for the cluster as a whole.
Node log: A separate log which is also kept for each individual node.
事件日志:MySQL集群通过种类(启动,关机,错误,检查点等等),优先级和严重性的事件产生日志。一个有关完整的报告性事件的监听,可以在Section 18.5.6,“Event Reports Generated in MySQL Cluster”文章中找到。事件日志在这里有两种类型:
l 集群日志:针对于集群,以保存一份期望的可报告性的事件记录作为一个整体。
l 节点日志:一个单独的日志维护着每一个单一的节点。
NoteUnder normal circumstances, it is necessary and sufficient to keep and examine only the cluster log. The node logs need be consulted only for application development and debugging purposes.
注意:
一般情况下,充分的去保存和检查集群日志是很有必要的。而节点日志则仅仅是作为开发和调试目的去检查的。
Checkpoint. Generally speaking, when data is saved to disk, it is said that acheckpointhas been reached. More specific to MySQL Cluster, a checkpoint is a point in time where all committed transactions are stored on disk. With regard to theNDB
storage engine, there are two types of checkpoints which work together to ensure that a consistent view of the cluster's data is maintained. These are shown in the following list:
检查点:一般而言,当数据存到硬盘上时,Checkpoint就已经存在了。对于MySQL集群更明确的讲,一个检查点就是一个存储在硬盘上及时提交事务的点。对于NDB存储引擎来讲,这两种类型的检查点是一起工作的,并确保了集群数据的一致性视图是可维护的。这些会显示在以下列表中:
Local Checkpoint (LCP): This is a checkpoint that is specific to a single node; however, LCPs take place for all nodes in the cluster more or less concurrently. An LCP involves saving all of a node's data to disk, and so usually occurs every few minutes. The precise interval varies, and depends upon the amount of data stored by the node, the level of cluster activity, and other factors.
l 本地检查点(LCP):对于一个单一的节点来说,这是一个特殊的检查点。然而,LCPs在集群的所有节点中或多或少是同时发生的。一个LCP在硬盘上涉及到了所保留的所有数据节点,因此在通常每隔几分钟都会发生。精确的时间间距各不相同,并且需要通过节点依赖于大量所存储的数据,集群的级别是活跃的,或者其他因素。
Global Checkpoint (GCP): A GCP occurs every few seconds, when transactions for all nodes are synchronized and the redo-log is flushed to disk.
l 全局检查点(GCP):一个GCP每隔几秒就会发生一次,此时所有节点的事务是同步的,并且重写的日志会刷新到硬盘上。
For more information about the files and directories created by local checkpoints and global checkpoints, seeMySQL Cluster Data NodeFileSystemDir
Files.
关于通过本地检查点和全局检查点创建的文件和目录的更多信息,请见MySQL Cluster Data NodeFileSystemDir
Files
该文章摘自http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-basics.html

在數據庫優化中,應根據查詢需求選擇索引策略:1.當查詢涉及多個列且條件順序固定時,使用複合索引;2.當查詢涉及多個列但條件順序不固定時,使用多個單列索引。複合索引適用於優化多列查詢,單列索引則適合單列查詢。

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。