我正在调查 MongoDB 是否适合我们的用例。我们有生成日志数据的客户端,并且该数据库的大多数用例都涉及按客户端 ID 和生成日志的时间范围进行查询。
我知道使用日期时间作为分片键将导致所有写入都发送到单个写入器。如果我们使用客户端 ID + 日期的复合分片键,我的理解是否正确,这将跨 N 个实例分发写入,其中 N 是唯一客户端的数量?
我正在调查 MongoDB 是否适合我们的用例。我们有生成日志数据的客户端,并且该数据库的大多数用例都涉及按客户端 ID 和生成日志的时间范围进行查询。
我知道使用日期时间作为分片键将导致所有写入都发送到单个写入器。如果我们使用客户端 ID + 日期的复合分片键,我的理解是否正确,这将跨 N 个实例分发写入,其中 N 是唯一客户端的数量?
免责声明:我以前从未使用过复制,但我正在做所有的研究。没有真正深入了解 MySQL 会使很多文档难以理解。
我们有一个远程服务器和许多“现场”服务器。此应用程序是关键任务,并且由于现场的互联网连接不可靠,现场机器具有该应用程序的全功能实例。现场机器位于各种防火墙之后,通常无法相互访问。我们可以设置 SSH 隧道以允许云数据库与现场数据库进行通信。
这是一个简单的图表:
异步多主复制似乎是我们最好的选择,但大多数文档似乎暗示多源复制仅适用于从属和/或多主复制仅适用于循环和单个主(在这种情况下,云服务器)不能直接复制到多个其他主机。
我是否错误地解释了这一点(只是无法找到有关如何执行此操作的文档),或者是这种情况吗?如果是这样,是否有我们可以使用的第 3 方软件包,如 Tungsten 或 Galera?不过,我们更愿意尽可能使用 vanilla MySQL。
编辑澄清:这是我发现的描述 2-master 设置的 my.cnf 部分。我想在云服务器上设置 N 个,在现场服务器上每个(云服务器)设置一个。我们希望通过 my.cnf 完成所有操作,并避免使用/编写 mysql shell 命令脚本。
master-host = 192.168.16.4
master-user = replication
master-password = slave
master-port = 3306