标签: database-replication

如何检查 Postgres 10 集群是否正在复制?

我正在编写一个 bash 脚本,以在 Ubuntu trusty 下将我们组织中的 Postgres 服务器从 9.6 升级到 10.4。我已经完成了主升级,但我们在开发、登台和生产中都有实例,有或没有备用服务器。我知道如何升级备用服务器,但我正在努力寻找一种通用方法来确定主服务器是否有备用服务器,如果有,则确定它们的主机名。有人已经这样做了并且可以分享一些关于这方面的信息吗?

postgresql upgrade standby database-replication

3
推荐指数
1
解决办法
6175
查看次数

在 Node.js 项目中实现数据库查询以读取和写入 MySQL 副本的正确方法?

我有一个node.js Express项目,它使用MySQL 5.6数据库和mysql客户端连接到它。项目中没有 ORM,原始查询针对数据库运行。现在,我需要更改代码,将SELECT查询(不在事务内)路由到 MySQL 只读副本。由于我以前从未在任何其他项目上做过类似的事情,所以我想知道这样做的最佳实践是什么(在 Node.js 中)。

我发现该sequelize库具有允许单独指定读取和写入副本的配置选项,然后不同的查询将被路由到不同的数据库,但我没有在客户端库中找到任何执行此操作的选项mysql。我尝试使用sequelize,但似乎对于 RAW 查询不支持此功能。

除此之外,我想知道从架构的角度来看最好的解决方案是什么?目前,我看到的唯一选择是拥有一些具有query方法的数据库包装服务,该服务反过来封装mysql connection.query并根据提供给它的 sql 决定使用哪个数据库连接 - 读取或写入(除非它是事务 - 然后我想一切都应该在同一个数据库中完成)。这是一个相当愚蠢的解决方案,但这是我现在唯一的想法。

有人可以分享一些这方面的经验吗?不仅在 Node.js 项目中 - 欢迎任何架构想法。也许有某种方法可以在请求到达主机之前对其进行代理?感谢您提前的任何答复。

mysql database-replication node.js

3
推荐指数
1
解决办法
2568
查看次数

使用 PgPool 进行 Postgres 的同步与异步流复制

阅读 PgPool 的文档后,我很困惑哪个选项最适合我的用例。我需要一个主数据库实例来服务查询,以及主数据库实例的 1 个或多个副本(备用)用于灾难恢复场景。对我来说非常重要的是,所有成功提交到主节点的事务都保证最终被复制到副本,这样当发生故障转移时,副本数据库实例将拥有直到并包括应用于其的最新事务的所有事务。

在异步复制方面,我在 PgPool 文档中没有看到任何提及是否是这种情况,但是,它确实提到了一些潜在的数据丢失,这对我来说有点太模糊了,无法得出任何结论。

为了防止这种数据丢失,文档建议使用同步流复制,在主节点中提交事务之前,确保所有副本也应用了该更改。因此,这种方法比异步方法慢,但如果没有数据丢失,它是可行的。

同步复制是允许我实现用例的唯一方法吗?还是异步复制也可以实现这一点?另外,异步复制中潜在的数据丢失是什么构成的?

postgresql replication database-replication pgpool

3
推荐指数
1
解决办法
3317
查看次数

SQL Server复制测试

我想编写一个sql脚本来进行基本的冒烟测试,以检查我的服务器上的复制设置是否正确.

我认为针对应该复制的表的一组简单的CRUD操作将实现我所追求的目标,我想工作流将看起来像这样:

  1. INSERT 一行到发布者数据库中的复制表
  2. 等待复制作业运行?
  3. 检查订户数据库中表中是否存在该行

我的问题是,我该如何做第2步?我想我可以通过查看msdb..sysjob*表格查看相关工作上次执行的时间,但我不确定这是解决问题的最佳方法.

sql-server replication sql-server-2008 database-replication

2
推荐指数
1
解决办法
2640
查看次数

Mysql Master Master复制

Server1:xxx.xxx.xxx.xxx

server-id=1 
binlog-do-db=sample 
master-host = xxx.xxx.xxx.xxx 
master-user = someuser 
master-password = somepassword 
master-connect-retry = 60 
relay-log = /var/lib/mysql/slave-relay.log 
relay-log-index = /var/lib/mysql/slave-relay-log.index 
Run Code Online (Sandbox Code Playgroud)

服务器2:xxx.xxx.xxx.xxx

server-id=2 
binlog-do-db = sample 
master-host = xxx.xxx.xxx.xxx 
master-user = someuser 
master-password = somepassword 
master-connect-retry = 60 
relay-log = /var/lib/mysql/slave-relay.log 
relay-log-index = /var/lib/mysql/slave-relay-log.index 
Run Code Online (Sandbox Code Playgroud)

我已经在2台测试服务器上设置了主主机复制配置,我还为服务器上的mysql 3306打开了端口我面临从机连接问题我一直得到

以下错误101021 19:12:23 [错误]从属I/O:错误连接到主服务器'root@xxx.xxx.xxx.xxx:3306' - 重试时间:60次重试:86400,错误代码:1045

服务器1有mysql 5.0.77,服务器2有mysql版本5.1.41

mysql database-replication mysql-error-1045

2
推荐指数
1
解决办法
9863
查看次数

SQL事务复制对事务日志文件有何影响

我正在设置将持续运行的SQL Server事务复制.接收数据的服务器上的此设置的分发服务器

如果连续运行,我是否应该对事务日志文件大小有任何疑虑?

sql sql-server database-replication

2
推荐指数
1
解决办法
1571
查看次数

MSSQL - > MySQL或PostgreSQL数据库复制

我发现自己的情况是其他人必须在某个时候陷入困境.

我们公司运行一个内部基于MSSQL的数据库,我们的网站然后坐在外部服务器上,目前运行MySQL.问题在于两个数据库需要越来越频繁地相互通信.

我们当前的解决方案涉及SSIS包,但它们是临时的并且通常很慢.我们最终经常不得不在我们的实时生产服务器上删除表,然后从内部服务器重建它们.当然这会导致数据不一致,因此我们尝试在高峰时段之外执行这些操作.然而,这导致一些数据从MySQL传输到MSSQL的24小时延迟,然后再将24小时的延迟恢复到MySQL.这些都不是理想的.

我正在寻找的是一个解决方案,允许我们的内部MSSQL服务器和任何可以坐在Linux盒子上的数据库之间的复制,并与PHP很好地配合.正如我所说,我们目前正在运行MySQL,所以我们优先考虑任何包含该解决方案的解决方案,但所有其他建议都会得到很好的接受.

我已经读过某个地方,PostgreSQL是一个vialbe解决方案,但我现在正在努力找到我读到的地方.我已经找到了一些可能有用的工具,例如DBMoto和Slony-I,有没有人在这种情况下有任何经验?

或者,我们是否只是完全咆哮错误的树,我们是否应该尝试将MSSQL集成到我们的PHP环境中?

任何想法或建议都会感激不尽.

非常感谢

php mysql sql-server postgresql database-replication

2
推荐指数
1
解决办法
2174
查看次数

如何设置主从循环数据库复制的时间间隔?

我已成功在我的2个数据库服务器上设置主从复制.我还设置了主服务器以在从服务器上进行复制,并且当主服务器关闭时,主服务器复制的从服务器也可以工作.但是,我无法设置此时间间隔.我尝试使用master_delay以及master_heartbeat_period.这些似乎都没有起作用.

mysql> change master to master_host='192.168.0.2',
-> master_user='master',
-> master_password='masterpass',
-> master_log_file='mysql-bin.000008',
-> master_log_pos=3733
-> master_delay=30;  //to set the time limit for the interval

mysql> change master to master_host='192.168.0.2',
-> master_user='master',
-> master_password='masterpass',
-> master_log_file='mysql-bin.000008',
-> master_log_pos=3733
-> master_heartbeat_period=30;  //to set the time limit for the interval
Run Code Online (Sandbox Code Playgroud)

复制仍然立即发生..任何想法我做错了什么?

mysql setinterval master-slave database-replication

2
推荐指数
1
解决办法
5915
查看次数

用--skip-slave-start启动mysql

我需要使用'--skip-slave-start'选项启动mysql服务器,如教程/文档中所述.

我怎么能做到这一点?

尝试下一个命令不起作用:

service mysql start --skip-slave-start
Run Code Online (Sandbox Code Playgroud)

start:无效选项: - skip-slave-start

mysql>SLAVE START --skip-slave-start;
Run Code Online (Sandbox Code Playgroud)

错误1064(42000):您的SQL语法有错误;

mysql database-replication

2
推荐指数
1
解决办法
1万
查看次数

正在检测增量记录以进行夜间捕获?

我有一个现有的HANA仓库,该仓库没有创建/更新时间戳。我需要生成许多夜间批处理增量文件,以发送到另一个平台。我的问题是如何检测哪些记录是新记录或已更改记录,以便可以在复制过程中捕获这些记录。

有没有办法使用HANA的内置功能来检测新记录/更改记录?

cdc change-data-capture database-replication hana

2
推荐指数
1
解决办法
3851
查看次数