1、准备三台服务器 2、为三台机器分别安装Linux操作系统(Oracle Linux / RHEL 6.5 x86_64bit) 3、分别IP地址 管理节点 192.168.1.110 (负责管理整个集群) SQL节点 192.168.1.111 (负责操作数据库) SQL节点 192.168.1.112 (负责操作数据库) 数据节点 192.168.
1、准备三台服务器
2、为三台机器分别安装Linux操作系统(Oracle Linux / RHEL 6.5 x86_64bit)
3、分别IP地址
管理节点 192.168.1.110 (负责管理整个集群)
SQL节点 192.168.1.111 (负责操作数据库)
SQL节点 192.168.1.112 (负责操作数据库)
数据节点 192.168.1.111 (负责存储数据)
数据节点 192.168.1.112 (负责存储数据)
SQL节点和数据节点可以同在一台机器上
4、修改三台服务器的/etc/hosts文件,修改完后的内容如下:
127.0.0.1 localhost localhost.domain
192.168.1.110 node01
192.168.1.111 node02
192.168.1.112 node03
5、修改三台服务器的/etc/sysconfig/nework文件,修改完后的内容分别如下:
NETWORKING=yes
HOSTNAME=node01
GATEWAY=192.168.1.1 (网关地址因所处网络的不同而不同)
NETWORKING=yes
HOSTNAME=node02
GATEWAY=192.168.1.1 (网关地址因所处网络的不同而不同)
NETWORKING=yes
HOSTNAME=node03
GATEWAY=192.168.1.1 (网关地址因所处网络的不同而不同)
6、分别重启三台服务器
7、下载NDB集群软件mysql-cluster-advanced-7.3.5-linux-glibc2.5-x86_64.tar.gz
集群软件有三种格式:
a、以tar.gz结尾的二制进格式
b、以rpm结尾的rpm包形式
c、以源文件编译安装方式
rpm包安装方式,由于是自动安装的,所以不方便配置软件安装位置和数据存储位置
所以通常选用.tar.gz结尾的二进制格式的安装文件
注意:mysql-cluster-advanced-7.3.5-linux-glibc2.5-x86_64.tar.gz包含了mysql数据库软件和NDB集群软件
8、分别复制mysql-cluster-advanced-7.3.5-linux-glibc2.5-x86_64.tar.gz文件到三台服务器上的/usr/local/目录下
9、新建用户mysql
# groupadd mysql
# useradd -r -g mysql mysql (由于mysql用户只是用于安装配置NDB集群或mysql软件,而不用用于登陆系统)
(所以以-r参数来创建mysql用户,并且不用为该用户设置密码)
10、分别在三台服务器上解压mysql-cluster-advanced-7.3.5-linux-glibc2.5-x86_64.tar.gz文件
# cd /usr/local
# tar zxvf mysql-cluster-advanced-7.3.5-linux-glibc2.5-x86_64.tar.gz
# ln -s mysql-cluster-advanced-7.3.5-linux-glibc2.5-x86_64 mysql
# chown -R mysql.mysql mysql-cluster-advanced-7.3.5-linux-glibc2.5-x86_64
# cd mysql
# chown -R mysql.mysql .
配置完成以后,结果如下
11、在192.168.1.111和192.168.1.112两个数据节点(两台服务器)上安装mysql数据库软件
由于是二进制安装,所以mysql数据库软件就安装在/usr/local/mysql下,
但数据库的数据可以存放到其它地方,如/u01/app/mysql/data/下面
注意:以下命令在两台数据节点服务器上都要执行
# mkdir -p /u01/app/mysql/data
# chown -R mysql.mysql /u01
# cd /usr/local/mysql
# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/u01/app/mysql/data --user=mysql
执行完这条命令以后,数据库的数据文件(包括mysql,test , performance_schema等数据库)就被安装到了
/u01/app/mysql/data目录下了
# cp bin/ndbd /usr/local/bin/
# cp bin/ndbmtd /usr/local/bin/
然后将启动数据库服务的启动文件复制到/etc/rc.d/init.d/目录下
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld (改名)
执行完上面这条命令以后,就可以使用service mysqld start | stop | restart命令来管理数据库服务了
# cp my.cnf /etc/my.cnf
# vi /etc/my.cnf
[mysqld]
ndbcluster
basedir=/usr/local/mysql
datadir=/u01/app/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql_cluster]
ndb-connectstring=192.168.1.110
再次注意:以上命令在两台数据节点服务器上都要执行
到此,数据节点和SQL节点的安装配置就结束了,如果数据节点和SQL节点是分开在不同的机器上,则每个数据节点
和每个SQL节点都要执行以上命令。
12、在管理节点上进行安装配置
由于第10步已经解压缩mysql-cluster-advanced-7.3.5-linux-glibc2.5-x86_64.tar.gz 安装包到了/usr/local
目录下,并进行了软连接等操作,所以这些工作就不用重复做了,接着往下配置即可
# cd /usr/local/mysql
# mkdir mysql-cluster (创建mysql-cluster目录,后面启动集群管理服务时要用)
# cp bin/ndb_mgm* /usr/local/bin/
# cd /var/lib
# mkdir mysql-cluster
# cd mysql-cluster
# vi config.ini (这是管理节点上的集群配置文件,很重要)
[ndbd default]
NoOfReplicas=1 # Number of replicas
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
[tcp default]
# This the default; however, you can use any
# port that is free for all the hosts in the cluster
# Note: It is recommended that you do not specify the port
# number at all and simply allow the default value to be used
# instead
[ndb_mgmd]
hostname=192.168.1.110 # Hostname or IP address of MGM node
datadir=/var/lib/mysql-cluster # Directory for MGM node log files
NodeId=1
[ndbd]
hostname=192.168.1.111 # Hostname or IP address
datadir=/u01/app/mysql/data # Directory for this data node's data files
NodeId=2
[ndbd]
hostname=192.168.1.112 # Hostname or IP address
datadir=/u01/app/mysql/data # Directory for this data node's data files
NodeId=3
[mysqld]
hostname=192.168.1.111 # Hostname or IP address
NodeId=4 # (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
[mysqld]
hostname=192.168.1.112 # Hostname or IP address
NodeId=5 # (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
配置说明:
[ndbd default] 这部分是公共部分,对于每一个数据节点都有效,只需要配置一份
NoOfReplicas=1 数据镜像几份(各数据节点之间相互备份)
[tcp default] 针对每个数据节点及管理节点之间使用哪个端口进行通讯,
在旧版本的NDB集群软件配置时,这个地方通常配置portnumber=2202
但新版的NDB软件这里不需要配置,并且MySQL官方也强烈建议不要配置
[ndb_mgmd] 管理节点的配置部分(通常只有一个)
注意NodeId=1指明管理节点的节点ID为1,如果不指定,在启动集群时,会报错
hostname=192.168.1.110 指明管理节点的IP地址
datadir=/var/lib/mysql-cluster 指明集群管理日志存放的位置
[ndbd] 数据节点配置部分,有几个数据节点就配置几个[ndbd]
hostname=192.168.1.111 指明数据节点的IP地址
datadir=/u01/app/mysql/data 指明数据节点上的数据库文件存放的位置
NodeId=2 指明该数据节点在整个集群中的nodeid号(很重要)
[mysqld] SQL节点配置部分,有几个SQL节点,就配置几个[mysqld]
13、配置好上面的所有配置以后就可以在管理节点上启动怎个集群了
注意: 在管理节点上,不用执行/usr/local/mysql/scripts/mysql_install_db --basedir= --datadir= --user=命令
来安装数据库了。
# ndb_mgmd -f /var/lib/mysql-cluster/config.ini (第一次启动时这样执行,如果后面新添加了数据节点)
(执行此命令时,需要带上--initital参数,否则新添加的节点)
(无法被识别)
(# ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial)
# ndb_mgm (查看启动后的集群状态,看看集群是否成功启动,如果看到以下内容,表示集群已经成功配置并启动)
[root@mysql01 mysql-cluster]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.1.111)
id=3 (not connected, accepting connect from 192.168.1.112)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.110 (mysql-5.6.17 ndb-7.3.5)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.1.111)
id=5 (not connected, accepting connect from 192.168.1.112)
现在看到集群中包含两个数据节点、一个管理节点、两个SQL节点,但是数据节点和SQL节点都还没有启动,
所以显示的连接状态是not connected
14、分别登陆两台数据节点执行以下命令启动数据节点
# ndbd --initial (第一次启动时,需要加--initial来初始化数据节点,第二次启动时,就不需要这个参数了)
[root@mysql02 support-files]# ndbd --initial
2014-06-12 05:42:04 [ndbd] INFO -- Angel connected to '192.168.1.110:1186'
2014-06-12 05:42:04 [ndbd] INFO -- Angel allocated nodeid: 2
[root@mysql03 bin]# ndbd --initial
2014-06-12 05:41:38 [ndbd] INFO -- Angel connected to '192.168.1.110:1186'
2014-06-12 05:41:38 [ndbd] INFO -- Angel allocated nodeid: 3
15、再登陆到管理节点查看现在整个集群的状态
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.111 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0, *)
id=3 @192.168.1.112 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 1)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.110 (mysql-5.6.17 ndb-7.3.5)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.1.111)
id=5 (not connected, accepting connect from 192.168.1.112)
现在可以看到,两个数据节点已经连接上来了,表示两个数据节点成功启动了
16、分别登陆到两个SQL节点上启动SQL节点
[root@mysql02 ~]# cd /usr/local/mysql/bin
[root@mysql02 bin]# ./mysqld_safe --user=mysql
140612 05:51:00 mysqld_safe Logging to '/u01/app/mysql/data/mysql02.err'.
140612 05:51:00 mysqld_safe Starting mysqld daemon with databases from /u01/app/mysql/data
[root@mysql03 ~]# cd /usr/local/mysql/bin
[root@mysql03 bin]# ./mysqld_safe --user=mysql
140612 05:52:07 mysqld_safe Logging to '/u01/app/mysql/data/mysql03.err'.
140612 05:52:07 mysqld_safe Starting mysqld daemon with databases from /u01/app/mysql/data
17、再次回到管理节点查看整个集群的状态
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.111 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 0, *)
id=3 @192.168.1.112 (mysql-5.6.17 ndb-7.3.5, Nodegroup: 1)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.110 (mysql-5.6.17 ndb-7.3.5)
[mysqld(API)] 2 node(s)
id=4 @192.168.1.111 (mysql-5.6.17 ndb-7.3.5)
id=5 @192.168.1.112 (mysql-5.6.17 ndb-7.3.5)
到此整个集群就搭建完成,并成功启动运行了
18、安全关闭整个集群
首先登陆到两个SQL节点,执行service mysqld stop命令关闭SQL节点
[root@mysql02 ~]# service mysqld stop
Shutting down MySQL...... SUCCESS!
[root@mysql03 ~]# service mysqld stop
Shutting down MySQL..... SUCCESS!
然后登陆到管理节点上,执行shutdown命令关闭整个集群
[root@mysql01 mysql-cluster]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.1.111)
id=3 (not connected, accepting connect from 192.168.1.112)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.110 (mysql-5.6.17 ndb-7.3.5)
[mysqld(API)] 2 node(s)
id=4 (not connected, accepting connect from 192.168.1.111)
id=5 (not connected, accepting connect from 192.168.1.112)
ndb_mgm> shutdown
1 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.
ndb_mgm> exit
7 测试。
1、从SQL节点A登录,创建数据库和表,进行简单测试。
mysql> create database zxztest ;
mysql> use zxztest;
Database changed
mysql> create table test1(id int,name varchar(10)) engine=ndb ;
mysql> insert into test1 values(1,'zhaoxuezhi');
mysql> select * from test1 ;
+------+---------+
| id | name |
+------+---------+
| 1 | zhaoxuezhi |
+------+---------+

在數據庫優化中,應根據查詢需求選擇索引策略: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 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

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

Dreamweaver Mac版
視覺化網頁開發工具

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