如何在同一台主机配置MySQL Cluster

51次阅读
没有评论

共计 8770 个字符,预计需要花费 22 分钟才能阅读完成。

这篇文章主要为大家展示了“如何在同一台主机配置 MySQL Cluster”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“如何在同一台主机配置 MySQL Cluster”这篇文章吧。

MySQL cluster 是 share nothing 的集群,采用 ndb 存储引擎,和 Oracle 的 RAC 采用集中存储不同,是一种分布式的架构,所以可以很轻松的实现在同一台主机上配置 MySQL Cluster,相对 RAC 来说要简单得多。

在 MySQL Cluster 中,有三种不同的节点:

管理节点:守护进程为 ndb_mgmd,用于管理 cluster。

数据节点: 守护进程为 ndbd,用于存放数据

SQL 节点:守护进程为 mysqld,就是一个 MySQL 实例,对外供客户端连接访问数据。

本文将在一台 64 位 linux 主机上同时配置上述三种节点。在实际生产环境中,根据需要,可以在相同或者不同的机器部署节点。本次实例中共包含以下节点:

一个管理节点

两个数据节点

三个 SQL 节点

下载 Mysql cluster,当前版本 7.0.6,http://dev.mysql.com/downloads/cluster/7.0.html
解压,并复制到安装目录

tar zxvf mysql-cluster-gpl-7.0.6-linux-x86_64-glibc23.tar.gz
cp mysql-cluster-gpl-7.0.6-linux-x86_64-glibc23 /u01/mysql-cluster
cd /u01/mysql-cluster

创建三个 MySQL 实例的数据目录

mkdir data/data1
mkdir data/data2
mkdir data/data3
mkdir data/data1/mysql
mkdir data/data1/test
mkdir data/data2/mysql
mkdir data/data2/test
mkdir data/data3/mysql
mkdir data/data3/test

Cluster 配置文件如下

$ more conf/config.ini
[ndbd default]
noofreplicas=2
[ndbd]
hostname=localhost
[ndbd]
hostname=localhost
[ndb_mgmd]
id = 1
hostname=localhost
[mysqld]
hostname=localhost
[mysqld]
hostname=localhost
[mysqld]
hostname=localhost

三个 MySQL 实例配置文件如下

$ more conf/my1.cnf
[mysqld]
ndb-nodeid=4
ndbcluster=true
datadir=/u01/mysql-cluster/data/data1
basedir=/u01/mysql-cluster
port=9306
server-id=1
log-bin
$ more conf/my2.cnf
[mysqld]
ndb-nodeid=5
ndbcluster=true
datadir=/u01/mysql-cluster/data/data2
basedir=/u01/mysql-cluster
port=9307
server-id=2
log-bin
$ more conf/my3.cnf
[mysqld]
ndb-nodeid=6
ndbcluster=true
datadir=/u01/mysql-cluster/data/data3
basedir=/u01/mysql-cluster
port=9308
server-id=3
log-bin

初始化三个 MySQL 实例

script/mysql_install_db --basedir=/u01/mysql-cluster --datadir=/u01/mysql-cluster/data/data1
script/mysql_install_db --basedir=/u01/mysql-cluster --datadir=/u01/mysql-cluster/data/data2
script/mysql_install_db --basedir=/u01/mysql-cluster --datadir=/u01/mysql-cluster/data/data3

初始化管理节点

bin/ndb_mgmd --initial -f conf/config.ini --configdir=/u01/mysql-cluster

进入管理节点查看配置

$ bin/ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm  help
---------------------------------------------------------------------------
 NDB Cluster -- Management Client -- Help
---------------------------------------------------------------------------
HELP Print help text
HELP COMMAND Print detailed help for COMMAND(e.g. SHOW)
SHOW Print information about cluster
CREATE NODEGROUP,... Add a Nodegroup containing nodes
DROP NODEGROUPDrop nodegroup with id NG
START BACKUP [NOWAIT | WAIT STARTED | WAIT COMPLETED]
START BACKUP [] [NOWAIT | WAIT STARTED | WAIT COMPLETED]
START BACKUP [] [SNAPSHOTSTART | SNAPSHOTEND] [NOWAIT | WAIT STARTED | WAIT COMPLETED]
 Start backup (default WAIT COMPLETED,SNAPSHOTEND)
ABORT BACKUPAbort backup
SHUTDOWN Shutdown all processes in cluster
CLUSTERLOG ON [] ... Enable Clus= ALERT | CRITICAL | ERROR | WARNING | INFO | DEBUG= STARTUP | SHUTDOWN | STATISTICS | CHECKPOINT | NODERESTART | CONNECTION
| INFO | ERROR | CONGESTION | DEBUG | BACKUP= 0 - 15= ALL | Any database node id
For detailed help on COMMAND, use HELP COMMAND.
ndb_mgm  show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from localhost)
id=3 (not connected, accepting connect from localhost)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @localhost (mysql-5.1.34 ndb-7.0.6)
[mysqld(API)] 3 node(s)
id=4 (not connected, accepting connect from localhost)
id=5 (not connected, accepting connect from localhost)
id=6 (not connected, accepting connect from localhost)

初始化数据节点

bin/ndbd --initial -c localhost:1186
2009-06-21 23:13:19 [ndbd] INFO -- Configuration fetched from  localhost:1186 , generation: 1
bin/ndbd --initial -c localhost:1186
2009-06-21 23:13:50 [ndbd] INFO -- Configuration fetched from  localhost:1186 , generation: 1

