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 / dba / 问题

All perguntas(dba)

Martin Hope
vfclists
Asked: 2023-12-19 04:41:29 +0800 CST

A eliminação de uma tabela do Postgres ocorre em cascata para visualizações materializadas que dependem dela?

  • 5

Entendo que uma visualização regular será inválida se uma tabela da qual ela depende for descartada.

O mesmo se aplica a uma visão materializada?

Eu presumiria que em uma visão materializada, uma vez que os dados foram desacoplados da tabela de origem, deveria ser possível eliminar a tabela, mas avisar ou abortar se for feita uma tentativa de recriar ou atualizar a visão.

Em resumo, uma visão materializada pode ser dissociada de suas tabelas de origem, desde que não haja tentativa de recriá-la?

postgresql
  • 1 respostas
  • 33 Views
Martin Hope
Potter
Asked: 2023-12-19 00:10:10 +0800 CST

Como criar uma pasta dentro do datadir do MySQL sem que o MySQL trate como banco de dados?

  • 7

Por exemplo, precisei criar um diretório chamado ‘backup’ dentro do datadir(temporariamente) para armazenar um arquivo de backup, mas percebi que o MySQL interpreta esse diretório como um banco de dados dentro do MySQL. Isso é seguro? É possível criar um diretório dentro do datadirMySQL sem pensar que é um banco de dados?"

mysql
  • 1 respostas
  • 41 Views
Martin Hope
OrangeDog
Asked: 2023-12-18 23:05:45 +0800 CST

Como re-TOAST dados específicos após alterar a compactação?

  • 8

Depois de mudar default_toast_compressionde pglz para lz4, gostaria de atualizar os dados existentes para a nova compactação mais rápida.

A única maneira parece ser despejar a tabela inteira e recriá-la do zero, o que não é ideal para bancos de dados muito grandes e/ou em uso.

Encontrei este tópico da lista de discussão que sugere que UPDATE tab SET id = idisso aconteceria, mas os testes mostram que nada aconteceu.

postgres=# SHOW default_toast_compression;
 default_toast_compression
---------------------------
 lz4
(1 row)

postgres=# SELECT pg_column_compression(data) FROM pg_largeobject WHERE loid=49946 AND pageno=0;
 pg_column_compression
-----------------------
 pglz
(1 row)

postgres=# UPDATE pg_largeobject SET data=data WHERE loid=49946 AND pageno=0;
UPDATE 1

postgres=# SELECT pg_column_compression(data) FROM pg_largeobject WHERE loid=49946 AND pageno=0;
 pg_column_compression
-----------------------
 pglz
(1 row)
postgresql
  • 1 respostas
  • 100 Views
Martin Hope
datascinalyst
Asked: 2023-12-18 19:04:36 +0800 CST

Alterar server_uuid no MySQL

  • 6

Quero saber se existe alguma maneira de atualizar server_uuid; Estou tentando a replicação mestre-escravo e preciso de um server_uuid diferente.

Para sua informação - não tenho server_uuid em meu arquivo my.cnf e quando o atualizo assim:

mysql> SET GLOBAL server_uuid = '1';

Estou tendo o erro a seguir:

ERROR 1238 (HY000): Variable 'server_uuid' is a read only variable
mysql
  • 1 respostas
  • 19 Views
Martin Hope
Neaj Morshad
Asked: 2023-12-18 02:08:08 +0800 CST

Posso usar URLs de endpoint diferentes para a réplica primária em um Grupo de Disponibilidade do SQL Server?

  • 8
Esta questão foi migrada do Stack Overflow porque pode ser respondida no Stack Exchange de administradores de banco de dados. Migrado há 10 dias .

Estou configurando um Grupo de Disponibilidade do SQL Server com três réplicas síncronas em um cluster (uma primária e duas secundárias) e uma réplica assíncrona adicional de outro cluster em outro data center. Preciso expor a réplica primária usando um IP público para a réplica assíncrona no cluster remoto.

Meu objetivo é expor a réplica primária com um IP público especificamente para a réplica assíncrona remota. Por outro lado, as outras réplicas síncronas no cluster comunicam-se com a réplica primária usando o nome DNS da réplica primária no cluster.

Ao criar um Grupo de Disponibilidade, preciso especificar a URL do endpoint para cada réplica. É possível usar explicitamente URLs de endpoint diferentes da réplica primária para réplicas diferentes em um Grupo de Disponibilidade do SQL Server? Quero garantir que apenas a réplica assíncrona remota se comunique com a primária usando o IP público. Por outro lado, as outras réplicas no cluster continuam a usar o nome DNS da réplica primária no cluster.

