知乎專欄 | 多維度架構 |
The cluster need a lot of server for experiments, if you haven't any server for one, I have a good idea that using Vmware for you.
at first, let's create lots of virtual machine(You MUST have a third server). and then follow me step by step learning how to set up a mysql cluster on your virtual machine.
mgm 192.168.0.1 # Management data 192.168.0.2 # Ndbd Node data 192.168.0.3 # Ndbd Node sql 192.168.0.4 # SQL Node sql 192.168.0.5 # SQL Node
neo@mgm:~$ sudo vim /var/lib/mysql-cluster/config.ini [NDBD DEFAULT] NoOfReplicas=2 DataMemory=80M IndexMemory=18M [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] [TCP DEFAULT] portnumber=2202 [NDB_MGMD] hostname=192.168.0.1 datadir=/var/lib/mysql-cluster [NDBD] hostname=192.168.0.2 datadir=/var/lib/mysql-cluster [NDBD] hostname=192.168.0.3 datadir=/var/lib/mysql-cluster [MYSQLD] hostname=192.168.0.4 [MYSQLD] hostname=192.168.0.5
my.cnf
neo@data:~$ sudo vim /etc/mysql/my.cnf [mysqld] ndbcluster ndb-connectstring=192.168.0.1 # the IP of the MANAGMENT SERVER [mysql_cluster] ndb-connectstring=192.168.0.1 # the IP of the MANAGMENT SERVER
my.cnf
neo@sql:~$ sudo vim /etc/mysql/my.cnf [mysqld] ndbcluster ndb-connectstring=192.168.0.1 # the IP of the MANAGMENT SERVER [mysql_cluster] ndb-connectstring=192.168.0.1 # the IP of the MANAGMENT SERVER
starting mgm
neo@mgm:~$ sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini
initial ndbd
neo@data:~$ sudo ndbd --initial
首次運行需要 --initial 參數,以後不需要。
neo@mgm:~$ 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 @192.168.0.2 (Version: 5.0.51, Nodegroup: 0) id=3 @192.168.0.3 (Version: 5.0.51, Nodegroup: 0, Master) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.0.1 (Version: 5.0.51) [mysqld(API)] 2 node(s) id=4 @192.168.0.4 (Version: 5.0.51) id=5 @192.168.0.5 (Version: 5.0.51) ndb_mgm>
與沒有使用簇的MySQL相比,在MySQL簇內操作數據的方式沒有太大的區別。 | |
---|---|
執行這類操作時應記住三點
|
SQL Node 1
neo@sql:~$ mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.0.51a-3ubuntu5.1 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database cluster; Query OK, 1 row affected (0.00 sec) mysql> use cluster Database changed mysql> create table city( id mediumint unsigned not null auto_increment primary key, name varchar(20) not null default '' ) engine = ndbcluster default charset utf8; Query OK, 0 rows affected (1.07 sec) mysql> insert into city values(1, 'Shenzhen'); Query OK, 1 row affected (0.12 sec) mysql> insert into city values(2, 'Guangdong'); Query OK, 1 row affected (0.00 sec)
SQL Node 2
neo@sql:~$ mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.0.51a-3ubuntu5.1 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | example | | mydb | | mysql | | neo | +--------------------+ 6 rows in set (0.13 sec) mysql> create database cluster; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | cluster | | example | | mydb | | mysql | | neo | +--------------------+ 6 rows in set (0.13 sec) mysql> use cluster; 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 mysql> show tables; +-------------------+ | Tables_in_cluster | +-------------------+ | city | +-------------------+ 1 row in set (0.01 sec) mysql> select * from city; +----+-----------+ | id | name | +----+-----------+ | 1 | Shenzhen | | 2 | Guangdong | +----+-----------+ 2 rows in set (0.03 sec) mysql>