[转帖]MYSQL集群+HA高可用_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2491 | 回复: 0   主题: [转帖]MYSQL集群+HA高可用        下一篇 
youduoduo
注册用户
等级:新兵
经验:78
发帖:78
精华:0
注册:2011-11-26
状态:离线
发送短消息息给youduoduo 加好友    发送短消息息给youduoduo 发消息
发表于: IP:您无权察看 2014-11-25 10:02:57 | [全部帖] [楼主帖] 楼主

MySQL Cluster 具有故障恢复、节点修复、数据同步、非单点故障等优点。
MySQL Cluster是为提供99.999%以上的高可用性而设计的,采用分布式节点设计技术,不会因为单点故障而使整个Cluster瘫痪。
MySQL Cluster由3类节点组成:管理节点、数据节点、SQL节点。

1:数据节点
  数据节点是整个系统中最主要的节点,它负责存储所有的数据以及数据的同步复制,以防单个或者更多的节点故障而使MySQL Cluster瘫痪。

2:管理节点
  管理节点用于管理系统的配置信息,只在启动和重新配置MySQL Cluster的时候才起作用。一般情况下只需要1个管理节点,当然也可以运行几个管理节点。

3:SQL节点
  SQL节点用于数据节点存取数据,提供统一的标准SQL接口,跟平常的MySQL Serve一样,让应用程序和开发人员不用关心系统内部究竟是如何运行的。

os:centos5/rhel5    mysql version:5.1.22 rc


准备:

 mysql-max-5.1.5-alpha-linux-i686-glibc23.tar


环境:
管理节点:
IP:192.168.0.118 主机名:mgm
存偖节点1/sql节点1: 192.168.0.146  主机名: node1
存偖节点2/sql节点2: 192.168.0.221主机名: node2

三台主机的hosts 文件要一样

192.168.0.118           mgm
192.168.0.146           node1
192.168.0.221           node2


这里只有用一台管理节点

存偖节点和SQL节点分别在在两台电脑上,也就是存偖节点同时也当数据节点

 ========================================================================


安装:分别在三台电脑安装数据库

 shell>tar xvf mysql-max-5.1.5-alpha-linux-i686-glibc23.tar
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> mv mysql-max-5.1.5-alpha-linux-i686-glibc23 mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &


CP启动脚本到/etc/init.d 目录

 shell>cp support-files/mysql.server /etc/init.d/mysqld


停止mysql 数据库

 shell>/etc/init.d/mysqld stop


加入systemV服务

 shell>chkconfig --add mysqld


cp MYSQL配置文件到/etc/目录

 shell>cp support-files/my-small.cnf /etc/my.cnf


测试三台上面的数据库启动是否正常

二:配置管理节点

 MGM:


1,配置/etc/my.cnf文件
在后面添加如下内容

 [ndb_mgm]
connect-string=mgm
[ndb_mgmd]
config-file=/etc/config.ini
##connect-string=mgm  ##ndb_mgm 管理节点的计算机名
##config-file=/etc/config.ini ##ndb_mgmd的启动所要的配置文件


2,ndb_mgmd的配置文件 config.ini配置如下

 #
# DEFAULT SETTINGS
#
# Default settings for all data nodes
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=644245094
IndexMemory=322122547
#
# COMPUTER DEFINITIONS
#
# Datanode Computer #1
[COMPUTER]
Id=1
HostName=node1
# Datanode Computer #2
[COMPUTER]
Id=2
HostName=node2
# Management Node Computer #1
[COMPUTER]
Id=3
HostName=mgm
#
# NODE DEFINITIONS
#
# Data Nodes
# Node group #1
[NDBD]
Id=1
ExecuteOnComputer=1
[NDBD]
Id=2
ExecuteOnComputer=2
# Management node
[NDB_MGMD]
Id=3
ExecuteOnComputer=3
# Anonymous API nodes  ##
[MYSQLD]
[MYSQLD]
[MYSQLD]


分另在两点节点配置:在/etc/my.cnf下面添加如下内容

 [MYSQLD]
ndbcluster
ndb-connectstring=mgm
#default_table_type=NDBCLUSTER
[MYSQL_CLUSTER]
ndb-connectstring=mgm
# my.cnf
[MYSQL_CLUSTER]
ndb-connectstring=mgm #管理节点的主机名
/////////


mysql cluster实战

 ////////////////////////////////////////////////////////////////////////////////


192.168.0.118是管理节点,192.168.0.146、192.168.0.221是数据节点和sql节点一体化
启动管理节点

/usr/local/mysql/bin/ndb_mgmd -f /etc/config.ini


注意,必须用“-f”或“--config-file”选项,告诉ndb_mgmd到哪里找到配置文件(详情请参见17.5.3节,“ndb_mgmd,“管理服务器”进程”)。

6.启动数据节点

第一次启动

/usr/local/mysql/bin/ndbd --initial


注意,仅应在首次启动ndbd时,或在备份/恢复或配置变化后重启ndbd时使用“--initial”参数,这很重要。原因在于,该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括恢复用日志文件。

非第一次启动:

 /usr/local/mysql/bin/ndbd


7.启动sql节点

 service mysqld start  start


8.调用ndb_mgm管理节点客户端,可对其进行测试

#/usr/local/mysql/bin/ndb_mgm
ndb_mgm> show
Connected to Management Server at: mgm:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=1    @192.168.0.146  (Version: 5.1.5, Nodegroup: 0)
id=2    @192.168.0.221  (Version: 5.1.5, Nodegroup: 0, Master)
[ndb_mgmd(MGM)] 1 node(s)
id=3    @192.168.0.118  (Version: 5.1.5)
[mysqld(API)]   3 node(s)
id=4    @192.168.0.221  (Version: 5.1.5)
id=5    @192.168.0.146  (Version: 5.1.5)
id=6 (not connected, accepting connect from any host)


查看网络连接情况

234管理节点:

[root@mgm local]# netstat -anp | grep mgm
tcp        0      0 0.0.0.0:1186                0.0.0.0:*                   LISTEN      10059/ndb_mgmd
tcp        0      0 192.168.0.118:47504         192.168.0.118:1186          ESTABLISHED 10302/ndb_mgm
tcp        0      0 192.168.0.118:47503         192.168.0.118:1186          ESTABLISHED 10302/ndb_mgm
tcp        0      0 192.168.0.118:47502         192.168.0.118:1186          ESTABLISHED 10302/ndb_mgm
tcp        0      0 127.0.0.1:34878             127.0.0.1:1186              ESTABLISHED 10059/ndb_mgmd
tcp        0      0 192.168.0.118:1186          192.168.0.221:2689          ESTABLISHED 10059/ndb_mgmd
tcp        0      0 127.0.0.1:1186              127.0.0.1:34878             ESTABLISHED 10059/ndb_mgmd
tcp        0      0 192.168.0.118:1186          192.168.0.146:57511         ESTABLISHED 10059/ndb_mgmd
tcp        0      0 192.168.0.118:1186          192.168.0.118:47502         ESTABLISHED 10059/ndb_mgmd
tcp        0      0 192.168.0.118:1186          192.168.0.118:47503         ESTABLISHED 10059/ndb_mgmd
tcp        0      0 192.168.0.118:1186          192.168.0.118:47504         ESTABLISHED 10059/ndb_mgmd
tcp        0      0 192.168.0.118:1186          192.168.0.221:2356          ESTABLISHED 10059/ndb_mgmd
tcp        0      0 192.168.0.118:1186          192.168.0.221:2355          ESTABLISHED 10059/ndb_mgmd
tcp        0      0 192.168.0.118:1186          192.168.0.146:34588         ESTABLISHED 10059/ndb_mgmd


数据和SQL节点:

[root@node1 data]# netstat -anp | grep 192.168.0.146
tcp        0      0 192.168.0.221:1284          192.168.0.146:51311         ESTABLISHED 3053/mysqld
tcp        0      0 192.168.0.221:4182          192.168.0.146:42435         ESTABLISHED 2714/ndbd
tcp        0      0 192.168.0.221:1545          192.168.0.146:55286         ESTABLISHED 2714/ndbd
tcp        0      0 192.168.0.221:2356          192.168.0.118:1186          ESTABLISHED 2714/ndbd
tcp        0      0 192.168.0.221:2355          192.168.0.118:1186          ESTABLISHED 2714/ndbd
tcp        0      0 192.168.0.221:1284          192.168.0.146:51311         ESTABLISHED 3053/mysqld