Exemplo: grupo de disponibilidade criado de três nós, mssql-primary-0 e mssql-primary-1 são dois pods em um cluster Kubernetes que se comunicam usando serviço headless (nome DNS do pod). O pod mssql-remote-0 é de outro cluster exposto usando o IP externo do serviço do balanceador de carga.

CREATE AVAILABILITY GROUP [AG1]
      WITH (CLUSTER_TYPE = NONE)
      FOR REPLICA ON
      N'mssql-primary-0'
            WITH (
            ENDPOINT_URL = N'tcp://mssql-primary-0.headless-service:5022',
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
               SEEDING_MODE = AUTOMATIC,
               FAILOVER_MODE = MANUAL,
            SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
               ),
      N'mssql-primary-1'
            WITH (
            ENDPOINT_URL = N'tcp://mssql-primary-1.headless-service:5022',
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
               SEEDING_MODE = AUTOMATIC,
               FAILOVER_MODE = MANUAL,
            SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
               ),
      N'mssql-remote-0'
            WITH (
            ENDPOINT_URL = N'tcp://172.232.87.37:5022',
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
               SEEDING_MODE = AUTOMATIC,
               FAILOVER_MODE = MANUAL,
            SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
               );
GO

Quando desejo ingressar no nó remoto (mssql-remote-0), uso este comando.

ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = NONE);

O nó mssql-remote-0 obtém automaticamente o URL do endpoint do nó primário,

ENDPOINT_URL = N'tcp://mssql-primary-0.headless-service:5022'

Existe alguma opção que eu possa fornecer um URL de endpoint diferente da resposta primária (mssql-primary-0), apenas para o nó mssql-remote-0?

Quaisquer informações ou recomendações sobre como alcançar esta configuração serão muito apreciadas.

sql-server
  • 1 respostas
  • 50 Views
Martin Hope
sweetfa
Asked: 2023-12-18 11:57:54 +0800 CST

A atualização do Postgres RDS na AWS falha na atualização da versão principal

  • 6

Tenho tentado atualizar nosso AWS RDS Postgres de 11.22 para 12.17 e/ou 15.5

Em ambos os casos, recebo o seguinte erro no log de erros:

executando: SELECT datname, datalowconn FROM pg_catalog.pg_database Todos os bancos de dados não-template0 devem permitir conexões, ou seja, seu pg_database.database.database deve ser verdadeiro

Ao examinar esses valores após a falha, vejo: insira a descrição da imagem aqui

Então, para onde devo ir a partir daqui?

postgresql
  • 1 respostas
  • 15 Views
Martin Hope
Simon Elms
Asked: 2023-12-18 09:19:43 +0800 CST

Existe alguma maneira de vincular eventos "iniciais" e "concluídos"?

  • 6

No SQL Server Extended Events, existe alguma maneira de vincular um evento "inicial", como rpc_starting, com um evento "concluído", como rpc_completed? Por exemplo, existe algo como um ID de correlação que identificaria exclusivamente uma chamada para o SQL Server?

Gostaria de consultar os eventos registrados para obter o horário de início de uma chamada, de rpc_starting, e sua duração, de rpc_completed. Até agora não encontrei nenhuma maneira de vincular exclusivamente o início e o fim da mesma chamada.

Achei que a request_idação poderia funcionar, mas parece resultar em 0 para os eventos que observei.

sql-server
  • 2 respostas
  • 48 Views
Martin Hope
Just a learner
Asked: 2023-12-18 01:58:17 +0800 CST

Noções básicas sobre grupos de disponibilidade do SQL Server: propagação automática de bancos de dados

  • 7

Estou investigando os Grupos de Disponibilidade (AGs) do SQL Server e me deparei com um recurso fascinante que parece simplificar o processo de configuração de réplicas: o conceito de propagação automática. Pelo que entendi, quando configuramos um Grupo de Disponibilidade, há uma opção que permite que um único servidor propague automaticamente nossos bancos de dados. Isso significa que não precisamos fornecer um local compartilhado acessível pelas réplicas primária e secundária para a sincronização inicial dos dados.

O que me intriga é o mecanismo subjacente a esse recurso. Como exatamente o SQL Server replica o banco de dados para minhas réplicas secundárias sem exigir um local de armazenamento compartilhado? Meu pensamento inicial foi que ele poderia utilizar alguma forma de streaming de dados ou operação de restauração de backup nos bastidores.

