bitsCN.com
Mysql Cluster概述与部署
MySql Cluster最显著的优点就是高可用性,高实时性,高冗余,扩展性强。
它允许在无共享的系统中部署"内存中"数据库的Cluster.通过无共享体系结构,系统能够使用廉价的硬件.此外,由于每个组件有自己的内存和磁盘,所以不存在单点故障.
它由一组计算机构成,每台计算机上均运行者多种进程,包括mysql服务器,NDB cluster的数据节点,管理服务启,以及专门的数据访问程序
所有的这些节点构成一个完整的mysql集群体系.数据保存在"NDB存储服务器"的存储引擎中,表(结构)则保存在"mysql服务器"中.应用程序通过"mysql服务器"访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理"NDB存储服务器".
基本概念
"NDB"是一种"内存中"的存储引擎,它具有可用性高和数据一致性好的特点.下面介绍mysql cluster 节点时,它表示进程.在单台计算机上可以有任意数目的节点.
管理节点(MGM):这类节点的作用是管理mysql cluster内的其他节点,如配置文件和cluster 日志,启动并停止节点,运行备份等.cluster中的每个节点从管理服务器上检索配置数据,并请求管理服务器所在位置的方式.当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器上,然后,又将这类信息写入cluster日志。由于这类节点负责管理其他节点的配置,所以应在启动其他节点之前首先启动这类节点.MGM节点是用命令"ndb_mgmd"来启动
数据节点(NDB):这类节点用于保存cluster的数据.数据节点的数目与副本的数目相关,是片段的倍数.假设有2个副本,每个副本有2个片段,那么就有4个数据节点.不过没有必要设置多个副本.数据节点是用命令"ndbd"来启动的.
SQL节点:这是用来访问cluster数据的节点.对于MYSQL cluster来说,客户端节点是使用NDB cluster存储引擎的传统Mysql服务器.通常,sql节点使用将"ndbcluster"添加到"my.cnf"后使用"mysqld" 启动
此外,可以有任意数目的cluster客户端进程或应该程序.它们分为两种类型,即标准mysql客户端和管理客户端.
标准mysql客户端:能够从php,perl,c,c++,java,python,ruby等编写的现有mysql应用程序上访问mysql cluster
管理客户端:这类客户端与管理服务器相连,并提供了启动和停止节点,启动和停止消息跟踪,显示节点版本和状态,启动和停止备份等命令.
以下是mysql cluster 架构示意图:
由于Mysql Cluster采用的是TCP/IP方式连接,并且节点之间的数据传输没有加密,最后使用单独的子网里.
下面来实施部署
为了方便 这里我把管理节点,数据节点,sql节点放在一台机器上.
管理节点1 10.1.6.205
数据节点1 10.1.6.203
数据节点2 10.1.6.205
sql节点1 10.1.6.203
sql节点2 10.1.6.205
1.安装(这里安装7.2.6版本)
下载mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz 二进制包(里面包含ndb,mysql)1root@10.1.6.205:~# tar -C /usr/local -xzvf mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz2root@10.1.6.205:/usr/local# ln -s /usr/local/mysql-cluster-gpl-7.2.8-linux2.6-i686 /usr/local/mysql3root@10.1.6.205:/usr/local# cd mysql4root@10.1.6.205:/usr/local/mysql# scripts/mysql_install_db --user=mysql5root@10.1.6.205:/usr/local/mysql# chown -R mysql:mysql /usr/local/mysql同理10.1.6.2032.配置SQL节点和存储NDB节点01root@10.1.6.205:/usr/local/mysql# vim /etc/my.cnf02[mysqld]03basedir=/usr/local/mysql/04datadir=/usr/local/mysql/data/05user=mysql06port=330607socket=/tmp/mysql.sock0809ndbcluster10max_connect_errors=1000011ndb-connectstring=10.1.6.20512connect_timeout = 3001314[mysql_cluster]15ndb-connectstring=10.1.6.205同理10.1.6.2033.配置管理节点01root@10.1.6.205:/usr/local/mysql# vim /opt/cluster/config.ini02[ndbd default]03NoOfReplicas=2 04DataMemory=80M #分配data storage使用的内存 每个ndb占用05IndexMemory=18M #分配index storage使用的内存 每个ndb占用0607[tcp default]08portnumber=2205 #ndb监听端口0910#设置管理节点11[ndb_mgmd]12NodeId=113hostname=10.1.6.20514datadir=/opt/cluster #在MGM上保存日志的目录1516#设置存储节点NDB117[ndbd]18NodeId=219hostname=10.1.6.20320datadir=/usr/local/mysql/data2122#设置存储节点NDB223[ndbd]24NodeId=325hostname=10.1.6.20526datadir=/usr/local/mysql/data2728#设置SQL节点129[mysqld]30NodeId=431hostname=10.1.6.2033233#设置SQL节点234[mysqld]35NodeId=536hostname=10.1.6.20537[mysqld] #运行任意ip连接38[mysqld]4.启动mysql cluster1)先启动管理节点服务器.2)启动NDB存储节点服务器.3)启动SQL节点服务器.1)执行启动MGM节点进程1root@10.1.6.205:/usr/local/mysql/bin# /usr/local/mysql/bin/ndb_mgmd -f /opt/cluster/config.ini2MySQL Cluster Management Server mysql-5.5.22 ndb-7.2.6必须用参数-f或--config-file告诉ndb_mgm配置文件config.ini文件所在的位置.2)在2台存储节点服务器上,如果是第一次启动NDB进程的话,必须先执行以下命令:1root@10.1.6.205:/usr/local/mysql/bin# /usr/local/mysql/bin/ndbd --initial22013-08-28 23:40:36 [ndbd] INFO -- Angel connected to '10.1.6.205:1186'32013-08-28 23:40:36 [ndbd] INFO -- Angel allocated nodeid: 2
注意:仅在首次启动NDB时,或者在备份/恢复或配置文件发生变化且重启NDB时才使用-initial参数.因为该参数会使节点删除由早期NDB实例创建的,用于恢复的任何文件,包括用于恢复的日志文件.
如果不是第一次启动,用以下命令
1root@10.1.6.205:/usr/local/mysql/bin# /usr/local/mysql/bin/ndbd3)启动SQL节点服务器1root@10.1.6.203:/usr/local/mysql/bin# /usr/local/mysql/bin/mysqld_safe /etc/my.cnf &5.查看各个节点情况01root@10.1.6.205:/usr/local/mysql# /usr/local/mysql/bin/ndb_mgm02-- NDB Cluster -- Management Client --03ndb_mgm> show04Cluster Configuration05---------------------06[ndbd(NDB)] 2 node(s)07id=2 @10.1.6.203 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0, Master)08id=3 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0)0910[ndb_mgmd(MGM)] 1 node(s)11id=1 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6)1213[mysqld(API)] 4 node(s)14id=4 @10.1.6.203 (mysql-5.5.22 ndb-7.2.6)15id=5 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6)16id=6 (not connected, accepting connect from any host)17id=7 (not connected, accepting connect from any host)1819ndb_mgm>
6.测试
注意:与没有使用Cluster的Mysql相比,在mysql cluster内操作数据的方式没有太大的区别.操作时注意
1)表必须用engine=NDB或engine=NDBCLUSTER选项创建
2)每个NDB表必须有一个主键.如果在创建表时用户未定义主键,NDB Cluster存储引擎会自动生成隐含的主键.
该隐含键也将占用空间,就像任何其他的表索引一样.由于没有足够的内存来容纳这些自动创建的键,所以很容易出现问题.
在203 sql节点1上创建表
01root@10.1.6.203:/usr/local/mysql/bin# /usr/local/mysql/bin/mysql -uroot -p02mysql> use test;03mysql> create table dave (num int(10)) engine=ndb;04mysql> show create table dave/G;05*************************** 1. row ***************************06 Table: dave07Create Table: CREATE TABLE `dave` (08 `num` int(10) DEFAULT NULL09) ENGINE=ndbcluster DEFAULT CHARSET=latin1101 row in set (0.00 sec)1112mysql> insert into dave13 -> values14 -> (100);15Query OK, 1 row affected (0.01 sec)16mysql> select * from dave;17+------+18| num |19+------+20| 100 |21+------+然后在205 sql节点2上查看该表1root@10.1.6.205:/usr/local/mysql# /usr/local/mysql/bin/mysql -uroot -p2mysql> use test3mysql> select * from dave;4+------+5| num |6+------+7| 100 |8+------+测试OK关注一下表1mysql> select * from ndbinfo.memoryusage;2+---------+--------------+--------+------------+----------+-------------+3| node_id | memory_type | used | used_pages | total | total_pages |4+---------+--------------+--------+------------+----------+-------------+5| 2 | Data memory | 851968 | 26 | 83886080 | 2560 |6| 2 | Index memory | 212992 | 26 | 19136512 | 2336 |7| 3 | Data memory | 851968 | 26 | 83886080 | 2560 |8| 3 | Index memory | 212992 | 26 | 19136512 | 2336 |注意:使用量写满会访问不了,这时需要调整配置DataMemory,IndexMemory参数.各配置文件都需调整重启生效.7.关闭cluster1root@10.1.6.205:/usr/local/mysql/bin# /usr/local/mysql/bin/ndb_mgm -e shutdown2Connected to Management Server at: 10.1.6.205:118633 NDB Cluster node(s) have shutdown.4Disconnecting to allow management server to shutdown.再关闭SQL节点mysqld服务1root@10.1.6.203:/usr/local/mysql/bin# /usr/local/mysql/bin/mysqladmin -uroot -p shutdown2Enter password:3130829 02:19:57 mysqld_safe mysqld from pid file /usr/local/mysql/data//debian.pid ended4[1]+ Done /usr/local/mysql/bin/mysqld_safe /etc/my.cnf
以上就是mysql cluster初步部署, 之后会写haproxy+keepalive 双机高可用.
bitsCN.com
산성 속성에는 원자력, 일관성, 분리 및 내구성이 포함되며 데이터베이스 설계의 초석입니다. 1. 원자력은 거래가 완전히 성공적이거나 완전히 실패하도록합니다. 2. 일관성은 거래 전후에 데이터베이스가 일관성을 유지하도록합니다. 3. 격리는 거래가 서로를 방해하지 않도록합니다. 4. 지속성은 거래 제출 후 데이터가 영구적으로 저장되도록합니다.

