程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 在ubuntu9.0上配置MySQL集群詳細教程

在ubuntu9.0上配置MySQL集群詳細教程

編輯:關於MYSQL數據庫

本文詳解Ubuntu上配置MySQL集群的方法。

  介紹網絡環境:

  測試環境:

  Server1: ndbd 192.168.245.11

  Server2: ndbd 192.168.245.12

  Server3: MySQLd –ndb-cluster 192.168.245.13

  ndbd: 數據庫節點。

  MySQLd –ndb-cluster: MySQL服務器節點,程序直接訪問的是這台機器的IP。默認端口仍是3306。

  ndbd_mgm ndbd_mgmd:管理節點。管理/查看各庫節點和服務器節點的狀態。

  二、集群方案

  1.管理節點:server3(192.168.245.13)

  2.存儲節點:server1(192.168.245.11),server2(192.168.245.12)

  3.SQL節點:server1(192.168.245.11),server2(192.168.245.12),server3(192.168.245.13)

  三、MySQL安裝和配置

  1.安裝,sudo apt-get install MySQL-server

  2.配置這三台服務器上配置my.cnf,這三台服務器都要配置

 

  1. vim /etc/MySQL/my.cnf   
  2.  —————————————–my.cnf開始——————————————–    
  3. Ubuntu@ubuntu:~___FCKpd___0nbsp;cat /etc/MySQL/my.cnf    
  4. #    
  5. # The MySQL database server configuration file.    
  6. #    
  7. # You can copy this to one of:    
  8. # - “/etc/MySQL/my.cnf” to set global options,    
  9. # - “~/.my.cnf” to set user-specific options.    
  10. #    
  11. # One can use all long options that the program supports.    
  12. # Run program with –help to get a list of available options and with    
  13. # –print-defaults to see which it would actually understand and use.    
  14. #    
  15. # For explanations see  # http://dev.mysql.com/doc/MySQL/en/serve ... ables.Html     
  16. # This will be passed to all MySQL clIEnts    
  17. # It has been reported that passWords should be enclosed with ticks/quotes    
  18. # escpecially if they contain “#” chars…    
  19. # Remember to edit /etc/MySQL/debian.cnf when changing the socket location.  [clIEnt]  port = 3306 socket = /var/run/mysqld/MySQLd.sock     
  20. # Here is entrIEs for some specific programs    
  21. # The following values assume you have at least 32M ram     
  22. # This was formally known as [safe_mysqld]. Both versions are currently parsed.  [MySQLd_safe]  socket = /var/run/mysqld/MySQLd.sock  nice = 0  [MySQLd]    
  23. #    
  24. # * Basic Settings    
  25. #     
  26. #    
  27. # * IMPORTANT    
  28. # If you make changes to these settings and your system uses apparmor, you may    
  29. # also need to also adjust /etc/apparmor.d/usr.sbin.MySQLd.    
  30. #   user = MySQL pid-file = /var/run/mysqld/MySQLd.pid  socket = /var/run/mysqld/MySQLd.sock  port = 3306 basedir = /usr  datadir = /var/lib/MySQL  tmpdir = /tmp  language = /usr/share/MySQL/english  skip-external-locking    
  31. #    
  32. # Instead of skip-networking the default is now to listen only on    
  33. # localhost which is more compatible and is not less secure.    
  34. # bind-address = 127.0.0.1   
  35. #    
  36. # * Fine Tuning    
  37. #  key_buffer = 16M max_allowed_packet = 16M thread_stack = 128K thread_cache_size = 8   
  38. #max_connections = 100 #table_cache = 64 #thread_concurrency = 10   
  39. #    
  40. # * Query Cache Configuration    
  41. #  query_cache_limit = 1M query_cache_size = 16M   
  42. #    
  43. # * Logging and Replication    
  44. #    
  45. # Both location gets rotated by the cronjob.    
  46. # Be aware that this log type is a performance killer.    
  47. #log = /var/log/mysql/MySQL.log    
  48. #    
  49. # Error logging goes to syslog. This is a Debian improvement     
  50. #    
  51. # Here you can see querIEs with especially long duration  #log_slow_querIEs = /var/log/mysql/MySQL-slow.log    
  52. #long_query_time = 2   
  53. #log-querIEs-not-using-indexes    
  54. #    
  55. # The following can be used as easy to replay backup logs or for replication.    
  56. # note: if you are setting up a replication slave, see README.Debian about    
  57. # other settings you may need to change.    
  58. #server-id = 1   
  59. #log_bin = /var/log/mysql/MySQL-bin.log  expire_logs_days = 10 max_binlog_size = 100M   
  60. #binlog_do_db = include_database_name   
  61. #binlog_ignore_db = include_database_name   
  62. #    
  63. # * BerkeleyDB    
  64. #    
  65. # Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.  skip-bdb    
  66. #    
  67. # * MyISAM    
  68. #    
  69. # MyISAM is enabled by default with a 10MB datafile in /var/lib/MySQL/.    
  70. # Read the manual for more MyISAM related options. There are many!    
  71. # You might want to disable MyISAM to shrink the MySQLd process by circa 100MB.    
  72. #skip-innodb    
  73. #    
  74. # * Security Features    
  75. #    
  76. # Read the manual, too, if you want chroot!    
  77. # chroot = /var/lib/MySQL/    
  78. #    
  79. # For generating SSL certificates I recommend the OpenSSL GUI “tinyca”.    
  80. #    
  81. # ssl-ca=/etc/MySQL/cacert.pem    
  82. # ssl-cert=/etc/MySQL/server-cert.pem    
  83. # ssl-key=/etc/MySQL/server-key.pem   ndbcluster  ndb-connectstring=192.168.245.13   [MySQLdump]  quick  quote-names  max_allowed_packet = 16M  [MySQL]    
  84. #no-auto-rehash   
  85. # faster start of MySQL but no tab completition   [isamchk]  key_buffer = 16M    
  86. #    
  87. # * NDB Cluster    
  88. #    
  89. # See /usr/share/doc/MySQL-server-*/README.Debian for more information.    
  90. #    
  91. # The following configuration is read by the NDB Data Nodes (ndbd processes)     
  92. # not from the NDB Management Nodes (ndb_mgmd processes).    
  93. #  [MySQL_CLUSTER]   ndb-connectstring=192.168.245.13     
  94. #    
  95. # * IMPORTANT: Additional settings that can override those from this file!    
  96. # The files must end with ‘.cnf’, otherwise they’ll be ignored.    
  97. #  !includedir /etc/MySQL/conf.d/     
  98. Ubuntu@ubuntu:~___FCKpd___0nbsp;   
  99. ———————————my.cnf結束———————————————————

 

