mysql-cluster(8)——最佳实践

mysql-cluster系列:

  1. mysql-cluster(1)——简介
  2. mysql-cluster(2)——部署
  3. mysql-cluster(3)——集群管理和维护
  4. mysql-cluster(4)——创建内存表和磁盘表
  5. mysql-cluster(5)——jdbc
  6. mysql-cluster(6)——配置详解
  7. mysql-cluster(7)——基准测试
  8. mysql-cluster(8)——最佳实践
  9. mysql-cluster(9)——NDB和InnoDB区别
  10. mysql-cluster(10)——注意事项

本文目录:

  • 1 集群数量
  • 2 MGM节点配置
    • 2.1 config.ini
    • 2.2 关闭mysql服务
  • 3 NDB节点和SQL节点配置
  • 4 其他

1 集群数量

节点 数量
MGM节点 1
NDB节点 >=2
SQL节点 >=1,尽可能多

2 MGM节点配置

2.1 config.ini

配置/opt/mysql/data/config.ini:

[ndb_mgmd default]
DataDir = /opt/mysql/data

[ndbd default]
NoOfReplicas = 2
DataMemory = 2G                                    #每个数据节点中给数据分配的内存         
IndexMemory = 800M                                 #每个数据节点中给索引分配的内存
DataDir = /usr/local/mysql/data
StringMemory = 50
MaxNoOfTables = 4096                               # 表的最大数量
MaxNoOfOrderedIndexes = 2048                       # 有序索引的总数
MaxNoOfUniqueHashIndexes = 1024
MaxNoOfAttributes = 24576                          # 可在集群中定义的属性数量
MaxNoOfTriggers = 10240                            # 触发器的最大数量
MaxNoOfConcurrentTransactions = 409600             # 结点内可能的并发事务数,默认值为 4096。对于所有结点,必须将参数设置为相同的值。
MaxNoOfConcurrentOperations = 3276800              # 同时出现在更新阶段或同时锁定的记录数
# MaxNoOfLocalOperations = 55000
TimeBetweenGlobalCheckpoints = 1000                # 全局检查点操作之间的时间间隔
TimeBetweenEpochs = 100
TimeBetweenWatchdogCheckInitial = 60000
# TransactionBufferMemory = 20M
TimeBetweenLocalCheckpoints = 20                    # 
SchedulerSpinTimer = 400
SchedulerExecutionTimer = 100
RealTimeScheduler = 1
BackupMaxWriteSize = 2M
BackupDataBufferSize = 32M                          # 数据备份缓冲区大小
BackupLogBufferSize = 8M
MaxNoOfExecutionThreads = 4
TransactionDeadLockDetectionTimeOut = 15000         # 放弃事务之前,事务协调器等候另一结点执行查询的时间 
BatchSizePerLocalScan = 512                         # 计算锁定记录的数量
LongMessageBuffer = 16M                             # 在单个结点内和结点之间传递消息的内部缓冲
HeartbeatIntervalDbDb = 15000                       # 每个数据结点发送心跳信号到SQL结点的间隔
HeartbeatIntervalDbApi = 15000
FragmentLogFileSize = 256M                          # 单个REDO日志文件的大小
NoOfFragmentLogFiles = 160                          # 节点REDO日志文件的数量

[mysqld default]

################################################################################################################
#
################################################################################################################

[ndb_mgmd]
NodeId = 1
HostName = 10.5.11.85

################################################################################################################
#
################################################################################################################
[ndbd]
NodeId = 11  
HostName = 10.5.11.86
datadir = /opt/mysql/data
[ndbd]
NodeId = 12
HostName = 10.5.11.87
datadir = /opt/mysql/data

################################################################################################################
# sql节点可以部署在Web应用服务器上,也可以部署在专用的服务器上,也可以和DB部署在同一台服务器上。
# 一般保留3个空sql节点,用于动态添加sql节点。
################################################################################################################

[mysqld]
NodeId = 81
HostName = 10.5.11.86
[mysqld] 
NodeId = 82
HostName = 10.5.11.87
[mysqld]
[mysqld]
[mysqld]

2.2 关闭mysql服务

MGM节点实际上并不需要启动MySQL服务程序,因此建议将mysql服务的自启状态设为关闭:

chkconfig mysql off

3 NDB节点和SQL节点配置

配置/etc/my.cnf:

[MYSQLD]
user=root
character_set_server=utf8
ndbcluster
ndb-connectstring=10.5.11.85
default-storage-engine=ndbcluster
datadir=/opt/mysql/data
basedir=/usr/local/mysql
[MYSQL_CLUSTER]
ndb-connectstring=10.5.11.85

4 其他

尽可能让查询简单,避免数据的跨节点传输;
在各节点之间尽可能使用万兆网络环境互联,以减少数据在网络层传输过程中的延时。

你可能感兴趣的:(数据库,MySQL,Cluster教程)