小编mus*_*cio的帖子

如何测量或估计 Postgres 9.2 中的流复制滞后

我被要求对一个在后端使用 postgresql 的应用程序进行逆向工程。我可以看到正在进行一些数据库复制...根据我的阅读,我*认为它被称为流复制。主服务器上的设置如下所示:

wal_level = hot_standby
max_wal_senders = 5
wal_keep_segments = 32
Run Code Online (Sandbox Code Playgroud)

我的问题是:什么会影响在 master 上创建新记录与何时出现/复制到 slave 之间的延迟?

通过阅读手册,(http://www.postgresql.org/docs/current/static/hot-standby.html)我看到它使用的模型是“最终一致性”......该页面上的第 4 段指出:

备用服务器上的数据需要一些时间才能从主服务器到达,因此主服务器和备用服务器之间会存在可测量的延迟。因此,在主数据库和备用数据库上几乎同时运行相同的查询可能会返回不同的结果。我们说备用数据库上的数据最终与主数据库一致。

但是有没有任何模式/方法可以猜测需要多长时间?或者它真的只是随意的?

如果您能指出我正确的方向,我将不胜感激。谢谢。

postgresql replication postgresql-9.2

5
推荐指数
1
解决办法
1114
查看次数

Mysqlfailover 命令 - 健康状态中没有列出从属

我已成功使用GTID_MODE. 它完美地工作。现在我需要在其中设置自动故障转移功能。我已经运行了以下命令。

mysqlfailover --master=root:abc@10.24.184.12:3306 --discover-slaves-login=root:abc
Run Code Online (Sandbox Code Playgroud)

我得到了以下结果。没有列出任何奴隶。

MySQL Replication Failover Utility
Failover Mode = auto     Next Interval = Tue May

Master Information
------------------
Binary Log File   Position  Binlog_Do_DB  Binlog
mysql-bin.000016  9568

GTID Executed Set
8fe8b710-cd34-11e4-824d-fa163e52e544:1-1143

Replication Health Status
0 Rows Found.
Q-quit R-refresh H-health G-GTID Lists U-UUIDs U
Run Code Online (Sandbox Code Playgroud)

但是当我执行mysqlrplcheckmysqlrplshow命令时,会列出从属设备。

这是正常的吗?

mysql replication failover

5
推荐指数
1
解决办法
489
查看次数

如何使用 BCP 提取以竖线分隔的数据?

我尝试了以下命令

USE <DBNAME>
SELECT 'exec master..xp_cmdshell'
+ ' '''
+ 'bcp'
+ ' ' + TABLE_CATALOG + '.' + TABLE_SCHEMA + '.' + TABLE_NAME
+ ' out'
+ ' D:\'
+ TABLE_NAME + '.csv'
+ ' -c'
+ ' -t,'
+ ' -T'
+ ' -S' + @@SERVERNAME
+ ''''
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
Run Code Online (Sandbox Code Playgroud)

我想以以下格式获取数据。

格式将是管道分隔的文本文件,带有双引号文本限定符并且没有标题行。如何修改或编写 BCP 命令以获得所需的结果。

我的数据集只是一个客户表。

CustomerID  CustomerName         ContactName   Address        City    PostalCode  Country
1           Alfreds Futterkiste  Maria Anders  Obere Str. 57  Berlin  12209       Germany …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql

5
推荐指数
1
解决办法
3万
查看次数

如何在 SELECT 语句中格式化电话号码?

我有一个带有表名的数据库student

我想显示学生的register_number和。phone_number

phone_number采用以下格式:

+91-123-456-7890
Run Code Online (Sandbox Code Playgroud)

如果电话号码是NULL,那么它应该显示N/A

该表看起来像:

R_NO      |     STUDENT_NAME    |  PHONE_NUMBER
-------------------------------------------------------
  1       |      Rajesh         |  9632545123
  2       |      Sridevi        |  9512647359
  3       |      Shiva          |  9632155862
  4       |      HariHaran      |  8426911231
  5       |      Ravi           |  9111558899
  6       |      Pauline        |  NULL
Run Code Online (Sandbox Code Playgroud)

mysql number-formatting

5
推荐指数
1
解决办法
2万
查看次数

CREATE DATABASE AS COPY 不适用于 Azure

我是 T-SQL 和 MSSQL 的新手,但需要将 Azure SQL 数据库从一台服务器复制到另一台服务器。

正如我在这里搜索的那样- 它可以通过CREATE DATABASE Database1_copy AS COPY OF server1.Database1;查询来完成,但在我的 Ubuntu Linux 上的 Vusial Studio 代码编辑器中使用vscode-mssql扩展名 - 我有一个错误:

消息 156,级别 15,状态 1,第 1 行:关键字“数据库”附近的语法不正确。

我的完整查询如下:

CREATE DATABASE Database1_copy AS COPY OF oldserver.database.windows.net.olddatabasenamehere;
Run Code Online (Sandbox Code Playgroud)

额外的谷歌搜索引导我找到相同的解决方案(是我发现的另一个例子)。

我在这里做错了什么?

我知道即使是在 Azure 资源 (azure.microsoft.com) 上发布的第一个链接 - 它也不一定是 Azure SQL 的有效解决方案。

PS Idea 是自动将 DEV 环境推出(使用 ARM 模板)作为当前 Live 环境的副本,并创建数据库作为 Live 数据库的副本。

sql-server azure-sql-database azure

5
推荐指数
1
解决办法
5383
查看次数

如何加快对地理位置过程的查询

我有一个包含 10,301,390 个 GPS 记录、城市、国家和 IP 地址块的表。我有用户当前的经纬度位置。我创建了这个查询:

SELECT
  *, point(45.1013021, 46.3021011) <@> point(latitude, longitude) :: point AS distance
FROM
  locs
WHERE
  (
    point(45.1013021, 46.3021011) <@> point(latitude, longitude)
  ) < 10 -- radius
ORDER BY
  distance LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

这个查询成功地给了我我想要的东西,但它很慢。根据给定的纬度和经度,获得一条记录需要 2 到 3 秒。

我在latitudelongitude列上尝试了 B 树索引,也尝试过,GIST( point(latitude, longitude));但查询仍然很慢。

我怎样才能加快这个查询?

更新:

似乎缓慢是由 引起的,ORDER BY但我想获得最短距离,所以问题仍然存在。

postgresql index spatial gist-index

5
推荐指数
1
解决办法
5761
查看次数

Redshift:如果元胞数组中存在值,则返回行

如何返回包含列元胞数组中特定值的行?

想象一下我们有一个像这样的表:

id    name    phone           values
1     Taylor  xxx.xxx.xxxx    [4,6,5]
2     John    yyy.yyy.yyyy    [1,5,2]
3     Peter   zzz.zzz.zzzz    [6,2,6]
Run Code Online (Sandbox Code Playgroud)

我需要创建一个 SQL 查询,该查询将返回数组中存在值“6”的行values。所以预期的输出是:

id    name    phone           values
1     Taylor  xxx.xxx.xxxx    [4,6,5]
3     Peter   zzz.zzz.zzzz    [6,2,6]
Run Code Online (Sandbox Code Playgroud)

我们正在 Redshift 中工作。json_extract_array_element_text('json_string', pos)因此,如果更容易的话,可以使用该功能的可能性。请注意,值数组的长度可能彼此不同。

redshift

5
推荐指数
1
解决办法
4382
查看次数

在内存数据库中删除文件和文件组

我有一个 SQL Server 2016 数据库,并且配置了内存表。我想删除此配置,然后删除该表。当我想删除该文件和文件组时,出现以下错误。

USE [InMem_Test]
GO
ALTER DATABASE [InMem_Test]  REMOVE FILE [InMemFile]
GO
ALTER DATABASE [InMem_Test] REMOVE FILEGROUP [InMemFileGroup]
GO
Run Code Online (Sandbox Code Playgroud)

消息 41802,级别 16,状态 1,第 3 行无法删除最后一个内存优化容器“InMemFile”。消息 5042,级别 16,状态 11,第 5 行无法删除文件组“InMemFileGroup”,因为它不为空。

sql-server in-memory-database sql-server-2016

5
推荐指数
1
解决办法
4326
查看次数

从 apt 存储库安装 mysql-shell

我想为 Mysql 8 安装和配置高可用性集群。为了实现自动化,我想使用 apt 存储库(通过 ansible)。我的服务器是 debian jessy (8) 发行版。

我使用命令成功安装了 mysql 服务器:

> sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5072E1F5
> echo "deb http://repo.mysql.com/apt/debian jessie mysql-8.0" | \ sudo tee /etc/apt/sources.list.d/mysql80.list
> sudo apt update
> sudo apt install mysql-server
Run Code Online (Sandbox Code Playgroud)

效果很好。现在我想安装Mysql shell来管理InnoDB集群。看来它可以通过 apt 存储库获得,如本页所述: https: //dev.mysql.com/downloads/repo/apt/ 此处解释了安装: https: //dev.mysql.com/doc/refman /8.0/en/installing-mysql-shell-linux-quick.html

但是当我通过存储库执行安装时,出现错误:

> sudo apt-get install mysql-shell
Run Code Online (Sandbox Code Playgroud)

消息:

读取包列表...完成 构建依赖关系树 读取状态信息...完成 E: 无法找到包 mysql-shell

我在 debianstretch (9) 上运行的服务器也有同样的错误。

mysql mysql-8.0 mysql-shell

5
推荐指数
1
解决办法
3766
查看次数

为连接表授予大内存

当我从两个连接表中选择列时,会获得巨大的内存授予(529808)。如果我单独查询每个表列,它的组合内存授予仅为 8008。

为什么组合的列列表有如此大的内存授予?或者我可以采取哪些步骤来找出答案?

SELECT *内存授予量为 529808: 在此输入图像描述


仅查询第一个表中的列的内存授予量为 6152: 在此输入图像描述


仅查询另一个表中的列的内存授予量为 1856 在此输入图像描述

sql-server t-sql memory-grant

5
推荐指数
1
解决办法
454
查看次数