Alguém com experiência em grupos de disponibilidade do SQL Server poderia esclarecer o processo de propagação automática? Quão confiável é esse método e há alguma advertência ou pré-requisito que devemos estar cientes ao usar a propagação automática para replicação de banco de dados?

Aguardo uma discussão esclarecedora sobre este assunto. Agradecemos antecipadamente por seus insights!

sql-server
  • 1 respostas
  • 44 Views
Martin Hope
Leon
Asked: 2023-12-18 00:19:18 +0800 CST

Posso obter a hora de criação de um banco de dados PostgreSQL?

  • 6

Estou usando o PostgreSQL-13.0.

Existe uma maneira de obter a hora de criação ou a hora da última modificação de um banco de dados?

Obrigado!

postgresql
  • 1 respostas
  • 21 Views
Martin Hope
Sotis
Asked: 2023-12-17 23:09:48 +0800 CST

Por que um usuário usa privilégios de proprietário ao executar um gatilho?

  • 6

Me deparei com uma situação estranha que me deu uma grande dor de cabeça e depois de resolver também gostaria de entender o PORQUÊ.
Basicamente, um usuário tinha todos os privilégios necessários para executar um "gatilho" (na verdade era uma restrição de chave estrangeira com um ON DELETE CASCADE associado) e todos os privilégios em todos os objetos que foram tocados pelo próprio gatilho, MAS quando ele executou o gatilho, ele realmente usou os privilégios de proprietário do objeto e não os seus. O proprietário tinha menos privilégios do que o usuário e por isso ocorreu um erro realmente misterioso.

Entendo que é complicado entender o que quero dizer, então criei um exemplo prático que espero esclarecer. O esquema que criei é um exemplo de brinquedo do tipo spotify, onde existem usuários e artistas, e os usuários têm listas de artistas que seguem.

Execute todas as operações a seguir com um superusuário (apenas para simplificar)

-- ALL DATA
create schema website;

create table public.artists (
    id_artist serial primary key,
    name text not null unique
);

insert into public.artists (name)
values ('Heilung'), ('Rammstain'), ('Iron Maiden');

create table website.users (
    id_user serial primary key,
    email text not null unique
);

insert into website.users (email)
values ('[email protected]'), ('[email protected]');

create table website.users_list (
    id_user int not null,
    id_artist int not null,
    CONSTRAINT user_fk FOREIGN KEY (id_user) REFERENCES website.users (id_user),
    CONSTRAINT artist_fk FOREIGN KEY (id_artist) REFERENCES public.artists (id_artist) ON DELETE CASCADE);

insert into website.users_list (id_user,id_artist)
values (1,1), (1,2), (1,3), (2,1), (2,3);

-- USERS AND PRIVILEGES

create user jenny with password '123';

create user tommy with password '123';

-- tommy is owner but has zero privileges
alter table website.users_list owner to tommy;

-- jenny is not owner but has all privileges
grant usage, create on schema website to jenny;

grant all on all tables in schema website,public to jenny;

grant usage on all sequences in schema website to jenny;

Em seguida, execute essas consultas usando o usuário Jenny, uma por uma.

--1)
select *
from website.users_list ul;

--2)
select *
from artists a;

--3)
delete from artists 
where id_artist = 3;

A primeira e a segunda consulta funcionam normalmente, pois Jenny pode fazer SELECT em website.users_list e public.artists. Ela obviamente tem privilégio de uso no site do esquema. Mas o terceiro ela não pode fazer. Dá esse erro aparentemente sem sentido.

ERROR: permission denied for schema website

Quando ela faz um DELETE em public.artists, ela na verdade aciona a restrição de chave estrangeira de website.users_list, portanto, todas as linhas relacionadas ao artista com id_artist = 3 devem ser eliminadas de website.users_list. MAS naquele momento ela está usando os privilégios do tommy (dono do site.users_list) que como vimos acima NÃO tem o privilégio de USAGE no esquema do site, dando o erro estranho.

Alguém pode me explicar por que isso acontece? O que o proprietário da tabela tem a ver com a execução de um gatilho onde o usuário tinha todos os privilégios necessários? Acho isso tão confuso e francamente um pesadelo para depurar (infelizmente falo por experiência própria).

postgresql
  • 1 respostas
  • 28 Views
Prev
Próximo

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