Management管理节点和DataNote节点都不开启mysql服务,只有MysqlServer节点开启。The default port for Cluster management nodes is 1186; the default port for data nodes is 2202.
mysql集群技术 mysql4.1.13
Submitted by root on 2008, March 14, 3:15 PM. 数据库类
mysql集群技术
1 环境描述
Mysql manager 节点: 192.168.0.1
MysqlServer节点: 192.168.0.100
Mysql 节点: 192.168.0.160
Mysql 节点: 192.168.0.161
说明:至少需要四台服务器才可以做mysql的集群。建议5台,再增加一台MysqlServer。
2 安装mysql二进制包
2.1 安装之前的准备工作
下载mysql-max-4.1.13-pc-linux-gnu-i686.tar.gz包
(注意:可以做集群的mysql都是mysql-max的,下载地点www.mysql.org)
#groupadd mysql
#useradd -g mysql mysql
#cd /usr/local
#tar xfz mysql-max-4.1.13-pc-linux-gnu-i686.tar.gz
#ln -s /usr/local/mysql-max-4.1.13-pc-linux-gnu-i686 /opt/mysql4.1.13
2.2 分别在manager,server,node节点上安装二进制的mysql包
#cd mysql4.1.13
#scripts/mysql_install_db --user=mysql (必须带目录执行,否则出错)
#chown -R root /opt/mysql4.1.13
#chgrp -R mysql /opt/mysql4.1.13
#chown -R mysql.mysql /opt/mysql4.1.13/data
#cp support-files/mysql.server /etc/rc.d/init.d/ 配置mysql启动设置
#chmod +x /etc/rc.d/init.d/mysql.server
#chkconfig --add mysql.server
3 配置server,note节点
在192.168.0.160和192.168.0.161机器上
# ./mysql –help 该命令可以查看mysql启动时是怎么寻找my.cnf文件的顺序。
Default options are read from the following files in the given order:
/etc/my.cnf /usr/local/mysql-max-4.1.13/data/my.cnf ~/.my.cnf
# cp support-files/my-medium.cnf data/my.cnf 将mysql的配置文件考到data下
Vi /usr/local/mysql-max-4.1.13-pc-linux-gnu-i686/data/my.cnf
[MYSQLD]
ndbcluster
ndb-connectstring=192.168.0.1
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.1
4 配置Management管理节点
在192.168.0.1机器上
#mkdir /var/lib/mysql-cluster
#cd /var/lib/mysql-cluster
#vi config.ini
[NDBD DEFAULT]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2
# Number of replicas
DataMemory=80M
# How much memory to allocate for data storage
IndexMemory=52M
# How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the "world" database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
[TCP DEFAULT] # TCP/IP options:
portnumber=2202
# This the default; however, you can use any
# port that is free for all the hosts in cluster
# Note: It is recommended beginning with MySQL 5.0 that
# you do not specify the portnumber at all and simply allow
# the default value to be used instead
# Management process options(定义管理节点.)
[NDB_MGMD]
hostname=192.168.0.1
# 管理节点Hostname or IP address of MGM node
datadir=/var/lib/mysql-cluster # Directory for MGM node logfiles
# Options for data node "A"(定义群集数据节点.)
# (one [NDBD] section per data node)
[NDBD]
hostname=192.168.0.160
# 节点Hostname or IP address
datadir=/usr/local/mysql/data
# Directory for this data node's datafiles
# Options for data node "B"(定义群集数据节点.)
[NDBD]
hostname=192.168.0.161
# 节点Hostname or IP address
datadir=/usr/local/mysql/data
# Directory for this data node's datafiles
# SQL node options(定义Sql server节点.)
[MYSQLD]
hostname=192.168.0.100
# SQL节点Hostname or IP address
#datadir=/usr/local/mysql/data # Directory for SQL node's datafiles
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
[NDB_MGMD]:后面不能有任何注释信息,否则提示:
Error line 17: [TCP] Unknown parameter: [NDB_MGMD] # Management process options
Error line 17: Could not parse name-value pair in config file.
[SHM]: Defines shared-memory connections between nodes. 在MySQL 4.1.9之前,这个功能必须使用--with-ndb-shm option编译进去, 从MySQL 4.1.9-max版本开始, it is enabled by default
5 启动mysql集群
5.1 初始化启动mysql集群服务
1)启动MysqlManagement管理节点(192.168.0.1)
#ndb_mgmd -f /var/lib/mysql-cluster/config.ini
2)启动Data Node节点(192.168.0.160,192.168.0.161)
#ndbd --initial
(注意:这个参数只能在第一次启动DataNode节点时使用,因为—initial参数会删除一些ndbd 实例先前创建的所有文件)
3)启动MysqlServer节点(192.168.0.100)
# ./mysql.server start
5.2 重启mysql集群服务
1)启动MysqlManagement管理节点(192.168.0.1)
#ndb_mgmd -f /var/lib/mysql-cluster/config.ini
2)启动Data Node节点(192.168.0.160,192.168.0.161)
#ndbd
3)启动MysqlServer节点(192.168.0.100)
# ./mysql.server start
(注意:Management管理节点和DataNote节点都不开启mysql服务,只有MysqlServer节点开启。The default port for Cluster management nodes is 1186; the default port for data nodes is 2202.)
6 测试集群的效果
6.1 在管理机上查看各节点运行状况
[root@Proxy 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.0.160 (Version: 4.1.13, Nodegroup: 0, Master)
id=3 @192.168.0.161 (Version: 4.1.12, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.1 (Version: 4.1.13)
[mysqld(API)] 1 node(s)
id=4 @192.168.0.100 (Version: 4.1.12)
6.2 模拟写入一个数据库表,各MysqlServer节点是否能够同步
1) 在一个MysqlServer节点上创建数据库world和表,然后看看另一个MysqlServer节点是否也同样可以看到。
答:数据都相同
2) 拔掉一个DataNote节点网线,看看两台MysqlServer节点是否还能正常工作。
答:可以
3) 拔掉两台DataNote节点网线,查看一下MysqlServer节点是否还能正常工作。
答:所有MysqlServer都不能正常工作
7 附件:
以上文档参考mysql官方资料:http://dev.mysql.com/doc/mysql/en/ndbcluster.html
再补一篇
AS2.1+mysql-max-4.1.11
简单使用模型
配置:
管理服务端:192.168.255.10
需要ndb_mgm(控制台),ndb_mgmd(后台程序)两个文件
在当前目录下配置config.ini文件
[NDBD DEFAULT]
NoOfReplicas=2
[NDB_MGMD] #可以写成[MGM]
HostName=192.168.255.10
[NDBD]
HostName=192.168.255.11
DataDir=/usr/local/mysql/data
[NDBD]
HostName=192.168.255.12
DataDir=/usr/local/mysql/data
[MYSQLD]
[MYSQLD]
启动ndb_mgmd程序
mysql1,mysql1: 192.168.255.11,192.168.255.12
两个mysql服务器配置一样
my.cnf配置:
[mysqld] #配置mysqld
ndbcluster
[mysql_cluster] #配置ndbd
ndb-connectstring=192.168.255.10 #MGM地址
启动ndbd [--initial](--initial参数只能在头次启动ndbd,它会清空数据与日志)
动后使用,否则会引起数据丢失)
启动mysql服务
建表时,需加入ENGINE=NDBCLUSTER参数,如
create table x(a int) engine=ndbcluster;
create table x(a int) engine=ndb;
或修改原表
alter table x engine=ndbcluster;
启动关闭:
启动:
必须先起动ndb_mgmd,其次是ndbd, mysqld最好最后启动,否则当ndbd没有启动时将不能访问ndb数据。
关闭:
MGM端:ndb_mgm -e shutdown
Mysqld端: mysql.server stop
备份恢复:
备份:
在MGM端执行 ndb_mgm –e start backup,系统将会将数据分散备份至NDBD端的data/BACKUP目录下。
恢复:
1. 删除原表或数据
2. 关闭NDBD结点服务器上运行的mysqld(如果有的话)
3. 在每一个NDBD端的数据备份文件目录下执行ndb_restore –bx –nx –r –print(-b指备份号,-指节点号,即备份文件中的两个数字。-r指恢复结构,第一个节点要加-m恢复表结构)
4. 启动被关闭的mysqld
mysql的恢复如果执行两遍的话,不会造成数据冲突或重复.
MysqlCluster高级技术
Cluster原理:
Mysqld分三层,一个MGM用于管理配置,m个mysqld给应用程序提供访问,n个ndbd提供集群存储
mysqld的使用方法和普通版本的mysqld使用相同,不过加入的对ndb数据存储的支持。
数据是分散存储在每组ndb节点的,每组中ndb节点的数据相同,每组至少有一个ndbd保持运行状态才能访问数据。(组的分配参看NoOfReplicas参数)。ndb节点间保证数据的同步
备份时,备份数据分散备份至每一个正在运行的ndb节点,所以恢复时需要在每个ndb节点都进行恢复。如果表不存在的话,使用-m参数创建。如果一个 ndb节点数据丢失,可以先备份正在运行的ndb,然后使用ndbd –initial 重建整个cluster,然后使用备份恢复.此方法也可用来扩容.
ndb会对没有主键的用户创建一个隐性主键。
对双机系统, NoOfReplicas建议设为2.
常用命令:
ndb_mgm控制台命令
ndb_mgm [hostname[port]]
show 显示当前状态
node_id start, node_id stop, node_id restart,node_id status 对接点控制
enter single user mod node_id 只允许一个mysqld连接指定的ndb
shutdown 关闭ndb,mgm
start backup,abort backcup 开始/放弃备份
clusterlog off,clusterlog on,clusterlog toggle,clusterlog info 对集群日志的控制
操作系统命令
ndbd ndb节点后台进程
--initial --initial会清空数据和日志,只有当第一次建立cluster或cluster结构发生改变需要重建时才使用
--ostart等待mgm启动后启动
平时不加参数直接执行即可
ndb_restoret 恢复备份
ndb_resore –bx –ny –r –m –print 在备份文件目录下执行,-m只能在第一次执行,如果数据库不存在的话,恢复可以成功,但通过mysqld无法访问,需要重新创建数据库即可。
-b 备份号,
-n 节点号,
-r 恢复数据,
–m 恢复表结构,
--print 打印至标准输出
ndb_delete_all,ndb_desc,ndb_drop_index ,ndb_drop_table, ndb_select_all,ndb_select_count, ndb_show_tables
基本等同于sql操作,但是他们可以看见隐式主键
例:ndb_desc –d test x 察看test数据库中的x表
ndb_waiter 校验cluster节点状态
ndb_cpcd,ndb_test_platform ???
MGM
config.ini详解
# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]
NoOfReplicas=2 #数据被复制的份数,也指明一个组的乘员数
#系统按id从低到高的顺序分组
# TCP/IP options:
[TCP DEFAULT]
portnumber=2202 #服务端口号
# Management process options:
[NDB_MGMD] #简写[MGM]
id= #结点id 1-63,可以不写,自动分配
ExecuteOnComputer= # [computer]一节指定的计算机
LogDestination= # 取值为CONSOLE, SYSLOG, FILE,日志输出到控制台,
# 系统日志或文件 例(??)
# console
# facility=syslog
# filename=cluster.log,maxsize=1000000,maxfiles=6
#
ArbitrationRank=1 #0:不使用仲裁(?)
#1: 高优先级仲裁
#2:低优先级仲裁
#MGM,mysqld节点使用
ArbitrationDelay=0 #毫秒
hostname=192.168.0.10 #MGM节点地址, 不能配置为127.0.0.1或localhost,
#必须是本地实际ip
datadir=/var/lib/mysql-cluster # 日志,pid等文件
# Options for data node "A":
[NDBD] #配置NDB节点,除了hostname,id和ExecuteOnComputer,
#其他共性的参数可以在[NDBD default中指定] ,每个NDB节点都要配一段
id= #1-63 ,可以不写,自动分配
ExecuteOnComputer
Serverport= #连接其它节点使用的端口号,默认动态分配
hostname=192.168.0.30 # Hostname or IP address
datadir=/usr/local/mysql/data #日志,pid等文件
filesystempath=$datadir #日志,撤销日志,数据所存在的位置,推荐/var/lib/mysql-clustere
BackupDataDir=$FileSystemPath/BACKUP #备份文件位置
DataMemory=80M #数据使用内存.用来放数据,ordered index(?)和索引,DUNO信息
IndexMemory=18M #主键,唯一性索引,注意和ordered index区分,最小1M
#使用内存数=(DataMemory+IndexMemory)* NoOfReplicas
MaxNoOfConcurrenttranctions=4096 #所有节点必须设想同值,最大事务并发
MaxNoOfConcuttentOperations=32768 #每个事务处理数据大小
MaxNoOfLocalOperations=1.1*$MaxNoOfConcurrentOperations #
待续…
# Options for data node "B":
[NDBD]
hostname=192.168.255.12 # Hostname or IP address
datadir=/usr/local/mysql/data # Directory for this data node's datafiles
# SQL node options:
[MYSQLD] #配置mysqld节点,每个mysql节点都要配一段,可以不写任何内容,由mgm自动分配
id= #1-63,可以不写,自动分配
ArbitrationRank=0 #0:不使用仲裁
#1: 高优先级仲裁
#2:低优先级仲裁
#MGM,mysqld节点使用
ArbitrationDelay=0 #毫秒
BatchByteSize=32K #转换为全表扫描或根据索引扫描的查询?
BatchSize=64 #最大992
MaxScanBatchSize=256K #16MB
hostname=192.168.0.20 # Hostname or IP address
# (additional mysqld connections can be
# specified for this node for various
# purposes such as running ndb_restore)
对mysqld,ndbd都需要连接字符串用来连接MGM
格式 id,host:port,host,port....
如:nodeid=2,192.168.255.2:1186,192.168.255.3:1186
或192.168.255.2
Mysqld
my.cnf详解
[mysqld]
ndbcluster #使用ndb引擎
skip-ndbcluster #不使用ndb引擎(需要编译支持)
ndb-connectstring=192.168.255.10 #MGM地址
从4.1.8版本开始可以将ndb-connectstring写至[mysql_cluster]段
[mysql_cluster]
ndb-connectstring=192.168.255.10 #MGM地址
Ndb
My.cnf
[mysql_cluster]
ndb-connectstring=192.168.255.10 #MGM地址
nbd.cfg??
Tags: 集群, mysql4, mysql数据库, 数据库, 集群技术
http://hi.baidu.com/sing520/blog ... ebf6fcae51331f.html
mysql集群技术
最新推荐文章于 2022-06-30 09:12:01 发布