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-61066

Happydevdays's questions

Martin Hope
Happydevdays
Asked: 2015-04-02 07:04:09 +0800 CST

redis新手 - 如何在哈希中创建哈希?

  • 16

我想在redis中创建这种类型的结构:(它基本上是json数据)

{
    "id": "0001",
    "name":"widget ABC",
    "model": "model123",
    "service":"standard",
    "admin_password": 82616416,
    "r1":
        {
            "extid":"50000",
            "password":"test123",
        },
    "r2":
        {
            "ext":"30000",
            "password":"test123",
        },
}

到目前为止我已经尝试过:

我试图创建一个没有“子”哈希的哈希,只是为了确保我掌握了基础知识。所以这是我从 redis-cli 开始的:

HMSET widget:1 id 0001 name 'widget ABC' model 'model123' service standard admin_password 82616416
HMSET widget:2 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234

这似乎行得通。我可以看到我在小部件集合中有 2 条小部件数据“记录”。

但是我尝试使用 r1 数据创建记录失败了。

这是我尝试过的:

HMSET widget:3 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234 r1{extid 50000} 

这将创建一个散列键“r1{extid”,散列值为“50000}”

任何建议,将不胜感激。我认为我的问题是我的行话。我只是对 redis 语法知之甚少,不知道在我的谷歌搜索中使用什么词。

也许我只需要像这样“展平”数据:

HMSET widget:3 id 0002 name 'widget ABC' model 'model123' service standard admin_password 12341234 r1_extid 50000 r1_password test123 r2_extid 30000 r2_password test123

谢谢。

nosql redis
  • 2 个回答
  • 20352 Views
Martin Hope
Happydevdays
Asked: 2015-03-31 11:58:25 +0800 CST

postgresql bdr 0.8.x - 添加另一个下游服务器仅部分起作用

  • 2

我有以下 postgresql 9.4 bdr 设置:

  • 带有名为“bdrdemo”的数据库的上游服务器在 10.1.1.1 上运行
  • 下游服务器 (1),数据库名为 bdrdemo,在 10.2.2.2 上运行(用 10.1.1.1 复制)
  • 下游服务器 (2),数据库名为“newname”,在 10.3.3.3 上运行(与 10.1.1.1 一起复制)

当我设置下游服务器 2 时,我故意使用不同的数据库名称来测试数据库名称是否重要。看起来在 10.1.1.1 上运行的 bdrdemo 的所有数据都被正确复制了,但是当我从上游或下游 2 进行新更改时,两者之间没有任何复制。

我在上游服务器的日志中看到一条错误消息:

3 月 30 日 19:44:38 testbox postgres[2745]: [339-1] d= p=2745 a=FATAL: 3D000: 数据库“newname”不存在

到目前为止我检查过的内容:

  1. 我检查了 bdr.bdr_nodes 表,它现在显示 3 个条目,而不是我创建新的下游服务器之前的两个条目。

    select * from bdr.bdr_nodes

    node_sysid      | node_timeline | node_dboid | node_status 
    ---------------------+---------------+------------+-------------
    6127254639323810674 |             1 |      16385 | r
    6127254604756301413 |             1 |      16384 | r
    6132048976759969713 |             1 |      16385 | r
    (3 rows)
    
    bdrdemo=#
    
  2. 上游服务器上的 postgresql.conf 文件具有以下设置:

    #-------------------------------------------                                                                                          
    # BDR connection configuration for upstream                                         
    #-------------------------------------------                                                                   
    
    bdr.connections = 'bdrdownstream,bdrdownstream2'                                
    bdr.bdrdownstream_dsn = 'dbname=bdrdemo host=10.2.2.2 user=postgres port=5432'                              
    bdr.bdrdownstream2_dsn='dbname=newname host=10.3.3.3 user=postgres port=5432'     
    

编辑 1

下游服务器 1 的配置(此服务器/节点正在工作)

# BDR connection configuration for upstream node.                                
#-------------------------------------------                                       

bdr.connections = 'bdrupstream'                                                  

bdr.bdrupstream_dsn = 'dbname=bdrdemo host=10.1.1.1 user=postgres port=5432'  
bdr.bdrupstream_init_replica = on                                           
bdr.bdrupstream_replica_local_dsn = 'dbname=bdrdemo user=postgres port=5432'   

下游服务器 2 的配置(此服务器/节点不工作)

# BDR connection configuration for upstream node.                                
#-------------------------------------------------                              
bdr.connections = 'bdrupstream'                                                
bdr.bdrupstream_dsn = 'dbname=bdrdemo host=10.1.1.1 user=postgres port=5432'
bdr.bdrupstream_init_replica = on                                              
bdr.bdrupstream_replica_local_dsn = 'dbname=newname user=postgres port=5432'

编辑 2

将本地数据库名称添加到下游 2 的配置后,我重新启动了下游 2 上的数据库。复制无法正常工作。所以我重新启动了上游服务器。还是不行。然后我检查了下游 2 上的日志,我看到了这个:

d=newname p=16791 a=pg_restore NOTICE:  42710: extension "btree_gist" already exists, skipping
d=newname p=16791 a=pg_restore LOCATION:  CreateExtension, extension.c:1208
d=newname p=16791 a=pg_restore NOTICE:  42710: extension "bdr" already exists, skipping
d=newname p=16791 a=pg_restore LOCATION:  CreateExtension, extension.c:1208
d=newname p=16791 a=pg_restore NOTICE:  42710: extension "plpgsql" already exists, skipping
d=newname p=16791 a=pg_restore LOCATION:  CreateExtension, extension.c:1208
d=newname p=16791 a=pg_restore ERROR:  42P07: relation "newtable" already exists
d=newname p=16791 a=pg_restore LOCATION:  heap_create_with_catalog, heap.c:1056
d=newname p=16791 a=pg_restore STATEMENT:  CREATE TABLE newtable (
        id integer NOT NULL,
        fname character varying(60),
        lname character varying(60)
    );



pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 191; 1259 17130 TABLE newtable postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "newtable" already exists
    Command was: CREATE TABLE newtable (
    id integer NOT NULL,
    fname character varying(60),
    lname character varying(60)
);



pg_restore to dbname=newname user=postgres port=5432 fallback_application_name='bdr (6132048976759969713,1,16384,): bdrupstream: init_replica restore' options='-c bdr.do_not_replicate=on -c bdr.permit_unsafe_ddl_commands=on -c bdr.skip_ddl_replication=on -c bdr.skip_ddl_locking=on' failed, aborting
d= p=16780 a=FATAL:  XX000: bdr: /usr/bin/bdr_initial_load exited with exit code 2

当我最初设置 downstream2 时,它确实从上游复制了所有数据,但它只是没有参与新数据/新更改的复制。所以我想我可以理解为什么它在尝试创建已经存在的对象时失败了。但是我是否必须删除订阅者数据库中的数据并重新启动才能使复制工作?

postgresql replication
  • 1 个回答
  • 481 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