AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-5461

Nicolas Payart's questions

Martin Hope
Nicolas Payart
Asked: 2019-03-07 05:13:23 +0800 CST

MongoDB stepDown 在 PSA 架构中失败

  • 2

我已经使用 3-Member Primary-Secondary-Arbiter Architecture 设置了一个 MongoDB 集群

环境:

  • LXC集装箱
  • Linux Debian 扩展版 (9.8)
  • MongoDB 服务器版本:4.0.6

MongoDB 容器:

  • lxc-mongodb-01(主要)
  • lxc-mongodb-02(二级)
  • lxc-mongodb-03(仲裁者)

复制状态

一切似乎都工作正常并且复制工作正常:

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 

切换失败

但是,当我尝试使用 rs.stepDown() 切换主要/次要时,它会失败并显示“No electable secondary caught up”错误消息:

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 step down.",
    "code" : 262,
    "codeName" : "ExceededTimeLimit",
    "$clusterTime" : {
        "clusterTime" : Timestamp(1551870647, 1),
        "signature" : {
            "hash" : BinData(0,"+/jQR8cG+y/bPtoF7gnv2Pmn2BY="),
            "keyId" : NumberLong("6653042051040411649")
        }
    }
}

请注意,这是一个非生产集群,因此没有正在进行的事务。

来自 server01(主要)的日志:

2019-03-06T12:08:07.709+0100 I ACCESS   [conn17] Successfully authenticated as principal root on admin
2019-03-06T12:10:49.140+0100 I COMMAND  [conn17] Attempting to step down in response to replSetStepDown command
2019-03-06T12:11:19.140+0100 I COMMAND  [conn17] command admin.$cmd appName: "MongoDB Shell" command: replSetStepDown { replSetStepDown: 60.0, secondaryCatchUpPeriodSecs: 30.0, lsid: { id: UUID("8941645a-c582-4353-b216-6e5ee91c08b0") }, $clusterTime: { clusterTime: Timestamp(1551870507, 1), signature: { hash: BinData(0, 484DDC04A03F9CBEDA0E5FA5E4F438F414E43E8F), keyId: 6653042051040411649 } }, $db: "admin" } numYields:0 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 step down." errName:ExceededTimeLimit errCode:262 reslen:385 locks:{ Global: { acquireCount: { r: 2, W: 2 } } } protocol:op_msg 29999ms

来自 server02(辅助)的日志:

