如下:
I have recently had success setting up a MySQL Cluster, so I thought I’d share what I did with everyone since it was such a challenge for me to do and the documentation for how to set it up is so poor. |
######################### My Setup #################################### Here is my setup: I have two machines, Machine A and Machine B, that have requests and updates to the db balanced by a router. There is one IP address that clients use to access the db. The router distributes 50% of the requests to Machine A and the remaining 50% to Machine B. Therefore, the db on both Machine A and Machine B must be exactly the same at all times. To achieve this I used MySQL Cluster. I am running Redhat Linux 9 on both machines, and the machines are physically identical. Machine A ip = 10.0.2.39 Machine B ip = 10.0.2.38 ########################### Installing ################################ I did the following on both machines: - I installed MySql-Max (Linux (x86, glibc-2.2, static, gcc) 4.1.7 http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-max-4.1.7-pc-linux-i6 86.tar.gz/from/pick - I extracted the tar file into the root folder, and installed the mysql db by running the mysql_install_db script in the scripts directory. (In the mysql directory type- ./scripts/mysql_install_db) - I then created a config.ini file which I placed in the mysql directory. I also created a my.cnf file which I placed in the mysql/data directory. ################### Config.ini ####################################### [NDBD DEFAULT] NoOfReplicas= 2 [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] [TCP DEFAULT] [NDB_MGMD] HostName= 10.0.2.39 (10.0.2.38 on machine B) [NDBD] HostName= 10.0.2.38 DataDir= /root/mysql/data [NDBD] HostName= 10.0.2.39 DataDir= /root/mysql/data [MYSQLD] [MYSQLD] [MYSQLD] ###################### My.cnf ########################## The my.cnf file on both machines is: [mysqld] ndbcluster ###################### Starting the cluster ############# To start the cluster I did the following: (please note that MySQL is installed in the /root/mysql directory) Machine A: - opened a terminal. - typed- cd mysql - typed- ./bin/ndb_mgmd - starts the cluster manager - typed- ./bin/ndbd --initial - please note, only use the '--initial' parameter if it is the first time you are starting the node. - typed- ./bin/mysqld_safe --user=root & - starts mysql. The terminal may stick here so use ctrl-c to get a new prompt. - typed- ./bin/mysql - starts the mysql monitor. - typed- use test; - to use the test database. Machine B: - follow the same steps as Machine A: ###################### Testing the cluster ############# On Machine A: - at the mysql monitor prompt - type- use test; - to use the test database. - type- create table cluster_test (i int) engine=ndbcluster; - this should create a clustered table called cluster_test. On Machine B: - at the mysql monitor prompt - type- use test; - type- show tables; - this should show the cluster_test table created on Machine A. Inserting Subsequent inserts etc. can be done at the mysql monitor prompt. Example: On Machine A: - type- insert into cluster_test values(314159); On Machine B: - type- select * from cluster_test; - should display the value 314159. ##########################################################