`

快速/简单实现mysql数据库集群(mysql cluster)

阅读更多

最近一直在研究mysql的高可用性和负载均衡技术,对于数据库/数据表数目比较少的情况下,还是推荐mysql官方提供的mysql-cluster技术。
下面列出mysql相关HA技术方面的比较,可以根据你的需要来实现:

我采用debian系统来担任mysql服务器,操作起来比较方便。
准备两台机器: 
192.168.10.172  ndb management, sql_node, data_node
192.168.10.173  sql_node, data_node

1、apt-get install mysql-server;  两台机器分别安装mysql-server 5.0,5.0自带cluster功能;

2、 cp /usr/share/doc/mysql-server-5.0/examples/ndb_mgmd.cnf /etc/mysql/ndb_mgmd.cnf,复制cluster management模板,并编辑成类似如下的信息:
 cat /etc/mysql/ndb_mgmd.cnf
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=10MB
IndexMemory=25MB
MaxNoOfTables=256
MaxNoOfOrderedIndexes=256
MaxNoOfUniqueHashIndexes=128

[MYSQLD DEFAULT]

[NDB_MGMD DEFAULT]

[TCP DEFAULT]

[NDB_MGMD]
Id=1                            # the NDB Management Node (this one)
HostName=192.168.10.172

[NDBD]
Id=2                            # the first NDB Data Node
HostName=192.168.10.172
DataDir= /var/lib/mysql

[NDBD]
Id=3                            # the second NDB Data Node
HostName=192.168.10.173
DataDir=/var/lib/mysql

[MYSQLD]
Id=4                            # the first SQL node
HostName=192.168.10.172

[MYSQLD]
Id=5                          # the second SQL node
HostName=192.168.10.173

3、编辑/etc/mysql/my.cnf,类似如下信息,其实就是增加了红色部分内容:
 more my.cnf  |grep -v ^#

[client]
port  = 3306
socket     = /var/run/mysqld/mysqld.sock


[mysqld_safe]
socket     = /var/run/mysqld/mysqld.sock
nice  = 0

[mysqld]
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
bind-address  = 127.0.0.1
key_buffer  = 16M
max_allowed_packet      = 16M
thread_stack  = 128K
thread_cache_size       = 8
myisam-recover          = BACKUP
query_cache_limit       = 1M
query_cache_size        = 16M
expire_logs_days        = 10
max_binlog_size         = 100M
skip-bdb

ndbcluster
ndb-connectstring=192.168.10.172


[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

[mysql]

[isamchk]
key_buffer  = 16M

[MYSQL_CLUSTER]

ndb-connectstring=192.168.10.172


!includedir /etc/mysql/conf.d/

4、scp my.cnf 192.168.10.173:/etc/mysql/ ,把mysql配置文件复制到另一台机器;

5、在192.168.10.172上运行 /etc/init.d/mysql-ndb-mgm restart; /etc/init.d/mysql-ndb restart; /etc/init.d/mysql restart 三个脚本;

6、在192.168.10.173运行 /etc/init.d/mysql-ndb restart; /etc/init.d/mysql restart  两个脚本;

7、任何一台机器运行下列命令,如果显示如下信息,证明全部运行成功:
ndb_mgm -e show
Connected to Management Server at: 192.168.10.172:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @192.168.10.172  (Version: 5.0.51, Nodegroup: 0, Master)
id=3    @192.168.10.173  (Version: 5.0.51, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.10.172  (Version: 5.0.51)

[mysqld(API)]   2 node(s)
id=4    @192.168.10.172  (Version: 5.0.51)
id=5    @192.168.10.173  (Version: 5.0.51)

8、登录mysql,验证数据同步和复制功能,DB2机器上必须要创建一个test的数据库,其他不用做就可以实现数据的同步和复制;
192.168.10.172
DB1:/etc/mysql# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 31
Server version: 5.0.51a-24+lenny4 (Debian)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database test;
Query OK, 1 row affected (0.00 sec)

mysql> use test
Database changed
mysql> create table mytable(id int(10),name varchar(10)) engine=ndbcluster;
Query OK, 0 rows affected (0.30 sec)

mysql> insert into mytable values(1,'Jone');
Query OK, 1 row affected (0.01 sec)

mysql> insert into mytable values(3,'Jane');
Query OK, 1 row affected (0.01 sec)

mysql> select * from mytable;
+------+------+
| id   | name |
+------+------+
|    3 | Jane |
|    2 | Mark |
|    1 | Jone |
+------+------+
3 rows in set (0.01 sec)

192.168.10.173
DB2:~# mysql -uroot -p     
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 30
Server version: 5.0.51a-24+lenny4 (Debian)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database test;
Query OK, 1 row affected (0.00 sec)

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 |
+----------------+
| mytable        |
+----------------+
1 row in set (0.01 sec)

mysql> insert into mytable values(2,'Mark');
Query OK, 1 row affected (0.01 sec)

mysql> select * from mytable;
+------+------+
| id   | name |
+------+------+
|    1 | Jone |
|    3 | Jane |
|    2 | Mark |
+------+------+
3 rows in set (0.00 sec)

经过以上操作就实现了mysql-cluster,快速/简单。
更多信息请查看官方参考手册:http://dev.mysql.com/doc/refman/5.1/zh/ndbcluster.html

分享到:
评论

相关推荐

    mysql-cluster

    MySQL Cluster作为一种高级别的数据库集群解决方案,为企业级应用提供了强大的技术支持。通过对上述知识点的了解,我们可以更好地理解MySQL Cluster的核心技术和优势所在,为实际项目中的数据库选型提供参考依据。在...

    基于Mysql的数据库集群设计与实现.pptx

    基于Mysql的数据库集群设计与实现 本文讨论了基于Mysql的数据库集群设计与实现的相关知识点,涵盖Mysql数据库集群的意义和优势、设计、实现、管理等方面。 Mysql数据库集群的意义和优势 Mysql数据库集群是由多个...

    MySQL Cluster集群构建实战

    MySQL Cluster是一种高度可用、可扩展的分布式数据库解决方案,它通过无共享架构实现了内存中的数据存储,旨在提高系统的高可用性和高实时性。MySQL Cluster的核心优势在于其能够支持多节点之间的数据复制和故障转移...

    MySQL数据库集群+负载均衡(LVS)

    **MySQL数据库集群+负载均衡(LVS)** 这个主题涵盖了构建一个高可用性、高性能的MySQL集群,并通过负载均衡技术来实现对集群中多个MySQL实例请求的智能分发。这种架构能够显著提高系统的稳定性和响应速度,适用于大...

    mysql_cluster集群

    MySQL Cluster 是一种高性能、高可用性且可扩展的集群解决方案,主要用于在无共享架构中部署内存中的数据库集群。这种架构允许使用低成本的硬件设备,同时不依赖特定的软件或硬件配置。 #### 二、MySQL Cluster 的...

    MySQL Cluster(MySQL 集群)

    MySQL Cluster 作为一种高级的数据库集群解决方案,通过采用 NDB Cluster 存储引擎,不仅能够提高系统的可用性和性能,还能大大增强系统的可扩展性。通过合理规划和配置,MySQL Cluster 可以满足不同规模企业的业务...

    MySQL Cluster集群搭建详解

    MySQL Cluster是一种可扩展的、高性能的、容错能力强的集群数据库解决方案。它通过其独特的分布式架构设计,支持在多个节点间进行数据的复制和同步,能够提供高可用性和冗余性。对于想要搭建MySQL Cluster集群的新手...

    mysql数据库集群

    MySQL集群的部署和实现涉及多个步骤,包括配置管理节点、数据节点和SQL节点,以及设置适当的故障检测和恢复机制。在实际操作中,还需要进行负载均衡的配置和测试,确保系统的稳定性和性能。测试方案通常包括模拟不同...

    MySql数据库双机集群

    ### MySQL数据库双机集群知识点详解 ...综上所述,MySQL Cluster是一种强大的数据库集群解决方案,适用于需要高可用性、高性能和可扩展性的应用场景。通过合理规划和配置,可以有效地提高数据库系统的稳定性和效率。

    linux下MySQL-cluster集群搭建.

    ### Linux 下 MySQL Cluster 集群搭建详解 #### 一、基本概念 MySQL Cluster 是一个高性能、高可用性且易于管理的解决方案,适用于需要实时事务处理的应用场景。它基于 NDB 存储引擎,该存储引擎是事务型的并且...

    Mysql数据库与SQL优化+集群+负载均衡.doc

    MySQL 集群可以通过 Replication、Galera Cluster 和 MySQL Fabric 等方式实现。 Replication 是 MySQL 集群的最基本形式,通过主从复制来实现数据同步。Galera Cluster 是一种高可用性和高性能的 MySQL 集群解决...

    虚拟化平台下MySQL数据库集群的搭建.pdf

    通过使用 Galera Cluster,可以实现同步复制的多主MySQL集群,提高数据的一致性和可用性。 虚拟化技术的应用 虚拟化技术可以将一台计算机虚拟为多台逻辑计算机,每个逻辑计算机可以运行不同的操作系统,且应用程序...

    MySQL分布式数据库集群高可用设计及应用

    综上所述,“MySQL分布式数据库集群高可用设计及应用”不仅涵盖了CAP定理的基本原理,还详细介绍了多种实现高可用性的具体技术方案,包括共享存储、DRBD、主从复制、多主模式以及MySQL Cluster架构。每种方案都有其...

    mysql数据库集群配置详解.doc

    MySQL 数据库集群配置详解 MySQL 集群是一种高可用、高性能的数据库解决方案,可以提供高可用性和高性能的数据库服务。MySQL 集群配置主要包括集群管理节点、存储节点和SQL节点三部分。 MySQL 集群配置主要步骤...

    mysql mysql cluster 7.2.4集群配置.txt

    ### MySQL Cluster 7.2.4 集群配置详解 #### 一、概述 本文档将详细介绍如何在三台服务器上部署一个 MySQL Cluster 7.2.4 的集群环境。MySQL Cluster 是一种高可用性解决方案,它允许数据在多台计算机之间进行复制...

    MySQL-Cluster双机集群+HA高可用+负载均衡配置手册

    MySQL-Cluster具有高可用性和负载均衡的特点,可以实现任意一台服务器出现问题或宕机时MySQL集群依然能够继续运行。同时,MySQL-Cluster也可以提供高性能和高可扩展性,可以满足大规模数据库应用的需求。 高可用性 ...

    galera cluster for mysql集群部署方案

    ### Galera Cluster for ...通过以上步骤,您可以完成 Galera Cluster for MySQL 的部署,并且实现一个高效稳定的 MySQL 集群环境。需要注意的是,在实际部署过程中还需要根据具体情况调整配置参数以达到最佳效果。

Global site tag (gtag.js) - Google Analytics