标签: linux

移动 postgresql 数据目录

我按照以下步骤移动了 postgresql 的数据目录:

  1. 停止 postgres
  2. cp -a 源数据目录 目标数据目录
  3. 导出 PGDATA=destination_data_directory
  4. 将 postgresql.conf 中的数据目录更改为destination_data_directory
  5. pg_ctl开始

但是当我运行:“pg_ctl start”时,出现以下错误。有人可以帮我找出错误吗?

服务器启动 postgres@Server:/usr/lib/postgresql/9.1/bin$ postgres 无法访问服务器配置文件“/home/destination_data_directory/postgresql.conf”:没有这样的文件或目录

postgresql linux ubuntu

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

更改 postgres 副本到导出文件的权限

我已经在 SO 上问过这个问题,但也许那是错误的位置。对于重复发帖表示歉意,但这个问题可能在这里有更好的受众。

原来的问题是:/sf/ask/1793350331/

正文如下。谢谢。


当运行 postgresql [9.3]“COPY TO”功能时,postgres 用户创建一个文件。我已经告诉它把文件放在 tmp 目录中(尽管如果需要的话可以更改)。

这是作为 cron 作业的一部分运行的,用户是专门为此任务设置的“导出”用户。最终目标是导出的文件最终位于 /home/export/created_file.csv 中。

1)postgres如果不将文件夹设置得过于宽松,则无法将导出的文件直接存储到另一个用户的主目录中。

2) 导出用户可以将文件从其/tmp主目录复制到其主目录,但随后无法清理(删除)postgres中拥有的文件/tmp

这是一个日常过程,因此需要以某种方式删除旧文件。我可以添加一个 cron 作业来清理文件,但我希望有一个更干净的解决方案 - 要么是一种更改创建文件的权限的方法postgres,要么是某种方式为导出用户提供能够删除的额外权限该文件在创建之前。

然而,为导出用户提供与postgres一般情况相同的权限并不是一种选择,因为这样它将可以自由控制数据库。

任何建议,无论是基于 unix 还是基于 postgres,都将非常受欢迎,谢谢。

postgresql linux export copy

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

mysql 无法启动:bin 文件上出现错误 13(权限设置正确)

我刚刚重命名了主机名并重新启动了服务器,现在 mysql 5.6 无法启动。(Debian 7 + dotdeb)

150312 20:40:15 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql.mnt
2015-03-12 20:40:15 13855 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5000)

2015-03-12 20:40:15 13855 [Warning] Buffered warning: Changed limits: table_cache: 431 (requested 2000)

^G/usr/sbin/mysqld: File '/var/export/websrvDB.log/websrvDB-bin.index' not found (Errcode: 13 - Permission denied)
2015-03-12 20:40:15 13855 [ERROR] Aborting

2015-03-12 20:40:15 13855 [Note] Binlog end
2015-03-12 20:40:15 13855 [Note] /usr/sbin/mysqld: Shutdown complete
Run Code Online (Sandbox Code Playgroud)

但这没有意义

/var/export/websrvDB.log 有 mysql:mysql 700 并且其中的所有文件都有 600 和 mysql:mysql

所有其他所有权看起来也很好,并且当我关闭二进制日志时服务器启动。

日志文件夹中有 …

mysql linux mysql-5.6

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

备份到 SQL Server for Linux 上的空设备

在 Windows 上的 SQL Server 中,如果您需要进行备份但实际上并不关心该备份,那么将数据库备份到NULL 设备是很常见的事情。例如,这对于在开发环境中更改恢复模型很有用。

备份语句类似于:

BACKUP DATABASE [xyz] TO DISK = 'NUL:';
Run Code Online (Sandbox Code Playgroud)

在用于 Linux 的 SQL Server 中,人们可能会认为/dev/null这在逻辑上是等效的,但是如果您尝试这样做:

已处理数据库 'xyz' 的 125224 页,文件 1 上的文件 'xyz01'。
处理了数据库 'xyz' 的 2 页,文件 1 上的文件 'xyzLog'。
消息 3634,级别 16,状态 2,第 16 行
操作系统返回在“/dev/null”上尝试“DiskChangeFileSize”时出现错误“31(连接到系统的设备无法运行。)”。
消息 3013,级别 16,状态 1,第 16 行
BACKUP DATABASE 异常终止。

上面的命令似乎会重置 中的log_reuse_waitlog_reuse_wait_descsys.databases,所以也许/dev/null确实有效。

我在 RedHat Enterprise Linux 7.2 上使用 Linux v14.0.900.75 上的 SQL Server。

sql-server linux

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

将 SQL Server 数据库从 Windows 移动到 Linux 失败

我们正在尝试将 SQL 服务器数据库从 Windows 移动到 Linux。但是我们在迁移时面临的问题很少。

  1. 我们从 Windows 中的 SSMS 备份了数据库服务器
  2. 我们在 linux 中运行以下命令恢复它:
RESTORE FILELISTONLY FROM  DISK =N'/var/opt/mssql/data/backup_file_name.bak' 
RESTORE DATABASE DB_NAME 
    FROM  DISK = N'/var/opt/mssql/backup_file_name.bak' WITH  FILE = 1,   
    MOVE N'DB_NAME' TO N'/var/opt/mssql/data/DB_NAME.mdf',   
    MOVE N'DB_NAME_Log' TO N'/var/opt/mssql/data/DB_NAME.ldf', 
    NOUNLOAD,  REPLACE,  STATS = 1
GO
Run Code Online (Sandbox Code Playgroud)

运行这个我或多或少地得到一个错误在于:

文件 XX_FlatFline 无法恢复到PATH_IN_WINDOWS {.....mdf}。使用 WITH MOVE 标识文件的有效位置。

MDF 和 LDF 文件都出现错误。上面错误中显示的windows路径是mdf和ldf文件在windows机器中的位置。

有人可以帮助我了解这里出了什么问题吗?当我将转储恢复到新数据库时,为什么 Windows 路径仍然重要?

警告:我是 SQL Server 的新手。

sql-server windows linux ssms

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

不能使用 dropdb 删除 PostgreSQL 数据库吗?

我不能使用删除数据库

dropdb
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

 ERROR:  must be owner of database 
Run Code Online (Sandbox Code Playgroud)

但是psql \l我看到用户管理员(删除数据库的那个)

 admin=CTc/postgres
Run Code Online (Sandbox Code Playgroud)

除了我想删除的数据库。

Linux 中的 PostgreSQL 9.x 有什么问题?

postgresql maintenance linux

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

在 SQL Server 2017 (Linux) 上,资源数据库保存在何处(位于磁盘上)?

在我在 Linux 上默认安装的 SQL Server 2017 中,/var/opt/mssql/data我看到以下数据库,

  • master.mdf- master 数据库- 记录 SQL Server 实例的所有系统级信息。
  • model.mdf-模型数据库- 用作在 SQL Server 实例上创建的所有数据库的模板。对模型数据库所做的修改,例如数据库大小、排序规则、恢复模型和其他数据库选项,将应用于之后创建的任何数据库。
  • msdbdata.mdf- msdb 数据库- SQL Server 代理使用它来安排警报和作业。
  • tempdb.mdf- tempdb 数据库- 是用于保存临时对象或中间结果集的工作区。

所有这些数据库实际上都有很好的文档记录。然而,我的安装对资源数据库的遗漏很突出。Resource Database 的描述似乎表明它是自己的数据库,

资源数据库是一个只读数据库,其中包含 SQL Server 附带的所有系统对象。SQL Server 系统对象(例如 sys.objects)在物理上持久保存在 Resource 数据库中,但它们在逻辑上出现在每个数据库的 sys 架构中。资源数据库不包含用户数据或用户元数据。

更令人困惑的是,对于SQL Server 2012,文档说,(不是 2017,这是我正在运行的)

资源的物理性质

Resource 数据库的物理文件名是 mssqlsystemresource.mdf 和 mssqlsystemresource.ldf。这些文件位于<drive>:\Program Files\Microsoft SQL Server\MSSQL11.<instance_name>\MSSQL\Binn\. 每个 SQL Server …

sql-server linux database-internals sql-server-2017

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

mssql-service 错误退出,状态为 255 ubuntu

我无法在 apt-get 更新后立即运行 mssql。这是由于脚本错误(如下:)The file "C:\Install\SqlTraceCollect.dtsx" does not exist?关于修复的任何建议?我不知所措。

sudo systemctl start mssql-server
sudo systemctl status mssql-server
? mssql-server.service - Microsoft SQL Server Database Engine
    Loaded: loaded (/lib/systemd/system/mssql-server.service; enabled; vendor preset: enabled)
       Active: active (running)
        ...
sudo systemctl status mssql-server
? mssql-server.service - Microsoft SQL Server Database Engine
    Loaded: loaded (/lib/systemd/system/mssql-server.service; enabled; vendor preset: enabled)
       Active: inactive (dead) (Result: exit-code) since Wed 2018-03-21 22:46:15 PDT; 1min 27s ago
         Docs: https://docs.microsoft.com/en-us/sql/linux
      Process: 2977 ExecStart=/opt/mssql/bin/sqlservr (code=exited, status=255)
     Main PID: 2977 …
Run Code Online (Sandbox Code Playgroud)

sql-server linux ubuntu

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

安装 SQL Server,我得到未满足的依赖项 libc++1 和 libjemalloc1,但无法安装

这是输出,

$ sudo apt install -y mssql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 mssql-server : Depends: libjemalloc1 but it is not …
Run Code Online (Sandbox Code Playgroud)

sql-server linux ubuntu installation

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

恢复证书时 Docker SQL Server 2017 中的权限问题

Docker SQL Server 2017 容器 @latest。使用master数据库。

我面临的错误如下:

[S00019][15208] The certificate, asymmetric key, or private key file is not valid or does not exist; or you do not have permissions for it.

我发现最接近这个确切问题的是Stackoverflow 上的这个问题。然而,答案对我不起作用。这个问题有类似的答案。

我也试过这里这里的说明。

所以通过错误的部分:

  1. 我已经重新创建了两次文件,所以我认为这不是“无效”部分。它显然不是“不存在”的部分(如果我输入了错误的密码,它会告诉我这是错误的密码)。
  2. 我已经备份并恢复了 SMK 和主密钥,没有问题,所以我认为这不是权限问题。这些文件具有完全相同的权限。

无论我尝试什么,我都无法获得要恢复的证书。我已经搜索了GitHub 问题无济于事,所以我不认为这是一个错误。我一定做错了什么。

相关代码:

--on Prod
BACKUP CERTIFICATE sqlserver_backup_cert
TO FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.cer'
WITH PRIVATE KEY (
    FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.key',
    ENCRYPTION BY PASSWORD = 'foobar'
    )
Run Code Online (Sandbox Code Playgroud)
--on Test
CREATE CERTIFICATE …
Run Code Online (Sandbox Code Playgroud)

sql-server linux certificate docker sql-server-2017

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