启动 SQL 节点

bin/mysqld --defaults-file=conf/my1.cnf 
[1] 17843
 090621 23:14:36 [Warning] No argument was provided to --log-bin,
and --log-bin-index was not used; so replication may break when this MySQL server acts as a master
and has his hostname changed!! Please use  --log-bin=test-bin  to avoid this problem.
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
090621 23:14:36 InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
090621 23:14:36 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
090621 23:14:36 InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
090621 23:14:36 InnoDB: Started; log sequence number 0 0
090621 23:14:36 [Note] NDB: NodeID is 4, management server  localhost:1186 
090621 23:14:37 [Note] NDB[0]: NodeID: 4, all storage nodes connected
090621 23:14:37 [Note] Starting Cluster Binlog Thread
090621 23:14:37 [Note] Event Scheduler: Loaded 0 events
090621 23:14:37 [Note] bin/mysqld: ready for connections.
Version:  5.1.34-ndb-7.0.6-cluster-gpl-log  socket:  /tmp/mysql.sock 
port: 9306 MySQL Cluster Server (GPL)
090621 23:14:38 [Note] NDB Binlog: Ndb tables initially read only.
090621 23:14:38 [Note] NDB: Creating mysql.ndb_schema
090621 23:14:38 [Note] NDB Binlog: CREATE TABLE Event: REPL$mysql/ndb_schema
090621 23:14:38 [Note] NDB Binlog: logging ./mysql/ndb_schema (UPDATED,USE_WRITE)
090621 23:14:38 [Note] NDB: Creating mysql.ndb_apply_status
090621 23:14:39 [Note] NDB Binlog: CREATE TABLE Event: REPL$mysql/ndb_apply_status
090621 23:14:39 [Note] NDB Binlog: logging ./mysql/ndb_apply_status (UPDATED,USE_WRITE)
2009-06-21 23:14:39 [NdbApi] INFO -- Flushing incomplete GCI:s   20/3
2009-06-21 23:14:39 [NdbApi] INFO -- Flushing incomplete GCI:s   20/3
090621 23:14:39 [Note] NDB Binlog: starting log at epoch 20/3
090621 23:14:39 [Note] NDB Binlog: ndb tables writable
bin/mysqld --defaults-file=conf/my2.cnf 
bin/mysqld --defaults-file=conf/my3.cnf

查看 cluster

bin/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 @127.0.0.1 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0, Master)
id=3 @127.0.0.1 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @127.0.0.1 (mysql-5.1.34 ndb-7.0.6)
[mysqld(API)] 3 node(s)
id=4 @127.0.0.1 (mysql-5.1.34 ndb-7.0.6)
id=5 @127.0.0.1 (mysql-5.1.34 ndb-7.0.6)
id=6 @127.0.0.1 (mysql-5.1.34 ndb-7.0.6)

创建测试表

bin/mysql -uroot -h localhost -P 9306 --socket=/tmp/mysql.sock
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.1.34-ndb-7.0.6-cluster-gpl-log MySQL Cluster Server (GPL)
Type  help;  or  h  for help. Type  c  to clear the current input statement.
root@(none) 11:21:24 use test
Database changed
root@test 11:21:26 create table test_ndb(i int,a varchar(20),primary key(i)) engine=ndb;
090621 23:22:32 [Note] NDB Binlog: CREATE TABLE Event: REPL$test/test_ndb
090621 23:22:32 [Note] NDB Binlog: logging ./test/test_ndb (UPDATED,USE_WRITE)
090621 23:22:32 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$test/test_ndb
090621 23:22:32 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$test/test_ndb
090621 23:22:32 [Note] NDB Binlog: logging ./test/test_ndb (UPDATED,USE_WRITE)
090621 23:22:32 [Note] NDB Binlog: logging ./test/test_ndb (UPDATED,USE_WRITE)
Query OK, 0 rows affected (1.10 sec)
root@test 11:22:32 insert into test_ndb values(1, NinGoo 
Query OK, 1 row affected (0.02 sec)
[mysql@dbconsole mysql-cluster]$ ls -l data/data1/test
total 12
-rw-rw---- 1 mysql dba 8578 Jun 21 23:22 test_ndb.frm
-rw-rw---- 1 mysql dba 0 Jun 21 23:22 test_ndb.ndb
[mysql@dbconsole mysql-cluster]$ ls -l data/data2/test
total 12
-rw-rw---- 1 mysql dba 8578 Jun 21 23:22 test_ndb.frm
-rw-rw---- 1 mysql dba 0 Jun 21 23:22 test_ndb.ndb
[mysql@dbconsole mysql-cluster]$ ls -l data/data3/test
total 12
-rw-rw---- 1 mysql dba 8578 Jun 21 23:22 test_ndb.frm
-rw-rw---- 1 mysql dba 0 Jun 21 23:22 test_ndb.ndb
$ bin/mysql -uroot -P 9307 --socket=/tmp/mysql.sock
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.1.34-ndb-7.0.6-cluster-gpl-log MySQL Cluster Server (GPL)
Type  help;  or  h  for help. Type  c  to clear the current input statement.
root@(none) 11:24:38 use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
root@test 11:24:41 select * from test_ndb;
+---+--------+
| i | a |
+---+--------+
| 1 | NinGoo |
+---+--------+
1 row in set (0.02 sec)

以上是“如何在同一台主机配置 MySQL Cluster”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-26发表,共计8770字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)