2019-03-06T12:10:52.278+0100 I REPL     [replication-1] Restarting oplog query due to error: InterruptedDueToReplStateChange: error in fetcher batch callback :: caused by :: operation was interrupted. Last fetched optime (with hash): { ts: Timestamp(1551870647, 1), t: 8 }[-3124663669138993987]. Restarts remaining: 1
2019-03-06T12:10:52.278+0100 I REPL     [replication-1] Scheduled new oplog query Fetcher source: lxc-mongodb-01:27017 database: local query: { find: "oplog.rs", filter: { ts: { $gte: Timestamp(1551870647, 1) } }, tailable: true, oplogReplay: true, awaitData: true, maxTimeMS: 2000, batchSize: 13981010, term: 8, readConcern: { afterClusterTime: Timestamp(1551870647, 1) } } query metadata: { $replData: 1, $oplogQueryData: 1, $readPreference: { mode: "secondaryPreferred" } } active: 1 findNetworkTimeout: 7000ms getMoreNetworkTimeout: 10000ms shutting down?: 0 first: 1 firstCommandScheduler: RemoteCommandRetryScheduler request: RemoteCommand 6603 -- target:lxc-mongodb-01:27017 db:local cmd:{ find: "oplog.rs", filter: { ts: { $gte: Timestamp(1551870647, 1) } }, tailable: true, oplogReplay: true, awaitData: true, maxTimeMS: 2000, batchSize: 13981010, term: 8, readConcern: { afterClusterTime: Timestamp(1551870647, 1) } } active: 1 callbackHandle.valid: 1 callbackHandle.cancelled: 0 attempt: 1 retryPolicy: RetryPolicyImpl maxAttempts: 1 maxTimeMillis: -1ms
2019-03-06T12:10:52.279+0100 W REPL     [rsBackgroundSync] Fetcher stopped querying remote oplog with error: InvalidSyncSource: Sync source cannot be behind me, and if I am up-to-date with the sync source, it must have a higher lastOpCommitted. My last fetched oplog optime: { ts: Timestamp(1551870647, 1), t: 8 }, latest oplog optime of sync source: { ts: Timestamp(1551870647, 1), t: 8 }, my lastOpCommitted: { ts: Timestamp(1551870647, 1), t: 8 }, lastOpCommitted of sync source: { ts: Timestamp(1551870647, 1), t: 8 }
2019-03-06T12:10:52.279+0100 I REPL     [rsBackgroundSync] Clearing sync source lxc-mongodb-01:27017 to choose a new one.
2019-03-06T12:10:52.279+0100 I REPL     [rsBackgroundSync] could not find member to sync from
2019-03-06T12:10:57.276+0100 I REPL     [SyncSourceFeedback] SyncSourceFeedback error sending update to lxc-mongodb-01:27017: InvalidSyncSource: Sync source was cleared. Was lxc-mongodb-01:27017
2019-03-06T12:11:27.284+0100 I REPL     [rsBackgroundSync] sync source candidate: lxc-mongodb-01:27017
2019-03-06T12:11:27.286+0100 I REPL     [rsBackgroundSync] Changed sync source from empty to lxc-mongodb-01:27017
2019-03-06T12:11:28.833+0100 I NETWORK  [LogicalSessionCacheRefresh] Starting new replica set monitor for np/lxc-mongodb-01:27017,lxc-mongodb-02:27017

来自 server03(仲裁者)的日志:

2019-03-06T12:11:29.428+0100 I NETWORK  [LogicalSessionCacheRefresh] Starting new replica set monitor for np/lxc-mongodb-01:27017,lxc-mongodb-02:27017
2019-03-06T12:11:29.429+0100 I NETWORK  [LogicalSessionCacheRefresh] Starting new replica set monitor for np/lxc-mongodb-01:27017,lxc-mongodb-02:27017

查看文档和一些线程,我尝试调整了一些设置,但没有成功:

replication.enableMajorityReadConcern = false
writeConcernMajorityJournalDefault = false

问题

那么,要使 stepDown 按预期工作,我缺少什么?

编辑 2019 年 7 月 3 日

这是rs.status()主要的输出:

np:PRIMARY> rs.status()
{
    "set" : "np",
    "date" : ISODate("2019-03-07T08:08:17.623Z"),
    "myState" : 1,
    "term" : NumberLong(8),
    "syncingTo" : "",
    "syncSourceHost" : "",
    "syncSourceId" : -1,
    "heartbeatIntervalMillis" : NumberLong(2000),
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(1551946089, 1),
            "t" : NumberLong(8)
        },
        "readConcernMajorityOpTime" : {
            "ts" : Timestamp(1551946089, 1),
            "t" : NumberLong(8)
        },
        "appliedOpTime" : {
            "ts" : Timestamp(1551946089, 1),
            "t" : NumberLong(8)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1551946089, 1),
            "t" : NumberLong(8)
        }
    },
    "members" : [
        {
            "_id" : 0,
            "name" : "lxc-mongodb-01:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 75954,
            "optime" : {
                "ts" : Timestamp(1551946089, 1),
                "t" : NumberLong(8)
            },
            "optimeDate" : ISODate("2019-03-07T08:08:09Z"),
            "syncingTo" : "",
            "syncSourceHost" : "",
            "syncSourceId" : -1,
            "infoMessage" : "",
            "electionTime" : Timestamp(1551870155, 1),
            "electionDate" : ISODate("2019-03-06T11:02:35Z"),
            "configVersion" : 4,
            "self" : true,
            "lastHeartbeatMessage" : ""
        },
        {
            "_id" : 1,
            "name" : "lxc-mongodb-03:27017",
            "health" : 1,
            "state" : 7,
            "stateStr" : "ARBITER",
            "uptime" : 75952,
            "lastHeartbeat" : ISODate("2019-03-07T08:08:16.005Z"),
            "lastHeartbeatRecv" : ISODate("2019-03-07T08:08:17.410Z"),
            "pingMs" : NumberLong(0),
            "lastHeartbeatMessage" : "",
            "syncingTo" : "",
            "syncSourceHost" : "",
            "syncSourceId" : -1,
            "infoMessage" : "",
            "configVersion" : 4
        },
        {
            "_id" : 2,
            "name" : "lxc-mongodb-02:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 75952,
            "optime" : {
                "ts" : Timestamp(1551946089, 1),
                "t" : NumberLong(8)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1551946089, 1),
                "t" : NumberLong(8)
            },
            "optimeDate" : ISODate("2019-03-07T08:08:09Z"),
            "optimeDurableDate" : ISODate("2019-03-07T08:08:09Z"),
            "lastHeartbeat" : ISODate("2019-03-07T08:08:16.008Z"),
            "lastHeartbeatRecv" : ISODate("2019-03-07T08:08:15.798Z"),
            "pingMs" : NumberLong(0),
            "lastHeartbeatMessage" : "",
            "syncingTo" : "lxc-mongodb-01:27017",
            "syncSourceHost" : "lxc-mongodb-01:27017",
            "syncSourceId" : 0,
            "infoMessage" : "",
            "configVersion" : 4
        }
    ],
    "ok" : 1,
    "operationTime" : Timestamp(1551946089, 1),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1551946089, 1),
        "signature" : {
            "hash" : BinData(0,"ZPnNWVwjB1K9jdaSHlnfnmRPqqM="),
            "keyId" : NumberLong("6653042051040411649")
        }
    }
}

这是rs.conf()主要的输出:

np:PRIMARY> rs.conf()
{
    "_id" : "np",
    "version" : 4,
    "protocolVersion" : NumberLong(1),
    "writeConcernMajorityJournalDefault" : false,
    "members" : [
        {
            "_id" : 0,
            "host" : "lxc-mongodb-01:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {

            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 1,
            "host" : "lxc-mongodb-03:27017",
            "arbiterOnly" : true,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 0,
            "tags" : {

            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 2,
            "host" : "lxc-mongodb-02:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 0,
            "tags" : {

            },
            "slaveDelay" : NumberLong(0),
            "votes" : 0
        }
    ],
    "settings" : {
        "chainingAllowed" : true,
        "heartbeatIntervalMillis" : 2000,
        "heartbeatTimeoutSecs" : 10,
        "electionTimeoutMillis" : 10000,
        "catchUpTimeoutMillis" : -1,
        "catchUpTakeoverDelayMillis" : 30000,
        "getLastErrorModes" : {

        },
        "getLastErrorDefaults" : {
            "w" : 1,
            "wtimeout" : 0
        },
        "replicaSetId" : ObjectId("5c545a7d4e358716c8129ac6")
    }
}
mongodb replication
  • 1 个回答
  • 698 Views
Martin Hope
Nicolas Payart
Asked: 2018-01-06 03:15:44 +0800 CST

刷新物化视图后需要分析吗?

  • 9

我们是否应该在运行ANALYZE myview;PostgreSQL 9.6+ 物化视图后运行REFRESH MATERIALIZED VIEW CONCURRENTLY myview;?

还是没用(也许索引统计信息已经在刷新时更新了?)

postgresql statistics
  • 1 个回答
  • 3274 Views
Martin Hope
Nicolas Payart
Asked: 2016-11-16 08:36:54 +0800 CST

查找链接到 PostgreSQL 角色的对象

  • 21

前段时间我创建了一个名为user1 (PostgreSQL 9.4.9) 的 PostgreSQL 用户。

我想删除这个用户。所以我首先撤销了对表、序列、函数、默认权限和所有权的所有权限:

ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM user1;
ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM user1;

REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL TABLES IN SCHEMA public FROM user1;
REVOKE ALL ON ALL FUNCTIONS IN SCHEMA public FROM user1;

REASSIGN OWNED BY user1 TO postgres;

但是,在 2 个数据库中,一个对象似乎仍然与该用户相关联:

postgres=# DROP ROLE user1;
ERROR:  role "user1" cannot be dropped because some objects depend on it
DETAIL:  1 object in database db1
1 object in database db2

它甚至似乎是一个函数:

postgres=# \c db1
You are now connected to database "db1" as user "postgres".
db1=# DROP ROLE user1;
ERROR:  role "user1" cannot be dropped because some objects depend on it
DETAIL:  privileges for function text(boolean)
1 object in database db2

但我无法确定哪个对象拥有或与 user1 相关。

如果我pg_dump -s db1 | grep user1没有结果!它会是一个全局对象吗?

如何识别丢失的对象?

我已经在每个数据库(db1 和 db2)中执行了命令。我不想删除 拥有的对象user1,只想重新分配或删除此用户的授权。

postgresql permissions
  • 3 个回答
  • 47317 Views
Martin Hope
Nicolas Payart
Asked: 2015-06-18 06:58:03 +0800 CST

MariaDB 多源复制 SQL_SLAVE_SKIP_COUNTER

  • 3

当从主服务器执行语句时发生错误时,有时使用 SQL_SLAVE_SKIP_COUNTER 变量来跳过查询的执行很有用,如下所示:

STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;

虽然这适用于主复制线程,但我想知道这如何在 MariaDB 多源复制线程上实现?

replication mariadb
  • 1 个回答
  • 2579 Views
Martin Hope
Nicolas Payart
Asked: 2015-02-04 02:18:37 +0800 CST

禁用/启用触发全部后的参照完整性

  • 4

我想知道在禁用和重新启用外键约束后如何检查表的引用完整性。

例如 :

postgres=# CREATE TABLE main(id serial, id_delta integer, PRIMARY KEY (id));
CREATE TABLE
postgres=# CREATE TABLE delta (id serial, PRIMARY KEY (id));
CREATE TABLE
postgres=# ALTER TABLE main ADD CONSTRAINT fk_main_delta FOREIGN KEY (id_delta) REFERENCES delta (id);
ALTER TABLE

让我们尝试插入一个不尊重 fk_main_delta 的值:

postgres=# INSERT INTO main (id_delta) VALUES (1);
ERROR:  insert or update on table "main" violates foreign key constraint "fk_main_delta"
DÉTAIL : Key (id_delta)=(1) is not present in table "delta".

=> 它在逻辑上失败了,所以我禁用 FK 约束来强制插入:

postgres=# ALTER TABLE main DISABLE TRIGGER ALL;
postgres=# INSERT INTO main (id_delta) VALUES (1);
INSERT 0 1
postgres=# ALTER TABLE main ENABLE TRIGGER ALL;

但是现在,参照完整性不再受到尊重。

postgres=# SELECT * FROM main;
 id | id_delta 
----+----------
  2 |        1
(1 ligne)

那么有没有办法事后检查完整性?

postgresql
  • 2 个回答
  • 3213 Views
Martin Hope
Nicolas Payart
Asked: 2014-12-23 09:56:48 +0800 CST

设置 MariaDB Spider HA

  • 3

我尝试使用 Spider Engine 和 MariaDB 10.0.14 设置高可用性,但我不确定使用什么配置来使其按预期工作。

我想要的是:

  • 在远程服务器 A 上使用 Spider Engine 访问远程表(假设下面的“主服务器”)
  • 如果主服务器 A 宕机 => 访问“备份服务器”B

根据文档,我设置了以下配置:

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 spider_flush_table_mon_cache();


-- Created on 10.2.0.1 (server_main)
CREATE TABLE `np` (
  `s` text
) ENGINE=InnoDB;
INSERT INTO np VALUES ('main');

-- Created on 10.2.0.2 (server_backup)
CREATE TABLE `np` (
  `s` text
) ENGINE=InnoDB;
INSERT INTO np VALUES ('backup');


CREATE TABLE `np` (
  `s` text
) ENGINE=SPIDER COMMENT='wrapper "mysql", srv "server_main server_backup", database "db01", table "np", mbk "2", mkd "2", msi "100 101", link_status "0 0"';

一半时间蜘蛛使用 server_main 和 server_backup:

db_spider =# SELECT * FROM np;
+------+
| s    |
+------+
| main |
+------+
1 row in set (0.00 sec)

db_spider =# Bye
[...]
db_spider =# SELECT * FROM np;
+--------+
| s      |
+--------+
| backup |
+--------+
1 row in set (0.00 sec)

但是如果我停止主 mysqld 实例,它仍然会尝试访问失败的节点:

db_spider =# SELECT * FROM np;
ERROR 1032 (HY000): Can't find record in 'spider_tables'
db_spider =# Bye
[...]
db_spider =# SELECT * FROM np;
+--------+
| s      |
+--------+
| backup |
+--------+
1 row in set (0.00 sec)

也许我配置错误或错过了一些设置?事实上,选项“msi”和“link_status”对我来说不是很清楚......

mariadb high-availability
  • 1 个回答
  • 1512 Views
Martin Hope
Nicolas Payart
Asked: 2014-07-31 08:01:55 +0800 CST

使用 log_bin 变量禁用 MySQL 二进制日志记录

  • 60

一些使用 APT 的 debian 软件包安装的默认 MySQL 配置文件 /etc/mysql/my.cnf 经常设置 log_bin 变量,因此启用了 binlog:

log_bin = /var/log/mysql/mysql-bin.log

当我想在此类安装中禁用二进制日志记录时,当然注释掉 my.cnf 中的行,但我想知道是否有办法通过将 log_bin 显式设置为 OFF 来禁用二进制日志记录,在 debian 样式中,我的意思是像 /etc/mysql/conf.d/myCustomFile.cnf 这样的包含文件,因此默认 my.cnf 不会更改,如有必要,可以通过 apt 轻松更新。

我尝试了“log_bin = 0”、“log_bin = OFF”或“log_bin =”,但没有一个有效......

mysql logs
  • 6 个回答
  • 158423 Views
Martin Hope
Nicolas Payart
Asked: 2014-02-04 02:13:18 +0800 CST

PostgreSQL编码转换错误

  • 0

我有一个 LATIN9 编码的 Postgresql 数据库。

我最近将我的 Web 应用程序 (PHP) 从 iso_8859_15 (latin9) 迁移到了 UTF8。

因此,现在,客户可以在评论表单或联系表单等 Web 表单中指定 UTF-8 字符。

我从 PHP 以 UTF-8 编码打开 PG 连接(PHP 函数 pg_set_client_encoding('UTF8') 左右......)

这对于像“éàù”这样的标准字符很有效...... PG 能够将它们从 UTF-8 转换为 LATIN9(数据库编码)。但是如果有人插入一些外来字符,比如日文字符“日本语”,PostgreSQL 会抛出这样的错误:

ERROR:  character with byte sequence 0xe6 0x97 0xa5 in encoding "UTF8" has no equivalent in encoding "LATIN9"

我知道我应该将我的数据库迁移到 utf8 来解决这个问题,但由于某些原因,我暂时不能这样做。

就我而言,我宁愿 PostgreSQL 保存我的字符串,删除它无法转换的字符,或者例如用“?”之类的符号替换它们。而不是抛出错误......

我想使事情像这样工作的唯一方法是在 LATIN9 中打开我的连接并使用像这样工作的 utf8_decode() PHP 函数(用“?”符号替换未知字符)

有没有可能以更好的方式做到这一点?也许是一个 PG 参数(但我在 postgresql.conf 中没有看到这样的参数)

或者有人对如何处理这个有其他想法?

谢谢,

postgresql encoding
  • 1 个回答
  • 2236 Views
Martin Hope
Nicolas Payart
Asked: 2013-04-18 00:39:00 +0800 CST

MySQL 基于语句的复制和存储过程

  • 3

当您有一个基于 MySQL 语句的复制并创建一个修改某些行(INSERT、UPDATE、DELETE 命令...)的存储过程时,当您在主服务器上调用此过程时,从服务器上真正复制了什么?CALL 自己或过程中的命令(INSERT、UPDATE、DELETE...)?

例如,创建这样一个过程:

delimiter |

CREATE PROCEDURE myproc ()
      BEGIN

        DELETE FROM mytable LIMIT 1;

      END |

delimiter ;

然后调用master:

master> CALL myproc();

=> 它是否复制“CALL myproc()”或“DELETE FROM mytable LIMIT 1”?

mysql replication
  • 1 个回答
  • 3825 Views
Martin Hope
Nicolas Payart
Asked: 2012-07-03 04:28:16 +0800 CST

PostgreSQL 数据类型 text vs varchar 无长度

  • 15

在 PostgreSQL 中,您可以创建一个数据类型不同的列(没有长度精度)或文本,如下所示:

ALTER TABLE test ADD COLUMN c1 varchar;
ALTER TABLE test ADD COLUMN c2 text;

这两种数据类型有区别吗?

文档并不清楚。他们说 :

如果在没有长度说明符的情况下使用字符变化,则该类型接受任何大小的字符串。

[...]

此外,PostgreSQL 还提供了text类型,可以存储任意长度的字符串。

似乎这两种数据类型是等价的,但它并不明确......关于此的更多信息?

谢谢你,尼科

postgresql datatypes
  • 1 个回答
  • 8076 Views
Martin Hope
Nicolas Payart
Asked: 2012-01-03 08:12:42 +0800 CST

Postgresql 9.1 复制延迟

  • 2

我刚刚在 debian 挤压上设置了一个 PostgreSQL 9.1.2 数据库服务器。我在第二台相同的服务器(挤压,PG 9.1.2)上配置了备用服务器(热备用)。

在主服务器上,我设置了这些参数(postgresql.conf):

wal_level = hot_standby
archive_mode = on
archive_command = 'test ! -f /mnt/pg_replication/myserver/%f && cp %p /mnt/pg_replication/myserver/%f'
archive_timeout = 30
max_wal_senders = 3
wal_keep_segments = 100

在从站上,我设置了以下参数(postgresql.conf):

hot_standby = on

在从属 (recovery.conf) 上:

standby_mode = 'on'
primary_conninfo = 'host=master_ip port=5432 user=repluser password=xxxx'
restore_command = 'pg_standby -d -s 2 -r 30 -t /tmp/pgsql.trigger.5442 /mnt/pg_replication/myserver/ %f %p %r 2>>/var/log/standby.log'
recovery_end_command = 'rm -f /tmp/pgsql.trigger.5442'
archive_cleanup_command = '/usr/lib/postgresql/9.1/bin/pg_archivecleanup /mnt/pg_replication/myserver/ %r'

这很好用,但我注意到复制延迟可能需要 1 分钟。有没有办法将更改应用到备用服务器的延迟减少到几秒钟?我将 archive_timeout 减少到 30 秒,但我不知道这是否是加快复制速度的正确方法......

另一个问题:如何监控两台服务器之间的复制延迟?我在主服务器上尝试了以下查询,但它返回 0 行... :-?

postgres=# SELECT * from pg_stat_replication;
(Aucune ligne)

我错过了什么吗?

谢谢你,尼古拉斯

编辑 2012-01-03:我将 recovery.conf 更改为此,现在运行良好:

restore_command = 'cp /mnt/pg_replication/myserver/%f %p'
standby_mode = on
primary_conninfo = 'host=master_ip port=5432 user=repluser password=xxxx
application_name=mycluster'
trigger_file = '/tmp/trig_mycluster'
postgresql
  • 1 个回答
  • 3036 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve