AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-5461

Nicolas Payart's questions

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

O stepDown do MongoDB falha em uma arquitetura PSA

  • 2

Configurei um cluster MongoDB usando uma arquitetura de árbitro primário-secundário de 3 membros

Meio Ambiente:

  • Contêineres LXC
  • Linux Debian Stretch (9.8)
  • Versão do servidor MongoDB: 4.0.6

Contêineres MongoDB:

  • lxc-mongodb-01 (primário)
  • lxc-mongodb-02 (secundário)
  • lxc-mongodb-03 (árbitro)

Status de replicação

Tudo parece funcionar bem e a replicação está funcionando:

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 

Falha na alternância

Mas quando tento alternar primário/secundário usando rs.stepDown(), ele falha com uma mensagem de erro "Nenhum secundário elegível capturado":

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")
        }
    }
}

Observe que este é um cluster de não produção, portanto, não há transação em andamento.

Logs do server01 (primário):

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

Logs do server02 (secundário):

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

Logs do server03 (árbitro):

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

Olhando para a documentação e alguns tópicos, tentei ajustar algumas configurações, sem sucesso:

replication.enableMajorityReadConcern = false
writeConcernMajorityJournalDefault = false

Pergunta

Então, o que estou perdendo para fazer o stepDown funcionar como esperado?

EDITAR 07/03/2019

Aqui está rs.status()a saída do primário:

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")
        }
    }
}

Aqui está rs.conf()a saída do primário:

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 respostas
  • 698 Views
Martin Hope
Nicolas Payart
Asked: 2018-01-06 03:15:44 +0800 CST

Análise necessária após uma atualização de visualização materializada?

  • 9

Devemos executar ANALYZE myview;em uma visão materializada do PostgreSQL 9.6+ depois de executar um REFRESH MATERIALIZED VIEW CONCURRENTLY myview;?

Ou é inútil (talvez as estatísticas do índice já estejam atualizadas na atualização?)

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

Localizar objetos vinculados a uma função do PostgreSQL

  • 21

Algumas vezes criei um usuário do PostgreSQL chamado user1 (PostgreSQL 9.4.9).

Eu quero descartar este usuário. Então, primeiro revogo todas as permissões em tabelas, sequências, funções, privilégios padrão e propriedade também:

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;

No entanto, parece que um objeto permanece vinculado a este usuário em 2 bancos de dados:

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

Até parece ser uma função:

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

Mas não consigo determinar qual objeto pertence ou está relacionado a user1.

Se eu pg_dump -s db1 | grep user1não obtenho resultado! Poderia ser um objeto global?

Como posso identificar o objeto perdido?

Executei os comandos em cada banco de dados (db1 e db2). Não quero descartar objetos pertencentes a user1, apenas quero reatribuir ou remover concessões para este usuário.

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

Replicação de várias fontes do MariaDB SQL_SLAVE_SKIP_COUNTER

  • 3

Quando ocorre um erro em um escravo durante a execução de uma instrução do mestre, às vezes é útil usar a variável SQL_SLAVE_SKIP_COUNTER para pular a execução da consulta, assim:

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

Embora isso funcione para o thread de replicação principal, eu me pergunto como isso é possível em um thread de replicação MariaDB Multi-source?

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

Integridade referencial após desabilitar/habilitar todos os gatilhos

  • 4

Gostaria de saber como verificar a integridade referencial em uma tabela depois de desabilitar e reabilitar as restrições de chave estrangeira.

Por exemplo :

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

Vamos tentar inserir um valor que não respeite 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".

=> falha logicamente, então desativo as restrições FK para forçar a inserção:

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;

Mas agora, a integridade referencial não é mais respeitada.

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

Então, há uma maneira de verificar a integridade depois?

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

Configurando MariaDB Spider HA

  • 3

Tento configurar o High Availability usando o Spider Engine e o MariaDB 10.0.14, mas não tenho certeza de qual configuração usar para que funcione conforme o esperado.

O que eu quero é:

  • Acessando uma tabela remota usando o Spider Engine em um servidor remoto A (digamos "servidor principal" abaixo)
  • Se o servidor principal A estiver inativo => acesse o "servidor de backup" B

Com base na documentação , fiz a seguinte configuração:

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"';

Metade do tempo, o spider usa server_main e 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)

Mas se eu parar a instância principal do mysqld, ela ainda tentará acessar o nó com falha:

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)

Talvez eu tenha configurado incorretamente ou perdido algumas configurações? As opções "msi" e "link_status" não estão muito claras para mim na verdade...

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

Desabilite o log binário do MySQL com a variável log_bin

  • 60

O arquivo de configuração padrão do MySQL /etc/mysql/my.cnf instalado por algum pacote debian usando o APT geralmente define a variável log_bin, então o binlog está habilitado:

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

