我的一位朋友在面试时被问到这个问题。给定两个不同的数据库,一个只执行写入,另一个只执行读取。给定指定的时间延迟,如何保持两者之间的同步。我想补充一点,这些数据库具有相同的架构。
例如:R 是我的读取数据库,W 是我的写入数据库。我想确保读数据库应该是写数据库的副本,说一分钟前。
我在这里热衷的是完成的技术(概念)而不是实现。假设 RDBMS 是 SQL Server。
我尝试使用 Spider Engine 和 MariaDB 10.0.14 设置高可用性,但我不确定使用什么配置使其按预期工作。
我想要的是:
根据文档,我设置了以下配置:
CREATE SERVER server_main
FOREIGN DATA WRAPPER mysql
OPTIONS(
HOST '10.2.0.1',
PORT 3306,
DATABASE 'db01',
USER 'spider',
PASSWORD '123456'
);
CREATE SERVER server_backup
FOREIGN DATA WRAPPER mysql
OPTIONS(
HOST '10.2.0.2',
PORT 3306,
DATABASE 'db01',
USER 'spider',
PASSWORD '123456'
);
INSERT INTO mysql.spider_link_mon_servers
(db_name, table_name, link_id, sid, server)
VALUES
('%', '%', '%', 100, 'server_main'),
('%', '%', '%', 101, 'server_backup');
SELECT …Run Code Online (Sandbox Code Playgroud) Always On 故障转移群集与Always On 可用性组的优势是什么?
Basic Always On Failover Clustering 提供服务器级别的保护,(例如:2 个服务器具有 1 个共享磁盘空间;如果服务器出现故障,它可以利用共享磁盘空间上的另一台服务器)。
Always On Availability Groups 提供磁盘存储灾难恢复和服务器级 HA 保护。它为 2 个服务器提供 2 个共享空间。
那么,Always On Failover Clustering 相对于 Availability Groups 在功能上有什么好处呢?查看图表比较,我没有看到。似乎可用性组更好。
我们使用SQL Server 2016 Enterprise。谢谢。
审查文件:
sql-server high-availability availability-groups disaster-recovery sql-server-2016
我在 SQL Server 2019 中创建了一个 AlwaysOn 并选择了自动播种,但它不会在辅助节点中创建我的数据库,另一方面,如果我手动创建我的数据库,我会给出您的数据库已经存在的错误!解决办法是什么?
sql-server high-availability availability-groups sql-server-2019
我有带有仲裁磁盘的 2 节点 Windows 故障转移群集。SQL 代理不是集群的资源。
我需要在服务器上启用服务代理;为此,我需要将 SQL Agent 设置为离线,运行 tsql 语句,然后简单地将其重新联机。
但是,一旦我停止使用 SSMS 的 SQL 代理,Windows 就会故障转移到一个被动节点。我想,因为 SQL Agent 没有在集群管理器中列为资源,所以我需要从活动节点停止它,进行更改,然后将其重新联机。
问题是:
为什么停止不属于集群的服务会导致集群故障转移?
在我的情况下,停止 SQL Agent 的正确方法是什么?以维护为例
我在我的测试集群上模拟了相同的操作,一切正常,集群没有故障转移。相同的集群结构,但没有仲裁。
更新: 右键单击集群名称本身,我可以在属性类型下看到 SQL 代理。这是否意味着所有这些资源都在集群中,即使它们在“角色”下不可见?
我正在设置一个 SQL Server 可用性组,其中包含集群内的三个同步副本(一个主副本和两个辅助副本)以及来自另一个数据中心的另一个集群的附加异步副本。我需要使用远程集群中异步副本的公共 IP 来公开主副本。
我的目标是使用专门用于远程异步副本的公共 IP 公开主副本。相反,集群中的其他同步副本使用集群中主副本的 DNS 名称与主副本进行通信。
创建可用性组时,我需要指定每个副本的端点 URL。是否可以为 SQL Server 可用性组中的不同副本显式使用主副本的不同端点 URL?我想确保只有远程异步副本使用公共 IP 与主副本进行通信。相反,集群中的其他副本继续使用集群中主副本的 DNS 名称。
示例:创建了三个节点的可用性组,mssql-primary-0 和 mssql-primary-1 是 Kubernetes 集群中的两个 pod,它们使用无头服务(pod 的 DNS 名称)进行通信。mssql-remote-0 pod 来自使用负载均衡器服务的外部 IP 公开的另一个集群。
CREATE AVAILABILITY GROUP [AG1]
WITH (CLUSTER_TYPE = NONE)
FOR REPLICA ON
N'mssql-primary-0'
WITH (
ENDPOINT_URL = N'tcp://mssql-primary-0.headless-service:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
SEEDING_MODE = AUTOMATIC,
FAILOVER_MODE = MANUAL,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
),
N'mssql-primary-1'
WITH (
ENDPOINT_URL = N'tcp://mssql-primary-1.headless-service:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
SEEDING_MODE = AUTOMATIC,
FAILOVER_MODE = …Run Code Online (Sandbox Code Playgroud) 我有只需要在 AlwaysOn 可用性组上的主要副本上的 SQL 作业。最初创建作业时,ServerA 是主要的,后来 ServerB 成为主要的,因此 ServerA 上的作业失败,必须在 ServerB 上手动重新创建作业才能正常运行。
仅在 AlwaysOn 可用性组的主副本上运行作业的方法是什么?
我们目前有一个在 Win 2012 专用服务器上运行的 asp.net 应用程序,带有 SQL 2014 Express 的本地副本。
我们希望添加第二个 Web 服务器并将它们放在 NLB 集群中。但是如何处理 SQL... 该网站严重依赖 SQL 数据库(读取和写入)
我隐约熟悉 SQL 复制、可用性组、日志传送等的形式,并且已经阅读了 StackExchange 上关于同一主题的很多帖子,但我仍然有一些问题。
该站点只有中等流量,但 HA 和 RPO 仍然非常重要。我宁愿有一些停机时间,而不是松散的 1 行 SQL 数据,尽管迁移到此设置的重点是减少停机的机会。
一个适用于 SQL Express 的解决方案将是理想的,SQL Standard 很好,但我不想升级到 SQL Enterprise。
A) 关于在 IIS 服务器上保留 SQL,我有什么选择/建议。我宁愿将 SQL 跨越 2 个以上的 Web 服务器,然后只为 SQL 添加额外的服务器。B) SQL 2016 中是否有任何新功能可以帮助解决这个问题?
虽然我知道这不完全是 DBA 的问题,但我还是会问。有没有办法强制 asp.net 同时写入所有可用的 SQL 数据库,但可以从其中任何一个读取?(有点像 Windows NLB 对所有服务器使用相同的 IP,将更新/插入发布到 SQL IP 会将其写入所有服务器,但查询只会使用第一台回答的服务器的结果?
谢谢你们!
我已经使用 3-Member Primary-Secondary-Arbiter Architecture 设置了一个 MongoDB 集群
一切似乎工作正常,复制工作正常:
np:PRIMARY> rs.printSlaveReplicationInfo()
source: lxc-mongodb-02:27017
syncedTo: Wed Mar 06 2019 12:08:27 GMT+0100 (CET)
0 secs (0 hrs) behind the primary
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用 rs.stepDown() 切换主要/次要时,它失败并显示“没有可选的次要被捕获”错误消息:
np:PRIMARY> rs.stepDown(60, 30)
{
"operationTime" : Timestamp(1551870647, 1),
"ok" : 0,
"errmsg" : "No electable secondaries caught up as of 2019-03-06T12:11:19.140+0100Please use the replSetStepDown command with the argument {force: true} to force node to …Run Code Online (Sandbox Code Playgroud) 我希望通过添加适当的索引来提高在生产中运行的大型 MySQL 数据库的查询性能。我们尝试在实时数据库上添加索引,但这当然会锁定数据库并使我们的应用程序不可用。
我们曾考虑使用更新的索引创建辅助数据库,然后迁移数据库数据。这将涉及一些停机时间。
有没有更好的方法来做到这一点?那不涉及停机时间吗?
预先感谢您的帮助
sql-server ×7
replication ×2
clustering ×1
index ×1
jobs ×1
mariadb ×1
migration ×1
mongodb ×1
mysql ×1
windows ×1