10. 测试
严重注意:所有建表语句的TYPE=MyISAM必须替换为ENGINE=NDBCLUSTER,mysql文档说明如下:
对于将成为簇数据库组成部份的每个表,均需要为其定义执行上述操作。完成该任务的最简单方法是,简单地在world.sql文件上执行“查找-替换”,并用ENGINE=NDBCLUSTER替换所有的TYPE=MyISAM实例。
每个NDB表必须有一个主键。如果在创建表时用户未定义主键,NDB簇存储引擎将自动生成隐含的主键
10.1 建库同步测试
146节点

 mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| ndb_2_fs           |
| test               |
+--------------------+
4 rows in set (0.00 sec)
mysql> create database clustertest;
Query OK, 1 row affected (0.34 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| clustertest        |
| mysql              |
| ndb_2_fs           |
| test               |
+--------------------+
5 rows in set (0.00 sec)


221节点验证

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| clustertest        |
| mysql              |
| ndb_3_fs           |
| test               |
+--------------------+
5 rows in set (0.00 sec)


10.2建表插入数据测试

221节点

mysql> use clustertest;
Database changed
mysql> CREATE TABLE test (i INT) ENGINE=NDBCLUSTER;
Query OK, 0 rows affected (0.69 sec)
mysql> INSERT INTO test () VALUES (233);
Query OK, 1 row affected (0.02 sec)
mysql> select * from test;
+------+
| i    |
+------+
|  233 |
+------+
1 row in set (0.00 sec)


146节点验证、建表和插入数据

mysql> use clustertest;
Database changed
mysql> select * from test;
+------+
| i    |
+------+
|  233 |
+------+
1 row in set (0.03 sec)
mysql> INSERT INTO test () VALUES (232);
Query OK, 1 row affected (0.01 sec)
mysql> select * from test;
+------+
| i    |
+------+
|  233 |
|  232 |
+------+
2 rows in set (0.04 sec)
mysql> CREATE TABLE City (
-> ID int(11) NOT NULL auto_increment,
-> Name char(35) NOT NULL default '',
-> CountryCode char(3) NOT NULL default '',
-> District char(20) NOT NULL default '',
-> Population int(11) NOT NULL default '0',
-> PRIMARY KEY  (ID)
-> ) ENGINE=NDBCLUSTER;
Query OK, 0 rows affected (0.93 sec)
mysql> INSERT INTO City VALUES (1,'Kabul','AFG','Kabol',1780000);
Query OK, 1 row affected (0.02 sec)
mysql> SELECT * FROM City;
+----+-------+-------------+----------+------------+
| ID | Name  | CountryCode | District | Population |
+----+-------+-------------+----------+------------+
|  1 | Kabul | AFG         | Kabol    |    1780000 |
+----+-------+-------------+----------+------------+
1 row in set (0.05 sec)


221节点验证

mysql> select * from test;
+------+
| i    |
+------+
|  232 |
|  233 |
+------+
2 rows in set (0.00 sec)
mysql>  SELECT * FROM City;
+----+-------+-------------+----------+------------+
| ID | Name  | CountryCode | District | Population |
+----+-------+-------------+----------+------------+
|  1 | Kabul | AFG         | Kabol    |    1780000 |
+----+-------+-------------+----------+------------+
1 row in set (0.02 sec)


10.3删除表测试

146节点

mysql> use cluster;
Database changed
mysql> show tables;
+-------------------+
| Tables_in_cluster |
+-------------------+
| huzi              |
| test              |
+-------------------+
2 rows in set (0.08 sec)
mysql> drop table huzi;
Query OK, 0 rows affected (0.79 sec)


221节点验证

 mysql> use cluster
Database changed
mysql> show tables;
+-------------------+
| Tables_in_cluster |
+-------------------+
| test              |
+-------------------+
1 row in set (0.01 sec)
mysql>


10.4 删除数据库测试

146节点删除clustertest数据库

mysql> drop database isa1;
Query OK, 0 rows affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cluster            |
| huzi               |
| isa                |
| mysql              |
| test               |
+--------------------+
6 rows in set (0.00 sec)


221节点验证

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cluster            |
| huzi               |
| isa                |
| mysql              |
| test               |
+--------------------+
6 rows in set (0.00 sec)
mysql>


重起

停止

管理节点可以控制所有数据节点的停止

 /usr/local/mysql/bin/ndb_mgm -e shutdown
Connected to Management Server at: localhost:1186
2 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.


11.2启动
管理节点

 /usr/local/mysql/bin/ndb_mgmd -f /etc/config.ini


数据节点

 /usr/local/mysql/bin/ndbd


sql节点可以不重起

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论