大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
分布式:
站在用户的角度思考问题,与客户深入沟通,找到桥西网站设计与桥西网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都网站制作、企业官网、英文网站、手机端网站、网站推广、主机域名、网站空间、企业邮箱。业务覆盖桥西地区。
Cobar的分布式主要是通过将表放入不同的库来实现:
1. Cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分
2. Cobar也支持将不同的表放入不同的库
3. 多数情况下,用户会将以上两种方式混合使用
这里需要强调的是,Cobar不支持将一张表,例如test表拆分成test_1, test_2, test_3.....放在同一个库中,必须将拆分后的表分别放入不同的库来实现分布式。
HA:
在用户配置了MySQL心跳的情况下,Cobar可以自动向后端连接的MySQL发送心跳,判断MySQL运行状况,一旦运行出现异常,Cobar可以自动切换到备机工作。但需要强调的是:
1. Cobar的主备切换有两种触发方式,一种是用户手动触发,一种是Cobar的心跳语句检测到异常后自动触发。那么,当心跳检测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,Cobar不会在主机恢复时自动切换回主机,除非备机的心跳也返回异常。
2. Cobar只检查MySQL主备异常,不关心主备之间的数据同步,因此用户需要在使用Cobar之前在MySQL主备上配置双向同步,详情可以参阅MySQL参考手册。
项目上线后浏量很小, 设置主从同步后发现从库产生大量的中继日志, 特别是晚上基本每隔几分钟就会产生一个日志, 查看mysql从库日志发现大量例似下面的信息:
看样子是从库重新连接造成的; 我这主要是因为两个配置项造成的:
slave_net_timeout
MySQL主从复制的时候, 当Master和Slave之间的网络中断,但是Master和Slave无法察觉的情况下(比如防火墙或者路由问题)。Slave会等待slave_net_timeout设置的秒数后,才能认为网络出现故障,然后才会重连并且追赶这段时间主库的数据。
master_heartbeat_period
设置复制心跳的周期,取值范围为0 到 4294967秒。精确度可以达到毫秒,最小的非0值是0.001秒。心跳信息由master在主机binlog日志文件在设定的间隔时间内没有收到新的事件时发出,以便slave知道master是否正常。
默认值为slave_net_timeout的值除以2,设置为0表示完全的禁用心跳。
如果心跳参数master_heartbeat_period大于slave_net_timeout, 且主库当前没有DML/DDL等操作, 就会导致从库每隔slave_net_timeout设置的时间后重新连接主库, 产生一条新的relay_log。
解决方法:在从库上将心跳参数设置成小于slave_net_timeout:
一、定义MySQL Cluster的TCP/IP连接
TCP/IP是MySQL集群用于建立连接的默认传输协议,正常情况下不需要定义连接。可使用“[TCP DEFAULT]”或“[TCP]”进行定义。
1. SendBufferMemory
TCP传输缓存。默认值为 256KB。
2. SendSignalId
通过网络传输消息ID。默认禁止该特性(取值: Y/N或1/0)。
3. Checksum
启用该参数将在所有消息置于发送缓冲之前,为所有参数计算校验和。默认禁止该特性(取值: Y/N或1/0)。
4. ReceiveBufferMemory
指定从TCP/IP Socket接收数据时所使用的缓冲大小。几乎不需要更改该参数的默认值,默认值为64KB。
二、定义数据结点默认行为
NoOfReplicas为必要参数,使用“[NDBD DEFAULT]”进行定义。
1. NoOfReplicas
定义集群中每个表保存的拷贝数,另外还指定结点组的大小。结点组指保存相同信息的结点集合。通常情况下不需要为该参数指定值。NoOfReplicas没有默认值,最大的可能值为 4。
三、定义管理服务器(MGM)
用于配置管理服务器的行为。下面的参数均可以被忽略,如果是这样,将使用其默认值。如果没有定义ExecuteOnComputer或HostName,则会指定为localhost。可使用“[NDB_MGMD]”定义单个管理结点的行为,也可使用“[NDB_MGMD DEFAULT]”定义多个管理结点的默认行为。
1. NodeId
集群中结点的唯一标识,取值 1~63。
2. HostName
指定结点主机名或IP。
3. ExecuteOnComputer
引用在“[COMPUTER]”部分中定义的计算机之一。
4. PortNumber
管理服务器监听端口(默认值: 2202)。
5. LogDestination
结点日志出处理方式,可取下述值:
5.1. CONSOLE
将日志输出到标准输出设备(stdout)。
5.2. SYSLOG:facility=syslog
将日志发送到syslog(系统日志)软设备,可能值:
auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, syslog
, user, uucp, local0, local12~7
5.3. FILE:filename=/var/log/mgmd.log,maxsize=1000000,maxfiles=6
讲日志输出到文件,可指定一下值:
filename:日志文件名称。
maxsize:日志文件最大尺寸,大于该尺寸时自动创建新日志文件。
maxfiles:日志文件最大数量。
6. ArbitrationRank
指定哪个结点扮演决策角色,只有MGM结点和SQL结点可以使用(默认值:1)。通常情况下,应将值设为 1,并将所有SQL结点设为 0,以MGM服务器作为决策程序。可取下述值之一:
0:该结点永远不用作决策。
1:该结点具有高优先级。
2:该结点具有低有限级。
7. ArbitrationDelay
指定管理服务器对决策请求的延迟时间,毫秒为单位,默认为 0。通常情况下不需要改变它。
8. DataDir
保存管理服务器输出文件的位置,包括日志,进程输出文件,以及程序的pid文件。对于日志文件,可通过设置LogDestination的FILE参数覆盖它。
四、定义数据结点(NDBD)
用于配置数据结点的行为。ExecuteOnComputer或HostName为必要参数。对于各种参数,可以使用后缀k、M或G指明单位。使用“[NDBD]”进行定义。
1. NodeId
启动结点时,可在命令行中分配ID(即数据结点ID),也能在配置文件中分配。
2. HostName
指定结点主机名或IP。
3. ExecuteOnComputer
引用在“[COMPUTER]”部分中定义的计算机之一。
4. DataDir
指定存放跟踪文件,日志文件,pid文件以及错误日志的目录。
5. BackupDataDir
指定存放备份的目录,默认为 {FileSystemPath}/BACKUP。
6. DataMemory
指定数据内存,默认值为 80MB,最小值 1MB,无大小限制。
7. IndexMemory
指定索引内存,默认值为 18MB,最小值 1MB,无大小限制。
8. MaxNoOfConcurrentTransactions
用于设定结点内可能的并发事务数,默认值为 4096。对于所有结点,必须将参数设置为相同的值。
9. MaxNoOfConcurrentOperations
设置能同时出现在更新阶段或同时锁定的记录数。默认值为 32768。
10. MaxNoOfLocalOperations
默认情况下,将按照1.1 * MaxNoOfConcurrentOperations计算该参数,它适合于具有很多并发事务,但不存在特大事务的系统。如果需要在某一时间处理特大事务,而且有很多结点,最好通过明确指定该参数以覆盖默认值。
11. MaxNoOfConcurrentIndexOperations
该参数的默认值为8192。只有在极其罕见的情况下,需要使用唯一性哈希索引执行极高的并行操作时,才有必要增大该值。如果确信该集群不需要高的并行操作,可以使用较小的值并节省内存。
12. MaxNoOfFiredTriggers
默认值是4000,它足以应付大多数情况。在某些情况下,如果认为在集群中对并行操作的要求并不高, 甚至还能降低它。
13. TransactionBufferMemory
该参数影响的内存用于跟踪更新索引表和读取唯一索引时执行的操作。该内存用于保存关于这类操作的键和列信息。几乎不需要更改该参数的默认值。
14. MaxNoOfConcurrentScans
该参数用于控制可在集群中执行的并行扫描的数量。默认值为256,最大值为500。
15. MaxNoOfLocalScans
如果很多扫描不是完全并行化的,指定本地扫描记录的数量。
16. BatchSizePerLocalScan
该参数用于计算锁定记录的数量。要想处理很多并发扫描操作,需要这类记录。默认值是64,该值与SQL结点中定义的 ScanBatchSize 关系密切。
17. LongMessageBuffer
用于在单个结点内和结点之间传递消息的内部缓冲。尽管几乎不需要改变它,但它仍是可配置的。默认情况下,它被设置为1MB。
18. NoOfFragmentLogFiles
设置结点的REDO日志文件的大小,默认值为 8。
19. MaxNoOfSavedMessages
设置跟踪文件的最大数,默认值为 25。
20. MaxNoOfAttributes
设置可在集群中定义的属性数量,默认值为 1000,最小值为 32。
21. MaxNoOfTables
设置集群中最大表对象数量。默认值为128,最小值为 8,最大值为 1600。
22. MaxNoOfOrderedIndexes
对于集群中的每个有序索引,会分配一个对象,用于描述索引的内容,以及它的存储片段。在默认情况下,每个如此定义的索引还定义了一个有序索引。每个唯一索引和主键都具有一个有序索引和一个哈希索引。MaxNoOfOrderedIndexes设置有序索引的总数,这是系统任何时候能够使用的有序索引的总数。这个参数的默认值是128。每个结点中的每个索引对象尺寸大约为10KB。
23. MaxNoOfUniqueHashIndexes
对于每个不是主键的唯一索引,会分配一个表,用于将唯一键映射至索引表的主键。在默认情况下,还会为每个唯一索引定义一个有序索引。想要避免这种情况,当定义唯一索引时,你还必须指定“USING HASH”选项。默认值是64。每个结点中的每个索引的尺寸大约为15KB。
24. MaxNoOfTriggers
该参数用于设置集群中触发器的最大数量。
25. LockPagesInMainMemory
对于很多操作系统,能够将进程锁定在内存中,以避免与磁盘的交换。使用它可以确保集群的实时特性。默认情况下,该特性是被禁止的(取值:Y/N或1/0)。
26. StopOnError
出现错误时,该参数指定NDBD进程是退出还是自动重启。默认情况下,该特性是启用的(取值:Y/N或1/0)。
27. Diskless
指定集群为“无磁盘”,意味着不会为表在磁盘上设立检查点,也不会记录任何日志。默认情况下,该特性是被禁止的(取值:Y/N或1/0)。
28. RestartOnErrorInsert
仅当编译为调试版时才能访问该特性。默认情况下,该特性是被禁止的。
29. TimeBetweenWatchDogCheck
指定监控线程检查的间隔。该参数以毫秒为单位,默认值为 4000 毫秒。
30. StartPartialTimeout
该参数指定了在调用集群初始化子程序之前,集群等待所有存储结点出现的时间。默认值为 30000 毫秒(0 表示无限超时)。
31. StartPartitionedTimeout
如果集群做好了启动准备,但仍可能处于隔离状态,集群将等待该超时时间结束。默认值为 60000 毫秒。
32. StartFailureTimeout
如果数据结点在该参数指定的时间内未完成其启动序列,结点启动将失败。如果将该参数设置为0,表示不采用数据结点超时。默认值为 60000 毫秒。
33. HeartbeatIntervalDbDb
每个数据结点发送心跳信号到SQL结点的间隔。默认值为 1500 毫秒。
34. HeartbeatIntervalDbApi
每个数据结点都会向每个MySQL服务器(SQL结点)发送心跳信号,以确保它们依然保持接触。如果一个MySQL服务器没能成功地及时发送一个心跳,那么就会将其声明为“失效”,在这种情况下,所有正在进行的事务都会结束,并且释放所有资源。SQL结点不能重连,直到由先前的MySQL实例所初始化的所有活动都已经结束为止。默认的时间间隔是1500毫秒(1.5秒)单个数据结点之间的这个时间间隔可以是不同的,因为每个数据结点都会监视与其连接的MySQL服务器,与所有其他的数据结点无关。
35. TimeBetweenLocalCheckpoints
该参数默认值为20。
36. TimeBetweenGlobalCheckpoints
该参数定义了全局检查点操作之间的时间间隔。默认值为 2000 毫秒。
37. TimeBetweenInactiveTransactionAbortCheck
该参数默认值为 1000 毫秒。
38. TransactionInactiveTimeout
如果事务目前未执行任何查询,而是等待进一步的用户输入,该参数指明了放弃事务之前用户能够等待的最长时间。默认值为 0。
39. TransactionDeadlockDetectionTimeout
该超时参数指明了放弃事务之前,事务协调器等候另一结点执行查询的时间。
40. NoOfDiskPagesToDiskAfterRestartTUP
该参数指定了执行本地检查点操作的速度,并能与NoOfFragmentLogFiles、DataMemory和IndexMemory一起使用。默认值是 40(每秒3.2MB的数据页)。
41. NoOfDiskPagesToDiskAfterRestartACC
该参数使用的单位与NoOfDiskPagesToDiskAfterRestartTUP的相同。工作方式也类似,但限制的是从索引内存进行的索引页写入速度。该参数的默认值为每秒20个索引内存页(1.6MB每秒)。
42. NoOfDiskPagesToDiskDuringRestartTUP
该参数涉及从数据内存写入的页。默认值是40(3.2MB每秒)。
43. NoOfDiskPagesToDiskDuringRestartACC
该参数默认值是20(1.6MB每秒)。
44. ArbitrationTimeout
指定数据结点等待决策程序对决策消息的回应的时间。默认值为 1000 毫秒。
45. UndoIndexBuffer
指定UNDO索引缓冲区大小。默认值为 2MB,最小值为1MB。
46. UndoDataBuffer
指定UNDO数据缓冲区大小。默认值为 16MB,最小值为1MB。
47. RedoBuffer
指定REDO数据缓冲区大小。默认值为 8MB,最小值为1MB。
48. LogLevelStartup
日志级别,用于进程启动过程中生成的事件。默认级别为 1。
49. LogLevelShutdown
日志级别,用于作为结点恰当关闭进程组成部分而生成的事件。默认级别为 0。
50. LogLevelStatistic
日志级别,用于统计事件,如主键法读取次数、更新数、插入数、与缓冲使用有关的信息等。默认级别为 0。
51. LogLevelCheckpoint
日志级别,用于由本地和全局检查点操作生成的事件。默认级别为 0。
52. LogLevelNodeRestart
日志级别,用于在结点重启过程中生成的事件。默认级别为 0。
53. LogLevelConnection
日志级别,用于由集群结点间的连接生成的事件。默认级别为 0。
54. LogLevelError
日志级别,用于由在整个集群内的错误和警告生成的事件。这类错误不会导致任何结点失败,但仍值得记录。默认级别为 0。
55. LogLevelInfo
日志级别,用于为集群的一般状态信息而生成的事件。默认级别为 0
56. BackupDataBufferSize
指定数据备份缓冲区大小。默认值为 2MB。
57. BackupLogBufferSize
指定日志备份缓冲区大小。默认值为 2MB。
58. BackupMemory
该参数是BackupDataBufferSize和BackupLogBufferSize之和。默认值是2MB + 2MB = 4MB。
59. BackupWriteSize
该参数指定了由备份日志缓冲和备份数据缓冲写入磁盘的消息大小。默认值为 32KB。
60. FileSystemPath
该参数指定了存放为元数据创建的所有文件、REDO日志、UNDO日志和数据文件目录。注意:在ndbd进程启动前,该目录必须已存在。
五、定义MySQL服务器(SQL)
定义用于访问集群数据的MySQL服务器(SQL结点)的行为。可使用“[MYSQLD]”定义单个SQL结点的行为,也可使用“[MYSQLD DEFAULT]”定义多个SQL结点的默认行为。
1. NodeId
集群中结点的唯一标识。取值 1~63。
2. HostName
指定结点主机名或IP。
3. ExecuteOnComputer
引用在“[COMPUTER]”部分中定义的计算机之一。
4. ArbitrationRank
对于正常配置,使用管理服务器作为决策程序。将管理服务器的ArbitrationRank设置为 1(默认),并将所有SQL结点的ArbitrationRank设置为 0。
5. ArbitrationDelay
指定管理服务器对决策请求的延迟时间,以毫秒为单位。默认为 0,通常情况下不需要改变它。
6. BatchByteSize
对于被转换为全表扫描或索引范围扫描的查询来说,以适当大小批量获取记录,可以获得最佳的性能。这个合适的尺寸既可以用记录数量(BatchSize)表示,也可以用字节数量(BatchByteSize)表示。实际的批量尺寸受这两个参数的限制。根据这个参数的设置方法,查询性能最多可以提高40%。该参数以字节为单位,默认值是 32KB。
7. BatchSize
该参数以字节为单位,默认值是 64,最大值为 992。
8. MaxScanBatchSize
指定从各数据结点发送的每批数据的大小,默认值是 256KB,最大值为 16MB。
六、配置文件示例
heartbeat 默认使用udp 694端口进行心跳监测。 如果系统有使用iptables 做防火墙
iptables -I INPUT -p udp --dport 694 -j ACCEPT