MySQL은 데이터베이스 관리 시스템 (DBMS) 일뿐 만 아니라 프로그래밍 언어와 밀접한 관련이 있습니다. 1) DBMS로서 MySQL은 데이터를 저장, 구성 및 검색하는 데 사용되며 인덱스 최적화는 쿼리 성능을 향상시킬 수 있습니다. 2) SQL과 같은 ORM 도구를 사용하여 Python에 내장 된 SQL과 프로그래밍 언어를 결합하면 작업을 단순화 할 수 있습니다. 3) 성능 최적화에는 인덱싱, 쿼리, 캐싱, 라이브러리 및 테이블 부서 및 거래 관리가 포함됩니다.

MySQL은 SQL 명령을 사용하여 데이터를 관리합니다. 1. 기본 명령에는 선택, 삽입, 업데이트 및 삭제가 포함됩니다. 2. 고급 사용에는 조인, 하위 쿼리 및 집계 함수가 포함됩니다. 3. 일반적인 오류에는 구문, 논리 및 성능 문제가 포함됩니다. 4. 최적화 팁에는 인덱스 사용, 선택*을 피하고 한계 사용이 포함됩니다.

MySQL은 데이터 저장 및 관리에 적합한 효율적인 관계형 데이터베이스 관리 시스템입니다. 장점에는 고성능 쿼리, 유연한 트랜잭션 처리 및 풍부한 데이터 유형이 포함됩니다. 실제 애플리케이션에서 MySQL은 종종 전자 상거래 플랫폼, 소셜 네트워크 및 컨텐츠 관리 시스템에서 사용되지만 성능 최적화, 데이터 보안 및 확장성에주의를 기울여야합니다.

SQL과 MySQL의 관계는 표준 언어와 특정 구현의 관계입니다. 1.SQL은 관계형 데이터베이스를 관리하고 운영하는 데 사용되는 표준 언어로, 데이터 추가, 삭제, 수정 및 쿼리를 허용합니다. 2.MySQL은 SQL을 운영 언어로 사용하고 효율적인 데이터 저장 및 관리를 제공하는 특정 데이터베이스 관리 시스템입니다.

InnoDB는 Redologs 및 Undologs를 사용하여 데이터 일관성과 신뢰성을 보장합니다. 1. Redologs는 사고 복구 및 거래 지속성을 보장하기 위해 데이터 페이지 수정을 기록합니다. 2. 결점은 원래 데이터 값을 기록하고 트랜잭션 롤백 및 MVCC를 지원합니다.

설명 명령에 대한 주요 메트릭에는 유형, 키, 행 및 추가가 포함됩니다. 1) 유형은 쿼리의 액세스 유형을 반영합니다. 값이 높을수록 Const와 같은 효율이 높아집니다. 2) 키는 사용 된 인덱스를 표시하고 NULL은 인덱스가 없음을 나타냅니다. 3) 행은 스캔 한 행의 수를 추정하여 쿼리 성능에 영향을 미칩니다. 4) Extra는 최적화해야한다는 Filesort 프롬프트 사용과 같은 추가 정보를 제공합니다.

Temporary를 사용하면 MySQL 쿼리에 임시 테이블을 생성해야 할 필요성이 있으며, 이는 별개의, 그룹 비 또는 비 인덱스 열을 사용하여 순서대로 발견됩니다. 인덱스 발생을 피하고 쿼리를 다시 작성하고 쿼리 성능을 향상시킬 수 있습니다. 구체적으로, 설명 출력에 사용되는 경우, MySQL은 쿼리를 처리하기 위해 임시 테이블을 만들어야 함을 의미합니다. 이것은 일반적으로 다음과 같은 경우에 발생합니다. 1) 별개 또는 그룹을 사용할 때 중복 제거 또는 그룹화; 2) OrderBy가 비 인덱스 열이 포함되어있을 때 정렬하십시오. 3) 복잡한 하위 쿼리 또는 조인 작업을 사용하십시오. 최적화 방법은 다음과 같습니다. 1) Orderby 및 GroupB


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