主要在:[MySQLd]下添加:

 

ndbcluster 
ndb-connectstring=192.168.245.13
  和添加

[MySQL_CLUSTER] 
ndb-connectstring=192.168.245.13
  上面三台服務器都要一樣

  2.配置ndb_mgmd.cnf(192.168.245.13服務器上配置)

  復制/usr/share/doc/mysql-server-5.0/examples/ndb_mgmd.cnf到/etc/MySQL/ndb_mgmd.cnf

  編輯ndb_mgmd.cnf

 

  1. ——————-開始————    
  2. Ubuntu@ubuntu:~___FCKpd___1nbsp;  
  3. cat /etc/MySQL/ndb_mgmd.cnf  [NDBD DEFAULT]    
  4. NoOfReplicas=2   
  5. DataMemory=10MB   
  6. IndexMemory=25MB   
  7. MaxNoOfTables=256   
  8. MaxNoOfOrderedIndexes=256   
  9. MaxNoOfUniqueHashIndexes=128    
  10. [MySQLD DEFAULT]    
  11. [NDB_MGMD DEFAULT]    
  12. [TCP DEFAULT]  [NDB_MGMD]    
  13. Id=1 # the NDB Management Node (this one)    
  14. HostName=192.168.245.13    
  15. DataDir= /var/lib/MySQL-cluster     
  16. [NDBD]  Id=2 # the first NDB Data Node    
  17. HostName=192.168.245.11    
  18. DataDir= /var/lib/MySQL-cluster     
  19. [NDBD]  Id=3 # the second NDB Data Node    
  20. HostName=192.168.245.12    
  21. DataDir=/var/lib/MySQL-cluster     
  22. [MySQLD]  Id=4 # the first SQL node    
  23. HostName=192.168.245.13    
  24. [MySQLD]  Id=5 # the first SQL node    
  25. HostName=192.168.245.11    
  26. [MySQLD]  Id=6 # the first SQL node    
  27. HostName=192.168.245.12     
  28. Ubuntu@ubuntu:~___FCKpd___1nbsp;   
  29. ——————-結束————  

  先啟動13服務器:

sudo /etc/init.d/MySQL-ndb-mgm start
  然後啟動11.12服務器:

sudo /etc/init.d/MySQL-ndb start
  最後啟動,13.11.12服務器MySQL服務:

sudo /etc/init.d/MySQL start
  測試:

  13服務器上:

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.245.11 (Version: 5.0.51, Nodegroup: 0) 
id=3 @192.168.245.12 (Version: 5.0.51, Nodegroup: 0, Master)  
[ndb_mgmd(MGM)] 1 node(s) 
id=1 @192.168.245.13 (Version: 5.0.51)   [MySQLd(API)] 2 node(s) 
id=4 @192.168.245.13 (Version: 5.0.51) 
id=5 @192.168.245.11 (Version: 5.0.51) 
id=5 @192.168.245.12 (Version: 5.0.51)  
ndb_mgm>
        與沒有使用簇的MySQL相比,在MySQL簇內操作數據的方式沒有太大的區別。
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>

 


執行這類操作時應記住三點

  1.表必須用ENGINE=NDB或ENGINE=NDBCLUSTER選項創建,或用ALTER TABLE選項更改,以使用NDB Cluster存儲引擎在 Cluster內復制它們。如果使用MySQLdump的輸出從已有數據庫導入表,可在文本編輯器中打開SQL腳本,並將該選項添加到任何表創建語句,或用這類選項之一替換任何已有的ENGINE(或TYPE)選項。

  2.另外還請記住,每個NDB表必須有一個主鍵。如果在創建表時用戶未定義主鍵,NDB Cluster存儲引擎將自動生成隱含的主鍵。(注釋:該隱含 鍵也將占用空間,就像任何其他的表索引一樣。由於沒有足夠的內存來容納這些自動創建的鍵,出現問題並不罕見)。

  3.當你在一個節點上運行create database mydb;你去其他sql node上執行show databases;將不能看到mydb,你需要創建它,然後use mydb; show tables;你將看到同步的表。

SQL Node 1

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved