我有数十个遗留存储过程,它们在内部创建临时表,用于收集只读应用程序的结果。
我已在 Amazon RDS 中创建了 PostgreSQL 的只读副本,并尝试执行此过程,但失败了,因为它甚至不允许在只读事务中创建临时表。
有什么方法可以以最小的努力解决这个问题?
在我的公司,我们正在寻找将 PostgreSQL 实例复制到另一个数据库的替代方法。在我们的场景中,我们有一个生产PostgreSQL 9.5 数据库服务器,新条目一直在传入,我们必须将它们同步到副本服务器。
但我们面临着一些挑战:
我们研究了几种解决方案,甚至自己编写了,但是我们在副本中存在一致性问题(即一些失败的补丁),以及一些ALTER TABLE无法复制的 s。我们仍然没有想出一种方法来隔离和纠正源代码中的这些问题。
鉴于所有情况,我们正在研究替代方案,并希望听到有类似问题的人的意见。
我想在 Amazon RDS MySQL 数据库实例和 Amazon RDS 外部的 MySQL 实例之间设置复制。
但是 Slave_IO_Running: Connecting 如何解决这个问题?
我已经完成了以下命令。
mysql>CALL mysql.rds_set_external_master ('192.168.xx.xxx', 3306,
'repl2', '111111', 'mysql-bin-changelog.000003', 598, 0);
mysql> CALL mysql.rds_start_replication;
+-------------------------+
| Message |
+-------------------------+
| Slave running normally. |
+-------------------------+
1 row in set (1.01 sec)
Run Code Online (Sandbox Code Playgroud)
我正忙于构建现有数据库的从属。我不希望它在将从属设备与主设备处于相同状态之前为我导入的数据构建 bin 日志。
这主要是为了节省导入 100 G 数据的空间。
mysqldump somelargedb | gzip > /somewhere/withspace/dump/somelargedb.sql.gz
Run Code Online (Sandbox Code Playgroud)
未压缩的此文件在 100 Gb 范围内。压缩后大约为 2Gb
我正在尝试在两个 docker 容器之间设置复制,它们都运行库存的MariaDB 10.3.4 图像(这是目前的最新版本)。当我开始了集装箱,我得到表错误代码1062(重复键)mysql.user的关键localhost-root。从站显然试图mysql.user从主站复制表并失败,因为他们都有root@localhost用户。这似乎与 Docker 无关 - 我想从头开始设置任何主/从对时会出现同样的问题。
如何设置从属设备来复制所有内容?我从头开始,所以我希望奴隶成为(或多或少)主人的完美副本。
这是设置:
我正在从docker-compose.yml文件运行容器:
version: '2'
volumes:
dbdata:
external: false
services:
# the MariaDB database MASTER container
#
database:
image: mariadb:10.3.4
env_file:
- ./env/.env.database
volumes:
- dbdata:/data/db
- /etc/localtime:/etc/localtime:ro
# mount the configuration files in the approriate place
#
- ./database/master/etc/mysql/conf.d:/etc/mysql/conf.d:ro
# mount the SQL files for initialization in a place where the
# database container will look …Run Code Online (Sandbox Code Playgroud) 我一直在玩弄 Postgres 10 逻辑复制,试图了解它并可能将它应用到几个项目中。我观察到了一些我想知道的事情,但我不确定我是否知道足够的术语来正确搜索答案。考虑以下:
我有两台运行 postgres 的机器,它们可以相互访问,并且我有从机器 1(发布者)到机器 2(订阅者)的逻辑复制。然而,我希望改变这种关系——我想让 2 个发布者和 1 个订阅者。
我在它们各自的机器上删除订阅和发布,并在相反的机器上创建它们,所以现在 2 有一个发布,1 有订阅。一切似乎只是花花公子。
问题是,当我在 2 上插入一些东西时,它没有发布到 1。订阅/发布配置正确,似乎正在接收彼此的消息。
我玩了一会儿,发现如果我将要复制的表从 2 截断到 1,那么复制会准确地按预期恢复。这似乎是一个问题。我正在执行此操作的数据库非常小,只有 8 个条目,因此截断表并重新加载它不是问题。但是没有这个可以恢复复制吗?
假设我在初始化发布/复制时可以保证两台机器上的两个表具有完全相同的数据,那么它是否可以正常运行而不必截断订阅者节点上的表?
我对 postgres 的 wiki 页面中提到的数据库复制方法之间的差异感到困惑,哪种最适合正常情况?
热备份/连续归档/日志传送
提供高可用性
http://www.postgresql.org/docs/current/static/warm-standby.html
热备/二进制复制/流复制
用于只读查询
https://wiki.postgresql.org/wiki/Hot_Standby
https://wiki.postgresql.org/wiki/Binary_Replication_Tutorial
PITR
我正在运行两台 postgresql 11 服务器 - 主服务器和从服务器(使用逻辑复制进行设置)。
我面临的问题是,经过数周不间断工作后,今天奴隶与此错误消息不同步:
2019-09-16 07:39:44.332 CEST [30117] ERROR: could not send data to WAL stream: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
2019-09-16 07:39:44.539 CEST [12932] LOG: logical replication apply worker for subscription "logical_from_master" has started
2019-09-16 07:39:44.542 CEST [27972] LOG: background worker "logical replication worker" (PID 30117) exited with exit code 1
Run Code Online (Sandbox Code Playgroud)
我之前确实看到过此错误消息,我的过程是wal_sender_timeout在 master上增加(有关此的更多详细信息:postgresql 中的逻辑复制-“服务器意外关闭了连接”)
那么我想恢复复制但是复制状态卡在追赶上:
2019-09-16 07:39:44.332 CEST [30117] …Run Code Online (Sandbox Code Playgroud) 我在全球多个地区托管一个应用程序(游戏)。性能对此应用程序至关重要,因为它是一款游戏,因此我需要在每个位置托管一个数据库实例来为本地应用程序实例提供服务。
由于我的应用程序的性质,我只能使用 MySQL。
我的主要要求是每个实例都是可写的。我知道在大多数情况下,当涉及到两台服务器修改同一条记录时,这在 MySQL 集群中是一个大问题。
然而,在我的应用程序中这实际上是不可能的;玩家在任何给定时刻只能连接到单个区域,这意味着只有该区域的数据库实例才会读取或写入该玩家的数据。一致性在这里也不重要,最终一致性可以满足我的需求。我只需要确保它最终到达那里。
我以前没有使用过复制,因此我需要一些指导。实现这一点的正确方法是什么?我将如何部署这样的集群?
我正在将数据库移动到新服务器。
新服务器运行 SQL Server 2016,当前服务器运行 SQL Server 2008。
我需要在几周内制定备份/后备计划(以防出现问题 - 我可以将我的应用程序切换回 2008 Server 并继续工作)。
我想知道是否可以启用复制(或替代方案?)并使所有事务/合并在 2008 实例上同步,以便两个数据库都是最新的,以防我需要切换到旧数据库?
由于业务需求,我们必须能够回退到 SQL Server 2008。这是没有商量余地的。
replication ×10
mysql ×4
postgresql ×4
amazon-rds ×3
aws ×2
amazon-ec2 ×1
docker ×1
mariadb ×1
multi-master ×1
mysqldump ×1
sql-server ×1