我正在创build一个像创build数据库configuration的项目,为mysql实例获取一个只读副本数组,并保持一个打开的连接,并保持其静态在该服务,所以当客户端试图连接一个只读副本比它假设返回不那么忙。
我的问题是应该是什么公式呢?
到目前为止,我只有2个variables,对这个variables的任何改进都是值得欢迎的。
我devise了一个系统,可以在类似的情况下指导查询量。 包括更多的东西可能是有趣的:
我以前给每个资源的重量,然后基本上加起来。 所以从一台服务器,你可能会回来:
memory 50(%) cpu 40(%) disk 4000 (iops, if you know the limit here making it a % is good) ms 300 (msecs average response time)
这个服务器的重量将会是4390(在这里会更糟)。 你可以在这里看到,也许如果CPU不是一个问题,你可以在计算中改变其“权重”,以决定哪个客户端使用的环境更准确。
如何收集这些信息可能会影响收集的频率和可靠性(可能自从您创build最less使用的服务器列表后,某个节点已经死亡)。 一种方法是对每个候选人运行一个报告守护程序,并在获得客户端请求时(可能通过多播)查询它。 报告守护进程可以非常频繁地收集统计信息,以使得决策信息尽可能准确。
目前还不清楚你所生成的configuration是多么短暂,这是分发时的重要考虑因素。 你会长时间连接客户吗? 是否有可能需要断开和重新分配客户端,因为服务器超载? 也许你已经考虑过了。
取决于你是多么短暂,多less你知道的查询,你也可以增加更多的数据的决策指标:
希望有帮助! 这是一个有趣的问题。
你可以用简单的脚本或使用Nagios插件。
check_ping或check_icmp
check_mysql_health ,如下所示:
定义命令{
command_name check_mysql_health
command_line $ USER1 $ / check_mysql_health -t 20 --hostname $ HOSTADDRESS $ --port $ ARG1 $ --username $ ARG2 $ --password $ ARG3 $ --mode $ ARG4 $ --warning $ ARG5 $ --critical $ ARG6 $
}
定义服务{
使用通用服务
host_name mysql_slave
service_description MySQL_threads-connected
check_command check_mysql_health!3306!user!password!threads-connected!30!40
}
定义服务{
使用关键服务
host_name mysql_slave
service_description MySQL_slave-io-running
check_command check_mysql_health!3307!user!password!slave-io-running
contact_groups admin-sms
}
定义服务{
使用关键服务
host_name mysql_slave
service_description MySQL_slave-sql-running
check_command check_mysql_health!3307!user!password!slave-sql-running
contact_groups admin-sms
}