我知道 SQL Server 支持 Azure 中的弹性池。但是如果 MySQL 支持它,我找不到任何信息。我根本无法在文档中找到任何信息,支持哪些类型的数据库......你能帮我吗,因为我需要尽快提供这些信息?
谢谢
我知道 SQL Server 支持 Azure 中的弹性池。但是如果 MySQL 支持它,我找不到任何信息。我根本无法在文档中找到任何信息,支持哪些类型的数据库......你能帮我吗,因为我需要尽快提供这些信息?
谢谢
我collection_city
在一台服务器上有数据库和表。它有 21 行。我collection_city
在第二台服务器上有数据库和表。它也有 21 行。
他们都有这一行:
tinker=# table collection_city;
id | name | alias | postal_code | region_id
----+---------------+--------------+-------------+-----------
2 | Obrenovac | obrenovac | | 1
该id
列是主键。
我在第一台服务器上创建了一个出版物:
CREATE PUBLICATION tinkerpub FOR ALL TABLES;
tinker=# \dRp[+]
Publication tinkerpub
Owner | All tables | Inserts | Updates | Deletes | Truncates
----------+------------+---------+---------+---------+-----------
postgres | t | t | t | t | t
(1 row)
我在第二台服务器上创建了一个订阅:
CREATE SUBSCRIPTION tinkersub CONNECTION 'dbname=tinker host=192.168.150.5 user=postgres password=test port=5432' PUBLICATION tinkerpub WITH (copy_data = false);
我的发布-订阅过程工作正常,但我在某处读到,在这种情况下,从属服务器应该只读用于手动更新。
但是如果我只在订阅服务器上INSERT
为表运行一个命令collection_city
,我可以看到在订阅服务器的表中添加了一个新行,当然它在发布服务器上不存在。
这是正确的行为吗?对于发布服务器以外的所有修改,订阅服务器不应该是只读的吗?
我当然知道发布服务器应该能够在订阅服务器上执行insert
,update
和delete
语句,但是是否也可以INSERT
在订阅服务器上执行手动语句?不应该以某种方式禁用它吗?
我在一台服务器上有数据库和表 collection_city。它有 21 行。我在第二台服务器上有数据库和表 collection_city。它也有 21 行。
他们都有这一行:
tinker=# table collection_city;
id | name | alias | postal_code | region_id
----+---------------+--------------+-------------+-----------
2 | Obrenovac | obrenovac | | 1
id 列是主键。
我在第一台服务器上创建了 Publication:
CREATE PUBLICATION tinkerpub FOR ALL TABLES;
tinker=# \dRp[+]
Publication tinkerpub
Owner | All tables | Inserts | Updates | Deletes | Truncates
----------+------------+---------+---------+---------+-----------
postgres | t | t | t | t | t
(1 row)
我在第二台服务器上创建了订阅:
CREATE SUBSCRIPTION tinkersub CONNECTION 'dbname=tinker host=192.168.150.5 user=postgres password=test port=5432' PUBLICATION tinkerpub;
但是我看到这样的错误(它试图再次复制 id 为 2 的行???):
2019-06-25 15:51:37.178 CEST [2270] ERROR: duplicate key value violates unique constraint "collection_city_pkey"
2019-06-25 15:51:37.178 CEST [2270] DETAIL: Key (id)=(2) already exists.
2019-06-25 15:51:37.178 CEST [2270] CONTEXT: COPY collection_city, line 1
2019-06-25 15:51:37.181 CEST [21905] LOG: background worker "logical replication worker" (PID 2270) exited with exit code 1
为什么系统试图用完全相同的数据复制已经存在的数据?我看到所有表的错误。我们如何解决这个问题?在订阅过程之前,第二个表是否应该完全为空?但它没有任何意义......为什么我不应该同时填充两个表然后开始复制过程?
我有两台数据库服务器192.168.150.210
,192.168.150.220
并且成功地为逻辑复制创建了发布和订阅。
两台服务器上都修改了 postgresql.conf 文件。
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
在两台服务器上,wal 级别都设置为逻辑。
testha=# show wal_level;
wal_level
-----------
logical
(1 row
pg_hba.conf 文件在两台服务器上都被修改:
在服务器 192.168.150.210
host all all 192.168.150.220/32 md5
在服务器 192.168.150.220
host all all 192.168.150.210/32 md5
使用用户 postgres 我在数据库 testha 上创建了表格文章
\c testha
create table article(idart int primary key,name varchar(10), quantity int);
以防万一我还授予用户 postgres/postgres 对该表的权限
grant all on article to postgres;
我在服务器 192.168.150.210 上创建了发布
CREATE PUBLICATION mypub FOR TABLE article;
我可以看到一切正常:
CREATE SUBSCRIPTION mysub CONNECTION 'dbname=testha host=192.168.150.210 user=postgres password=postgres port=5432' PUBLICATION mypub;
我测试了服务器之间的连接和通信是好的:
psql -h 192.168.150.220 -U postgres -W
psql -h 192.168.150.210 -U postgres -W
我重新启动了服务器,但在日志中我看到了错误:
ERROR: replication slot "mysub" was not created in this database
ERROR: could not start WAL streaming: ERROR: replication slot "mysub" was not created in this database
LOG: background worker "logical replication worker" (PID 30667) exited with exit code 1
我究竟做错了什么。我遵循了多个站点的说明,但没有找到任何其他说明。 https://blog.dbi-services.com/postgresql-10-beta-1-logical-replication/
我在链接http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001978.html?cp=SSEPGG_9上阅读了有关 ROLLFORWARD 选项的信息.7.0%2F3-6-2-4-106但我找不到问题的答案。
我的数据库处于存档模式。
我正在使用DISK
选项LOGARCHMETH1
我在星期一 23:59 进行了完整的在线备份
我有周二、周三和周四的存档日志。例如,假设每天一个:S0000001.LOG 和 S0000002.LOG 和 S0000003.LOG。
在星期五,我有活动日志 S0000004.LOG。
假设仅出于测试目的,我想恢复周一进行的在线备份以及周二、周三、周四和周五提交的所有事务。所以我想恢复周一到周五的一切
我认为通过阅读所有手册,我只需要在恢复后执行ROLLFORWARD TO END OF LOGS
db2 rollforward db maxdb75 to end of logs and complete;
我认为这个命令to end of logs
将包括Archive Logs(S0000001.LOG + S0000002.LOG + S0000003.LOG.)+Active Logs(S0000004.LOG)
但是一位优秀的数据库专家告诉我:“在不指定溢出日志路径的情况下前滚到日志末尾时,只会读取活动日志”
所以我有两个问题:
"to end of logs"
命令的情况下恢复db2 rollforward db maxdb75 to end of logs and complete overflow log path "(/data/archiveLogsPath)";
先感谢您!!!!
我在 2015 年 3 月 3 日 19:20 执行了备份映像的恢复命令:
db2 restore database maxdb71 from "/data/archiveBackup" taken at 20150303192002 without prompting;
然后我尝试将前滚到一个时间点(03.03.2015 21:05)所以这是在备份图像之后:
db2 rollforward db maxdb71 to 2015-03-03-21.05.00.000000 using local time and complete;
但我收到错误:
SQL4970N Roll-forward recovery on database "MAXDB71" cannot reach the
specified stop point (end-of-log or point-in-time) on database partition(s)
"0". Roll-forward recovery processing has halted on log file "S0000189.LOG".
所以喜欢它找不到日志S0000189.LOG。但是此日志存在于存档日志位置(C0000004 当前子文件夹用于存档日志)/data/archive/ctginst1/MAXDB71/NODE0000/C0000004>:
这些是一些存档日志文件的时间戳:
ctginst1 db2iadm1 15765504 2015-03-03 19:22 S0000187.LOG
ctginst1 db2iadm1 16785408 2015-03-03 21:52 S0000188.LOG
ctginst1 db2iadm1 16785408 2015-03-04 00:15 S0000189.LOG
ctginst1 db2iadm1 16785408 2015-03-04 02:32 S0000190.LOG
基本上日志文件 S0000188.LOG 应该是包含 21.05 的事务的文件,对吧?
那么,当我有必要的日志时,为什么我不能进行时间点的前滚呢?我真的对这个前滚选项感到困惑。
当我这样做时db2 rollforward database maxdb71 to end of logs and complete;
,它是成功的,我得到了信息:
Log files processed = S0000187.LOG - S0000188.LOG
如此to end of logs
有效,但为什么我要到某个特定时间点才能执行?
数据库处于存档模式。我们每晚 23:00 都会创建完整的在线备份。我们设置自动删除旧的在线备份和存档日志。
AUTO_DEL_REC_OBJ ON
NUM_DB_BACKUPS 2
REC_HIS_RETENTN 2
在备份文件夹中,我们有两个在线备份,没关系:
Backup1 22.02 23:00
Backup2 23.02 23:00
在存档日志文件夹中,我们有这些日志:
from S0000047.LOG to S0000057.LOG (from 22.02 23:00 to the 23.02 22:41)
from S0000058.LOG to S0000062.LOG (from 23.02 23:00 to this morning 24.02)
这些当然是好的日志。但我注意到我们还有不应该存在的存档日志(21.02 备份后的日志已被删除,所有这些事务都已包含在 22.02 的备份中)。但是我们有存档日志
from S0000037.LOG to S0000046.LOG (from 22.02 01:41 to the 22.02 22:42)
所以那些是不必要的日志。在其他一些客户的其他系统(服务器)上,我们也启用了此清除功能,但我们经常遇到这种情况 - 只有备份和保留这些备份后的存档日志,没有以前的存档日志,但在这个系统上似乎删除所有归档日志延迟 1 天。
为什么我真的认为这不是正常情况(正如我所说,也是基于其他服务器上的经验)
我制作了一个脚本,当实例所有者手动运行它时,它可以成功执行在线备份。脚本如下(最初是两行)。
#!/bin/bash
/opt/ibm/db2/V9.7/bin/db2 backup database maxdb71 online to "/data/archiveBackup"
WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 INCLUDE LOGS WITHOUT PROMPTING;
正如我所说,当我由实例所有者手动执行它时,它可以工作。我把它放在实例所有者 crontab 中。
crontab -l
列出此脚本,并且服务器上的日期/时间是可以的。
为什么脚本在手动运行时运行正常时不执行在线备份?
谢谢
我们想进行在线备份。我看到有一个参数 AUTO_DB_BACKUP。我在 AUTO_DB_BACKUP 的 IBM 链接上阅读了这篇文章 http://www.ibm.com/developerworks/data/library/techarticle/dm-0801ganesan/
但是当在线备份打开时,我仍然看不到这个 AUTO_DB_BACKUP 的用途。
谢谢
DB2 9.7。服务器上的 8GB RAM。目前 BP 有 500 MB(页数*页大小)数据库存在 IOPS 增加的问题。所以我们认为也许应该增加血压。如何估计 BP 所需的大小?有什么推荐吗?也许我想把它放在 1GB 上。什么可能是负面影响?对 BP 来说总是更好吗?
我们有 DB2 9.7。它有将近 30 GB。数据在这个 /opt/IBM/db2data/ctginst1/NODE0000/DB_NAME/Txxxxxx
我注意到白天的每一天(假设由于工作量)数据库都会更改其大小(分区/opt/IBM/db2data)例如使用 26 GB、27 GB、28 GB,然后返回到 26GB。
我注意到在 Linux 上使用 df -h 时。可用空间增长,然后返回到旧值。这怎么可能?这是正常行为吗?此外,只有一个 TABLESPACE 超过 24 GB。其他的更小。他们不应该被平等对待吗?
数据不会从数据库中删除,所以这不是数据库增加/减少的原因!
嗨,有没有一些简单的方法可以找出数据库的每分钟事务值是多少?我应该使用 db2 获取快照吗?我们在 Linux 上使用 DB2 9.7 ESE
先感谢您
也许对于某人来说,这是初学者的问题。我阅读了很多文档并设置:
`LOGPRIMARY 6
LOGSECOND 4
LOGFILSIZ 4096
logarchmeth1 Disk - C:\archive
logpath C:\active`
C:\active 中的日志数为 6,这没问题。但是当前 C:\archive 中的日志数是 40。这怎么可能?我认为 C:\archive 中主要日志的最大数量将是 6,然后是 4 LOGSECOND(如果需要,它们不会预先分配)。
允许的日志空间被破坏,但在 C:\archive 中不断创建新日志。这怎么可能?如果有人可以向我解释这一点,我将不胜感激。通过这种方式,我看不到如何使事务日志满(除非我用完总磁盘空间),因为在 C:\archive 中创建了新日志。
我是初学者,所以对于我没有在互联网上找到答案的简单问题,请见谅enter code here
。
那些文件什么时候会在新的在线备份之后或者什么时候被删除?logarchmeth1 是归档日志的目的地,我将它们设置为 6 作为 PRIMARY,那么我有 40 个日志吗?谢谢