我们想将 Cassandra Cluster 数据库从 1 个增加到 3 个。当前的 Cassandra DB 中已经有数据 (50/100 GB)。
我们可以同时添加两个新节点吗?或者我们应该一个一个地添加直到同步完全完成,然后再将第二个新的添加到集群中?
感谢您的帮助和建议。
我们想将 Cassandra Cluster 数据库从 1 个增加到 3 个。当前的 Cassandra DB 中已经有数据 (50/100 GB)。
我们可以同时添加两个新节点吗?或者我们应该一个一个地添加直到同步完全完成,然后再将第二个新的添加到集群中?
感谢您的帮助和建议。
这个问题涉及使用 jsonb 参数中的键更新动态列名称,我的代码基于https://dba.stackexchange.com/users/3684/erwin-brandstetter提供的答案
我正在尝试编写一个通用函数,将数据从 jsonb 记录插入到具有多种数据类型的表中。如何将每个值动态转换为相应列的数据类型?
我正在使用 PostgreSQL 版本 15.2
对该函数的典型调用是:
json_data = '{
"text_field": "Some text",
"numeric_field": 17,
"datetime_field": "2023-04-24 11:06:50.36758-04",
"boolean_field": true
}'
SELECT * FROM insert_jsonb('schema_name', 'table_name', json_data);
我的功能:
CREATE OR REPLACE FUNCTION insert_from_jsonb(
sch_name text,
tbl_name text,
js jsonb,
out new_id uuid;
) AS
$func$
DECLARE
_sql text;
BEGIN
SELECT INTO _sql
'INSERT INTO ' || sch_name || '.' || tbl_name || ' ('
|| string_agg(format('%I', key), ', ') || ') VALUES ('
|| string_agg(format('%L', value), ', ') || ')' -- < how can I cast each value?
|| ' RETURNING uuid'
FROM jsonb_each_text(js);
IF _sql IS NOT NULL THEN
-- RAISE NOTICE '%', _sql; -- uncomment for debugging
EXECUTE _sql INTO new_id; -- comment out for debugging
END IF;
END
$func$ LANGUAGE plpgsql ;
我们为公司的各种客户运行具有多个数据库的 Exadata XM-8。我想将对其中一个数据库的访问限制为一台特定服务器。我知道我可以运行登录触发器并以这种方式限制 IP 地址,但我一直对登录触发器有点害羞。我读过我可以向扫描侦听器添加第二个端口并通过以下命令限制访问。
srvctl modify scan_listener -p “TCP:1521/TCP:1522″
使用端口 1523 添加额外的节点侦听器,例如:srvctl add listener -l LISTENER1523 -p 1523
。
启动新节点侦听器:srvctl start listener -l LISTENER1523
。
使用: 进行双重检查srvctl status listener -l LISTENER1523
。
使用: 进行双重检查lsnrctl status LISTENER1523
。
alter system set local_listener='(DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST="scan address")(PORT=1523))))' scope=BOTH SID='OCRL1';
alter system set remote_listener='scan:1522' scope=BOTH SID='OCRL1';
alter system register;
仔细检查lsnrctl status LISTENER1523
实例是否已注册。
然后在Exadata上的防火墙中我将防火墙设置为限制我想要的服务器对端口1522的访问。
您认为哪一个更好?为什么或者您会做什么?。
在我们的一个客户站点,我实施了高可用性 (HA) 解决方案。但是在备份的过程中,遇到了一个备份环境配置的问题。我们使用 Ola Hallengren 的 Maintenance Solution 脚本配置了备份环境。环境包括不同的 Windows Server 主机名和@@serverproperty,这导致备份过程因此错误而停止
(Message 50000) Source: https://sqlhelps.com [SQLSTATE 01000] (Message 50000) [SQLSTATE 01000] (Message 50000) The @@SERVERNAME does not match SERVERPROPERTY('ServerName'). See https://docs.microsoft.com/en-us/sql/database-engine/install-windows/rename-a-computer-that-hosts-a-stand-alone-instance-of-sql-server. [SQLSTATE 42000] (Error 50000) [SQLSTATE 01000] (Message 50000) Date and time: 2023-04-23 12:46:07 [SQLSTATE 01000] (Message 50000) [SQLSTATE 01000] (Message 50000). The step failed.
为了解决这个问题,我注释掉了如下所示的 T-SQL 脚本:
--// Check @@SERVERNAME //-- --IF 'MainServer' <> CAST(SERVERPROPERTY('ServerName') AS nvarchar(max)) AND SERVERPROPERTY('IsHadrEnabled') = 1 --BEGIN -- INSERT INTO @Errors ([Message], Severity, [State]) -- SELECT 'The @@SERVERNAME does not match SERVERPROPERTY(''ServerName''). See ' + CASE WHEN SERVERPROPERTY('IsClustered') = 0 THEN 'https://docs.microsoft.com/en-us/sql/database-engine/install-windows/rename-a-computer-that-hosts-a-stand-alone-instance-of-sql-server' WHEN SERVERPROPERTY('IsClustered') = 1 THEN 'https://docs.microsoft.com/en-us/sql/sql-server/failover-clusters/install/rename-a-sql-server-failover-cluster-instance' END + '.', 16, 1 --END
注释掉这个脚本后,备份过程恢复正常,全量备份和差异备份都做了。但是,当尝试在主副本上进行事务日志备份时,事务日志没有转储到目的地。
请注意,所有这些备份都是在主副本上执行的,备份首选项为主副本
如果您能就如何解决此问题分享您的想法和想法,我将不胜感激。谢谢。
数量 | 来自_client | to_client | 交易类型 |
---|---|---|---|
200 | 北美 | 雅克 | 擦 |
400 | 约翰 | 北美 | 技术监督局 |
800 | 约翰 | 北美 | 技术监督局 |
800 | 北美 | 雅克 | 擦 |
100 | 雅克 | 北美 | 技术监督局 |
我想在单个列中获取 Jacques 和 John 交易的总和,无论它是 tsa 还是 tsb,如下所示:
总交易 | 客户 |
---|---|
1100 | 约翰 |
1200 | 雅克 |
我怎么能在按客户名称分组的同时对数千笔交易执行此操作?谢谢。
我有下表:
create table my table (id SERIAL PRIMARY KEY,value TEXT);
我试图找到 serial 创建的序列:
SELECT sequence_schema, sequence_name
FROM information_schema.sequences
ORDER BY sequence_name ;
如何将列出的序列号与table.id
主键相关联?
我有下表优化
select items_type,
created_at,
count_optimized_items
from optimizations
where shop_id=126
and count_optimized_items!=0
项目类型 | 创建时间 | count_optimized_items |
---|---|---|
4个 | 2023-04-20 06:49:00 | 1个 |
2个 | 2023-04-20 06:49:00 | 1个 |
1个 | 2023-04-20 06:48:59 | 50 |
5个 | 2023-04-20 06:48:59 | 170 |
5个 | 2023-04-21 07:00:42 | 212 |
5个 | 2023-04-20 07:14:54 | 147 |
5个 | 2023-04-20 07:25:31 | 210 |
5个 | 2023-04-20 07:39:33 | 193 |
5个 | 2023-04-20 07:52:41 | 102 |
现在我想根据 items_type 和 date 分组并获得 count_optimized_irems 的总和
select name,
shop_id,
items_type,
created_at,
count_optimized_items,
sum(count_optimized_items) as sum_count
from metadata_optimizations
where shop_id=126
and count_optimized_items!=0
group by created_at,items_type
我尝试了上面的查询,但它不起作用
这是预期的结果
项目类型 | 创建时间 | count_optimized_items |
---|---|---|
4个 | 2023-04-20 06:49:00 | 1个 |
2个 | 2023-04-20 06:49:00 | 1个 |
1个 | 2023-04-20 06:48:59 | 50 |
5个 | 2023-04-20 06:48:59 | 822 |
5个 | 2023-04-21 07:00:42 | 212 |
基本上是基于日期和项目类型的 count_optimized_items 总和
我尝试了以下代码来创建扩展事件会话。
CREATE EVENT SESSION xetest
ON SERVER
ADD EVENT rpc_completed
ADD TARGET package0.event_file
(SET filename = N'result.xel', max_file_size = (60), max_rollover_files = (5))
WITH (
MAX_MEMORY = 512000KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = OFF
);
但是,我在运行它时收到以下错误消息。
Msg 25641, Level 16, State 0, Line 13
For target, "package0.event_file", the parameter "max_file_size" passed is invalid.
Target parameter at index 1 is invalid
我做了一些调查,发现了这个:
max_file_size
必须大于会话缓冲区的当前大小。如果不是,文件目标将无法初始化,报告无效max_file_size
。要查看缓冲区的当前大小,请查询动态管理视图buffer_size
中的列sys.dm_xe_sessions
。
问题是sys.dm_xe_sessions
Returns information about server-scoped active extended events sessions。因为我试图创建的扩展事件会话还不存在。所以我无法查询sys.dm_xe_sessions
并获取它的buffer_size
列。max_file_size
在这种情况下,我如何知道可以在语句中使用的正确最小值CREATE EVENT SESSION
?