Quando eu quiser desabilitar o log binário em tal instalação, comente a linha em my.cnf funciona, é claro, mas eu me pergunto se existe uma maneira de desabilitar o log binário configurando explicitamente log_bin para OFF, em um estilo debian, quero dizer em um arquivo incluído como /etc/mysql/conf.d/myCustomFile.cnf, então o padrão my.cnf não é alterado e pode ser facilmente atualizado pelo apt, se necessário.

Eu tentei "log_bin = 0", "log_bin = OFF" ou "log_bin =" mas nenhum funciona...

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

Erro de conversão de codificação PostgreSQL

  • 0

Eu tenho um banco de dados Postgresql na codificação LATIN9.

Recentemente, migrei meus aplicativos da web (PHP) de iso_8859_15 (latin9) para UTF8.

Então, agora, os clientes podem especificar caracteres UTF-8 em formulários da web, como formulário de comentário ou formulário de contato.

Eu abro conexões PG na codificação UTF-8 do PHP (função PHP pg_set_client_encoding('UTF8') ou assim...)

Isso funciona bem para caracteres padrão como "éàù"... PG é capaz de convertê-los de UTF-8 para LATIN9 (a codificação do banco de dados). Mas se alguém inserir algum caractere exótico como caracteres japoneses "日本語" o PostgreSQL lançará um erro como este:

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

Sei que devo migrar meu banco de dados para utf8 para resolver esse problema, mas por alguns motivos, não posso fazer isso no momento.

No meu caso, prefiro que o PostgreSQL salve minha string removendo caracteres que não pode converter ou, por exemplo, substituindo-os por algum símbolo como "?" ao invés de lançar um erro...

A única maneira que encontrei para fazer as coisas funcionarem assim é abrir minhas conexões no LATIN9 e usar a função PHP utf8_decode() que funciona assim (substituindo caracteres desconhecidos pelo símbolo "?")

É possível fazer isso de uma maneira melhor? Talvez um parâmetro PG (mas não vejo tal parâmetro no postgresql.conf)

Ou alguém tem outra ideia de como lidar com isso?

Obrigado,

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

Replicação baseada em instrução MySQL e procedimento armazenado

  • 3

Quando você tem uma replicação baseada em instrução MySQL e cria um procedimento armazenado que modifica algumas linhas (comandos INSERT, UPDATE, DELETE...), o que é realmente replicado no escravo quando você chama esse procedimento no mestre? O próprio CALL ou os comandos (INSERT, UPDATE, DELETE...) dentro do procedimento ?

Por exemplo, crie tal procedimento:

delimiter |

CREATE PROCEDURE myproc ()
      BEGIN

        DELETE FROM mytable LIMIT 1;

      END |

delimiter ;

Então chame o mestre:

master> CALL myproc();

=> ele replica "CALL myproc()" ou "DELETE FROM mytable LIMIT 1"?

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

Tipo de dados PostgreSQL text vs varchar sem comprimento

  • 15

No PostgreSQL você pode criar uma coluna com caracteres de tipo de dados variando (sem precisão de comprimento) ou texto como este:

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

Existe alguma diferença entre esses dois tipos de dados?

A documentação não é clara sobre isso. Eles dizem :

Se a variação de caracteres for usada sem especificador de comprimento, o tipo aceitará strings de qualquer tamanho.

[...]

Além disso, o PostgreSQL fornece o tipo de texto , que armazena strings de qualquer comprimento.

Parece que esses dois tipos de dados são equivalentes, mas não é explícito... Mais informações sobre isso?

Obrigado Nico

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

Atraso na replicação do Postgresql 9.1

  • 2

Acabei de configurar um servidor de banco de dados PostgreSQL 9.1.2 no debian squeeze. Configurei um servidor standby (hot standby) em um segundo servidor idêntico (squeeze, PG 9.1.2).

No master eu defino estes parâmetros (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

No slave, defino os seguintes parâmetros (postgresql.conf):

hot_standby = on

No escravo (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'

Isso funciona bem, mas notei que o atraso da replicação pode levar até 1 minuto. Existe uma maneira de reduzir o atraso para que as alterações sejam aplicadas no modo de espera para alguns segundos? Reduzi archive_timeout para 30 segundos, mas não sei se esse é o caminho certo para tornar a replicação mais rápida ...

Outra pergunta: como posso monitorar o atraso de replicação entre os dois servidores? Eu tentei a seguinte consulta no mestre, mas ela retorna 0 linhas... :-?

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

Eu perdi alguma coisa?

obrigado Nicolas

EDIT 2012-01-03: mudei meu recovery.conf para este e agora está funcionando bem:

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 respostas
  • 3036 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve