我有一个 mysql 数据库,其中包含一些带有私人信息的表和一些带有公共信息的表。
我只想将包含公共信息的表从一个数据库复制到另一个数据库,确保没有机密信息存储在从属数据库上。
我知道我可以使用replicate-do-table来指定只复制一些表,但我的理解是整个 bin 日志传输到从属。
有没有办法确保只有公共信息被传输到奴隶?
我非常犹豫是否将数据库的另一个副本添加到现有服务器 - 我只是认为现有服务器没有可用容量,无论是 RAM 还是 CPU。
我在实验室中设置了一个 Postgres 数据库 HA 集群。我正在使用 PgPool-II 来管理故障转移。
对于集群本身,我设置了三个相同的 Postgres 9.2 服务器,如下所示:
当服务器 A 出现故障时,服务器 B 接管(这里没有问题)。但是,我需要确保服务器 C 被“重新指向”以从服务器 B 进行流传输。
目前,我正在通过从 B 到 C 进行完整的基本备份来实现这一点 - 它有效,但鉴于两个数据库应该几乎在服务器 A 出现故障时相同......
是否有一种明智的方法可以让服务器 C 在不进行完整基础备份的情况下从服务器 B 开始流式传输?
我不是在寻找黑客来让它工作 - 实验室系统最终将进入生产环境,所以我需要一个可靠的解决方案......
任何建议或指示将是最受欢迎的!
干杯。
我需要将不同的 MySQL 数据库从多个服务器复制到单个从服务器中。如何才能做到这一点?有没有办法定义多个主主机?
我正在阅读 postgresql 复制解决方案,但是,即使我刚刚开始了解它是如何工作的,另一个疑问也出现了。我将使用 postgres 内部复制解决方案,但据我所知,每个事件都将在实现时复制;例如,如果我将一些数据插入主站,它会自动复制到从站......我对吗?
嗯,是这样吗,我正在寻找将此复制安排为被动备份的方法,但问题是,例如,我需要在每个星期一晚上将数据库与当天插入的所有数据一起复制到Amazon EC2 虚拟服务器中的从数据库。我正在考虑使用 cron 作为第一种方法,但阅读 postgres 文档我意识到实际上只配置必要的文件,postgres 为你做...
那么,我怎样才能在需要的时刻安排复制呢?
PD.-时间表可能会有所不同,因此它需要完全通用,而且...我正在使用 Ubuntu 12.04 和 PostgreSQL 9.1,就像在主从中一样。谢谢
我的问题是:如何修复从服务器上损坏的 mysql 复制(错误 1236)?
服务器 1 (192.168.1.105) 服务器 2 (192.168.1.106)
我运行了这些步骤来重新同步:
在主服务器 1 (192.168.1.105) 上:
mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
mysqldump -uroot -p --events --ignore-table=mysql.events --all-databases > /var/backups/mysqldump.sqlscp -p /var/backups/mysqldump.sql root@192.168.1.106:/tmp)在从服务器 1 (192.168.1.106) 上:
mysql -uroot -p < /tmp/mysqldump.sql我仍然在服务器 1 上遇到此错误
Last_IO_Errno: 1236 Last_IO_Error: 从二进制日志读取数据时从主服务器得到致命错误 1236: '无法在二进制日志索引文件中找到第一个日志文件名'
我在 SQL Server 2008 中设置了可更新订阅者的事务复制。它有 3 个订阅者和 1 个发布者。由于与数据库和使用该数据库的应用程序相关的一些错误,我不得不再次设置复制。但是,现在当我尝试更新应用程序中的某个部分时遇到了问题。它没有通过 with update 并给出以下错误:
执行消息:可更新订阅:发布者和订阅者之间的行不匹配。运行分发代理以刷新订阅服务器上的行。可更新订阅:回滚事务。事务在触发器中结束。该批次已中止。方法触发的异常:OnError
更新语句显然没有通过。但是,当我第二次尝试它时,它起作用了。复制工作。一切似乎都是复制。
任何人都可以解释为什么会发生此错误以及我如何解决此问题。我真的很感激你的帮助!...
我正在尝试在两个 SQL Server 2008 R2 数据库之间设置事务复制,无论我尝试什么,它似乎都不起作用,而且我不知道去哪里寻找有关可能发生的事情的更多信息错误的。
我已经通过运行两台服务器上的向导创建了发布和订阅,并且一切似乎都已启动并正在运行 - 我在发布服务器上收到成功消息,表明它已创建发布并将文章添加到发布等。我也订阅订阅数据库成功订阅此发布。复制监视器显示一切正常 - 但即使我在发布数据库中手动添加/修改数据,发布和订阅的同步状态也始终显示为“没有可用的复制事务”。
我尝试从两台服务器中删除复制数据,从备份中删除和重新创建数据库,重新初始化订阅数据库等,但都没有任何乐趣。
任何有关在哪里寻找有关可能发生的事情的更多信息的建议将不胜感激。
我一直在尝试让以前工作的复制开始工作。
我尝试了很多设置,但我似乎无法让它工作。
这是场景。我从目标数据库中删除了所有 FK 约束(称之为 DestDB)。
然后我重新初始化我的复制,当我运行时,我收到这个(去标识化)错误:
ALTER TABLE 语句与 FOREIGN KEY 约束“FK_TableOnlyInDestDB_MyReplicatedTable”冲突。冲突发生在数据库“DestDB”、表“SomeSchema.MyReplicatedTable”、“MyReplicatedTableId”列中。(来源:MSSQLServer,错误号:547)
它让我发疯,因为该数据库中不存在指示的 FK。
现在,我确实从另一个数据库复制了这个数据库(备份和恢复)。所以我唯一能想到的是它以某种方式穿越了溪流。
但这似乎不太可能。
任何想法都会很棒!
注意:这是我运行的查询,以确保我没有 FK(它没有返回任何行):
use DestDB
SELECT f.name AS ForeignKey,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id, fc.parent_column_id) AS ColumnName,
OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS ReferenceColumnName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id
Run Code Online (Sandbox Code Playgroud)
我还检查以确保有问题的 FK 不在源表上(在我从中复制的数据库中)。
我也试过: EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
也试过 Dropping MyReplicatedTable。删除就好了,复制重新创建了它。(但仍然给了我错误。)
我尝试创建一个空数据库作为订阅者。效果很好,所以是 DestDB 中的某些东西导致了问题,但 ERROR 中的 FK 不存在。
首先,我不是 DBA,所以如果这个问题中的任何一个看起来“离题”,请原谅我。
我编写了一个点对点多人游戏(客户端),它连接到多个服务器之一进行匹配。
目前,只有一台服务器(一个 linode,我们称之为服务器 1)运行游戏的自定义匹配流程和 PostgreSQL 8.4(如有必要,我会将其升级到 9.1、9.2 或 9.3)。
匹配过程对所有 SQL 语句异步使用 libpq。语句不太复杂,因此负载平衡不是问题。
我计划添加更多 linode(称为服务器 2、3、4 等),以根据需要运行匹配过程和 PostreSQL。挑战在于我希望为所有客户提供高可用性。如果服务器 1 无法访问,则可以使用服务器 2 代替,访问所有相同的数据。
最初的计划是让所有服务器连接到服务器 1 的数据库并通过 libpq 异步发送 SQL 语句。问题在于,如果服务器 1 暂时离线或无法访问,那么其他所有服务器都将失败。
我能想象的“最简单”的解决方案是让每个服务器完全镜像数据库。如果服务器 1 关闭,客户端可以连接到服务器 2,后者读取和写入其自己的数据库,立即将任何更改复制到服务器 3 和 4,并在服务器 1 重新联机后复制。
以这种方式,每台服务器都将保存数据库的完整“镜像”副本。
在阅读了PostgreSQL 9.3 关于复制的文档的介绍部分后,似乎实现这个解决方案的方法是异步多主复制。(Bucardo 是这里唯一的选择吗?)
我担心异步复制是 SQL 插入。当新客户端第一次玩游戏时,会创建一个玩家数据库条目。如果服务器 2、3、4 在线而服务器 1 离线,如果 2 插入新的玩家行,1、3 或 4 会不会有任何问题?(想象一下 1 重新上线并立即尝试插入另一个玩家行。)
对于上述场景,异步多主节点是正确的方法吗?
或者,是否有我忽略的更简单或更容易的解决方案?也许不需要中间件,而只使用 PostgreSQL 9.3 的内置复制?
我想建立一个大型数据库(200GB)的事务复制。但是当我创建发布者并启动快照代理时,它需要很长时间并且坚持以下消息
进程正在运行,正在等待服务器的响应

但问题是当我看到快照文件夹的大小时,我可以看到它正在增长!但是太慢了。

你对此有什么想法吗?或任何不同的复制方式?如何找到更详细的警告或错误消息?
PS 在我的数据库中有两个图像表,它们占我数据库大小的 98%。当我不将它们包含在我的出版物中时,一切都很好。但是当我包含它们时,我将面临这个问题。
replication ×10
mysql ×3
postgresql ×3
sql-server ×3
amazon-rds ×1
foreign-key ×1
scripting ×1