db4 192.168.105.23 mysqld node
关闭iptables和selinux,在每台服务器上yum安装rpm依赖包,创建mysql用户、用户组和安装目录
yum install autoconf automake bison.x86_64 bzip2-devel.x86_64 cpp.x86_64 cyrus-sasl.x86_64 cyrus-sasl-plain.x86_64 flex freetype-devel.x86_64 gd.x86_64 gcc.x86_64 gcc-c++.x86_64 gcc-g77 gdbm-devel.x86_64 glibc-devel glibc-headers glibc-kernheaders libtool.x86_64 libxml2.x86_64 libjpeg-devel.x86_64 libpng-devel.x86_64 libtiff-devel.x86_64 libc-client-devel.x86_64 libstdc++-devel.x86_64 libmcrypt.x86_64 libmcrypt-devel.x86_64 libtool-ltdl.x86_64 mhash.x86_64 mhash-devel.x86_64 libxslt-devel.x86_64 libtidy-devel.x86_64 libtidy.x86_64 zlib-devel.x86_64 expat.x86_64 expat-devel.x86_64 pcre.x86_64 pcre-devel.x86_64 libXp.x86_64 fontconfig-devel libXpm-devel db4-utils
[root@db1 ~]# groupadd mysql [root@db1 ~]# useradd -g mysql mysql [root@db1 ~]# mkdir -p /service/mysql/etc /service/mysql/tmp
[root@db1 ~]# cd /service/mysql-cluster-gpl-7.1.19 [root@db1 mysql-cluster-gpl-7.1.19]# ./configure --prefix=/service/mysql/ --with-charset=gbk --with-collation=gbk_chinese_ci --with-client-ldflags=-all-static -with-mysqld-ldflags=-all-static --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-unix-socket-path=/service/mysql/tmp/mysql.sock --sysconfdir=/service/mysql/etc --without-debug --with-mysqld-user=mysql --with-plugins=max [root@db1 mysql-cluster-gpl-7.1.19]# make && make install
[root@db1 mysql-cluster-gpl-7.1.19]# cd /service/mysql [root@db1 mysql]# mkdir mysql-cluster [root@db1 mysql]# cd mysql-cluster/ [root@db1 mysql-cluster]# cat config.ini [NDBD DEFAULT] NoOfReplicas= 2 [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] DataDir= /service/mysql/mysql-cluster [NDB_MGMD] HostName= db1 [NDBD] HostName= db2 DataDir= /service/mysql/mysql-cluster [NDBD] HostName= db3 DataDir= /service/mysql/mysql-cluster [MYSQLD] HostName= db2 [MYSQLD] HostName= db3 [MYSQLD] HostName= db4 [root@db1 mysql-cluster]#
[root@db1 mysql-cluster]# /service/mysql/libexec/ndb_mgmd -f /service/mysql/mysql-cluster/config.ini MySQL Cluster Management Server mysql-5.1.56 ndb-7.1.19 [root@db1 mysql-cluster]# ps -ef|grep ndb root 29368 1 0 15:07 ? 00:00:00 /service/mysql/libexec/ndb_mgmd -f /service/mysql/mysql-cluster/config.ini root 29380 2263 0 15:07 pts/0 00:00:00 grep ndb [root@db1 mysql-cluster]#
[root@db1 mysql-cluster]# /service/mysql/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 (not connected, accepting connect from db2) id=3 (not connected, accepting connect from db3) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.105.24 (mysql-5.1.56 ndb-7.1.19) [mysqld(API)] 3 node(s) id=4 (not connected, accepting connect from db2) id=5 (not connected, accepting connect from db3) id=6 (not connected, accepting connect from db4) ndb_mgm> exit
[root@db2 service]# cd mysql-cluster-gpl-7.1.19 [root@db2 mysql-cluster-gpl-7.1.19]# ./configure --prefix=/service/mysql --with-charset=gbk --with-collation=gbk_chinese_ci --with-client-ldflags=-all-static -with-mysqld-ldflags=-all-static --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-unix-socket-path=/service/mysql/tmp/mysql.sock --sysconfdir=/service/mysql/etc --without-debug --with-mysqld-user=mysql --with-plugins=max [root@db2 mysql-cluster-gpl-7.1.19]# make && make install
[root@db2 mysql-cluster-gpl-7.1.19]# cd /service/mysql [root@db2 mysql]# mkdir mysql-cluster [root@db2 mysql]# /service/mysql/bin/mysql_install_db --user=mysql Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /service/mysql/bin/mysqladmin -u root password 'new-password' /service/mysql/bin/mysqladmin -u root -h db2 password 'new-password' Alternatively you can run: /service/mysql/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /service/mysql ; /service/mysql/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /service/mysql/mysql-test ; perl mysql-test-run.pl Please report any problems with the /service/mysql/bin/mysqlbug script! [root@db2 mysql]# [root@db2 mysql]# cat etc/my.cnf [mysqld] basedir = /service/mysql/ datadir = /service/mysql/var user = mysql port = 3306 socket = /service/mysql/tmp/mysql.sock ndbcluster ndb-connectstring=192.168.105.24 [mysql_cluster] ndb-connectstring=192.168.105.24 [root@db2 mysql]#
[root@db2 mysql]# /service/mysql/libexec/ndbd --initial 2012-03-20 15:40:32 [ndbd] INFO -- Angel connected to '192.168.105.24:1186' 2012-03-20 15:40:32 [ndbd] INFO -- Angel allocated nodeid: 2 [root@db2 mysql]# chown -R mysql.mysql * [root@db2 mysql]# /service/mysql/bin/mysqld_safe & [1] 30008 [root@db2 mysql]# 120320 15:42:02 mysqld_safe Logging to '/service/mysql/var/db2.err'. 120320 15:42:02 mysqld_safe Starting mysqld daemon with databases from /service/mysql/var [root@db2 mysql]# /service/mysql/bin/mysqladmin -uroot password 'yourpwd'
[root@db2 mysql]# ps -ef|grep mysql root 29970 1 0 15:40 ? 00:00:00 /service/mysql/libexec/ndbd --initial root 29971 29970 0 15:40 ? 00:00:00 /service/mysql/libexec/ndbd --initial root 30008 2776 0 15:42 pts/0 00:00:00 /bin/sh /service/mysql/bin/mysqld_safe mysql 30083 30008 0 15:42 pts/0 00:00:00 /service/mysql/libexec/mysqld --basedir=/service/mysql/ --datadir=/service/mysql/var --user=mysql --log-error=/service/mysql/var/db2.err --pid-file=/service/mysql/var/db2.pid --socket=/service/mysql/tmp/mysql.sock --port=3306 root 30109 2776 0 15:43 pts/0 00:00:00 grep mysql [root@db2 mysql]# /service/mysql/bin/mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.1.56-ndb-7.1.19 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select @@version; +-------------------+ | @@version | +-------------------+ | 5.1.56-ndb-7.1.19 | +-------------------+ 1 row in set (0.00 sec) mysql>
[root@db4 service]# cd mysql-cluster-gpl-7.1.19 [root@db4 mysql-cluster-gpl-7.1.19]# ./configure --prefix=/service/mysql --with-charset=gbk --with-collation=gbk_chinese_ci --with-client-ldflags=-all-static -with-mysqld-ldflags=-all-static --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-unix-socket-path=/service/mysql/tmp/mysql.sock --sysconfdir=/service/mysql/etc --without-debug --with-mysqld-user=mysql --with-plugins=max [root@db4 mysql-cluster-gpl-7.1.19]# make && make install
[root@db4 mysql-cluster-gpl-7.1.19]# cd /service/mysql [root@db4 mysql]# mkdir mysql-cluster [root@db4 mysql]# /service/mysql/bin/mysql_install_db --user=mysql Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /service/mysql/bin/mysqladmin -u root password 'new-password' /service/mysql/bin/mysqladmin -u root -h db4 password 'new-password' Alternatively you can run: /service/mysql/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /service/mysql ; /service/mysql/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /service/mysql/mysql-test ; perl mysql-test-run.pl Please report any problems with the /service/mysql/bin/mysqlbug script! [root@db4 mysql]#
[root@db4 mysql]# chown -R mysql.mysql * [root@db4 mysql]# cat etc/my.cnf [mysqld] basedir = /service/mysql/ datadir = /service/mysql/var user = mysql port = 3306 socket = /service/mysql/tmp/mysql.sock ndbcluster ndb-connectstring=192.168.105.24 [mysql_cluster] ndb-connectstring=192.168.105.24 [root@db4 mysql]# /service/mysql/bin/mysqld_safe & [1] 3471 [root@db4 mysql]# 120320 16:07:18 mysqld_safe Logging to '/service/mysql/var/db4.err'. 120320 16:07:18 mysqld_safe Starting mysqld daemon with databases from /service/mysql/var [root@db4 mysql]# /service/mysql/bin/mysqladmin -uroot password 'yourpwd' [root@db4 mysql]# ll /service/mysql/tmp/ total 0 srwxrwxrwx 1 mysql mysql 0 Mar 20 16:07 mysql.sock [root@db4 mysql]# /service/mysql/bin/mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.1.56-ndb-7.1.19 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select now(),@@version; +---------------------+-------------------+ | now() | @@version | +---------------------+-------------------+ | 2012-03-20 16:08:12 | 5.1.56-ndb-7.1.19 | +---------------------+-------------------+ 1 row in set (0.00 sec) mysql>
[root@db1 mysql-cluster]# /service/mysql/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 @192.168.105.21 (mysql-5.1.56 ndb-7.1.19, Nodegroup: 0, Master) id=3 @192.168.105.22 (mysql-5.1.56 ndb-7.1.19, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.105.24 (mysql-5.1.56 ndb-7.1.19) [mysqld(API)] 3 node(s) id=4 @192.168.105.21 (mysql-5.1.56 ndb-7.1.19) id=5 @192.168.105.22 (mysql-5.1.56 ndb-7.1.19) id=6 @192.168.105.23 (mysql-5.1.56 ndb-7.1.19) ndb_mgm>
mysql> system hostname db2 mysql> create table test.zhongwc( -> id int(5) primary key, -> name varchar(10) -> ) engine=ndb comment='ndb test'; Query OK, 0 rows affected (0.16 sec) mysql> insert into test.zhongwc values(1,'zhongwc'); Query OK, 1 row affected (0.01 sec) mysql>
mysql> system hostname db4 mysql> 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 mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | zhongwc | +----------------+ 1 row in set (0.01 sec) mysql> show create table zhongwc; +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | zhongwc | CREATE TABLE `zhongwc` ( `id` int(5) NOT NULL, `name` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=ndbcluster DEFAULT CHARSET=gbk COMMENT='ndb test' | +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> select * from zhongwc; +----+---------+ | id | name | +----+---------+ | 1 | zhongwc | +----+---------+ 1 row in set (0.00 sec) mysql>
mysql> system hostname db3 mysql> 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 mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | zhongwc | +----------------+ 1 row in set (0.02 sec) mysql> show create table zhongwc; +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | zhongwc | CREATE TABLE `zhongwc` ( `id` int(5) NOT NULL, `name` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=ndbcluster DEFAULT CHARSET=gbk COMMENT='ndb test' | +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> select * from zhongwc; +----+---------+ | id | name | +----+---------+ | 1 | zhongwc | +----+---------+ 1 row in set (0.00 sec) mysql>