共計 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 行業資訊頻道!