标签: log

如何记录由 pl/pgsql 函数执行的 DML 语句?

我有一个 pl/pgsql 函数(见下文),它列出了一些字段并使用动态构造的 UPDATE 命令清除它们的内容。

当我设置时log_statement = 'mod',我在执行函数时在日志上看不到任何内容SELECT fnct_clear_temp_fields();。当我设置log_statement = 'all'并执行我可以SELECT fnct_clear_temp_fields();在日志中看到的函数时,但看不到底层的 UPDATE 命令。

有没有办法让 UPDATE 命令也出现在日志中?

有关信息,这里是功能:

CREATE OR REPLACE FUNCTION fnct_clear_temp_fields() RETURNS VOID AS $$
DECLARE
    --Put into a cursor a view dynamically listing all user-defined fields beginning with 'temp_'
    dataset_1 CURSOR FOR 
        SELECT 
            column_name,
            table_name
        FROM information_schema.tables 
        NATURAL JOIN information_schema.columns 
        WHERE 
            table_schema='public'
            AND table_type='BASE TABLE'
            AND column_name ~ '^temp_'
        ORDER BY table_name,column_name;

    --Record variable to go through each line …
Run Code Online (Sandbox Code Playgroud)

postgresql dml plpgsql functions log

7
推荐指数
2
解决办法
6168
查看次数

PostgreSQL 不记录

我正在使用ArchLinuxPostgreSQL9.4.4 并在配置文件中启用了日志记录:

$ sudo egrep -v "^[[:blank:]]*($|#|//|/\*| \*|\*/)" /var/lib/postgres/data/postgresql.conf

max_connections = 1024          # (change requires restart)
shared_buffers = 128MB          # min 128kB
dynamic_shared_memory_type = posix  # the default is the first option
logging_collector = on      # Enable capturing of stderr and csvlog
log_directory = '/tmp'      # directory where log files are written,
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
log_file_mode = 0644            # creation mode for log files,
log_error_verbosity = verbose       # terse, default, or …
Run Code Online (Sandbox Code Playgroud)

postgresql log postgresql-9.4

7
推荐指数
1
解决办法
7311
查看次数

如何从 PostgreSQL 事务内部记录自定义消息?

我有一个生成交易并执行它们的软件。我想根据执行的查询占查询总数的简单比例异步检查事务进度。我能够读取stdoutstderr生成的psql,所以我想一个解决方案可以打印到stdout一些自定义消息,如“进度:3/8”(或另一个自定义文本字符串)。

我曾考虑过执行“日志查询”,该查询将有关查询进度的信息存储在适当的表中,但该表在事务完成之前不可用,这使我无法检查事务进度。

目前我尝试了以下操作(假设在交易中有 3 个查询来做一些事情):

BEGIN;
CREATE OR REPLACE FUNCTION progress(curr int, total int) RETURNS float AS $$
BEGIN
  RAISE NOTICE '___PROGRESS___%', curr/total::float;
  RETURN curr/total::float;
END;

-- First query
SELECT ... FROM ...;
-- Log the progress
SELECT * FROM progress(1,3);

-- Second query
SELECT ... FROM ...;
-- Log progress
SELECT * FROM progress(2,3);

-- Third query
SELECT ... FROM ...;
-- Log progress
SELECT * FROM progress(3,3);

COMMIT;
Run Code Online (Sandbox Code Playgroud)

我使用以下语法从 bash …

postgresql log

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

为什么我的日志文件这么大?22GB。我正在运行日志备份

我似乎想不出答案。我见过多个这样的答案: 为什么事务日志不断增长或空间不足?

每个人都在谈论在您的日志文件上运行备份,以便它缩小。我正在这样做,但它不会缩小任何东西!我也不相信我正在运行任何超长事务。

服务器: SQL Server 2008

恢复模式: Full

我有一个维护计划来存储 5 天的备份。任务 1 备份具有备份类型的数据库Full,任务 2 备份事务日志。Verify backup integrity对两个任务都进行检查。

我的数据库的正常.ldf文件是 22GB。当我运行上述任务时,.bak文件为435mb,但.trn.文件为22gb,与ldf相同。并且在成功运行之后.ldf根本没有缩小,尽管我读过的所有内容都告诉我应该这样做?

这里发生了什么,为什么日志文件永远不会缩小?

我也试过运行另一个答案中提到的这个命令:

select name, log_reuse_wait_desc from sys.databases

它说LOG_BACKUP的是带有巨大日志文件的数据库。

根据下面的答案,我混淆了已用空间的分配。这些是我的统计数据:

在此处输入图片说明

由于我不知道为什么,初始大小设置为 22gb ...

sql-server-2008 sql-server backup transaction-log log

7
推荐指数
2
解决办法
2935
查看次数

InnoDB 日志序列号在未来

我们的网站出现间歇性数据库错误,我要求我的网络主机检查发生了什么。经过一番检查,他们发现数据库几乎没有问题,并尝试修复它。最后我收到了他们的以下消息-

我已经尝试了对 InnoDB 数据库的每一次修复,我们仍然得到 InnoDB 日志序列号是未来的。此时,为了让 ibdata 和 iblogfile 再次匹配,我们需要从服务器上的备份中恢复 MySQL 目录(包括数据库)。这个过程应该不会花很长时间,但会有一些与这样的恢复相关的停机时间。如果这不是恢复 MySQL 目录的最佳时间,我可以将其安排在不同的时间。请告诉我您希望如何处理此问题。

有人可以告诉我解决这个问题的最佳方法是什么。我真的不想丢失任何数据并希望修复 dB。

PS:如果您需要更多信息,请告诉我,我会从我们的网络主机上获取。

非常感谢您的帮助。

mysql innodb sequence recovery log

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

AWS RDS 中的默认 MySQL 二进制日志保留是什么?

我试图检索我的 MySQL RDS 二进制日志,以便为某些 SQL 运行手动“回滚”。不幸的是,我注意到过去 30 分钟内只有 2 个二进制日志可用。

“调用 mysql.rds_show_configuration”提供“binlog 保留时间 | NULL”。

我猜(因为 RDS 提供了在每日备份之间进行时间点恢复的能力)AWS RDS 将其二进制日志保留 24 小时。但它似乎对最终用户不可用......

TIA, 维他

mysql log mysql-5.6 amazon-rds

6
推荐指数
1
解决办法
9904
查看次数

如何在 MariaDB 中启用查询日志

mysql Ver 15.1 Distrib 5.5.46-MariaDB在 CentOS 6.7 服务器上运行。我正在尝试记录查询,我正在通过将日志重定向到文件来做,如下所示:

#/etc/my.cnf.d/server.cnf
# this is only for the mysqld standalone daemon
[mysqld]
#
# * Fine Tuning
#
key_buffer              = 16M
max_allowed_packet      = 512M
thread_stack            = 192K
thread_cache_size       = 8

log-output = FILE

#General Query Log
general_log
general_log_file        = /var/log/mysql/mysql_query.log

#Error Log
log_error               = /var/log/mysql/mysql_error.log

#Slow Query Log
log-slow-queries
slow_query_log          = 1
slow_query_log_file     = /var/log/mysql/mysql_slow.log
long_query_time         = 2
log-queries-not-using-indexes

collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
Run Code Online (Sandbox Code Playgroud)

在重新启动 MySQL 服务之前,我确实运行了以下命令来创建每个文件并分配适当的权限: …

mysql mariadb logs log

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

如何记录单个连接或用户或客户端主机的所有 SQL 查询?

有没有办法在 Postgres 9.3.9 中记录单个连接或用户或客户端主机的所有 SQL 查询?

换句话说,我log_statement = all只想要某个用户名或客户端主机名或客户端 IP 或连接 ID。

一种选择是记录所有客户端的 SQL 活动并搜索日志。我希望有更好的方法。

postgresql log postgresql-9.3

6
推荐指数
1
解决办法
2448
查看次数

为什么 Postgres 不遵守“log_filename”规定的我的日志文件名约定?

我在 Ubuntu 14.04 上使用 Postgres 9.5。我在 /etc/postgresql/9.5/main/postgresql.conf 文件中设置了这些设置

log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
                                        # can include strftime() escapes
#log_file_mode = 0600                   # creation mode for log files,
                                        # begin with 0 to use octal notation
log_truncate_on_rotation = on           # If on, an existing log file with the
                                        # same name as the new log file will be
                                        # truncated rather than appended to.
                                        # But such truncation only occurs on
                                        # time-driven rotation, not on restarts
                                        # …
Run Code Online (Sandbox Code Playgroud)

postgresql configuration disk-space log files

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

SQL 代理作业日志 - 无法获取错误日志

我想将一些日志提取到报告中,以便获取夜间运行的 SQL_Agent_Jobs 状态。如果作业失败,那么我想在表中接收错误日志。我试图通过以下查询获取该信息:

DECLARE @job_id UNIQUEIDENTIFIER

SELECT 
    @job_id = job_id FROM msdb.dbo.sysjobs 
WHERE 
       [name] like '%JOB_1%'
    OR [name] like '%JOB_2%'
    OR [name] like '%JOB_3%'
    OR [name] like '%JOB_4%'
    OR [name] like '%JOB_5%'

;WITH Error_Output (job_id, error_log) AS
(
    SELECT 
        JS.job_id,
        CASE
        WHEN JSL.[log] IS NULL THEN JH.[Message]
        ELSE JSL.[log]
        END AS LogOutput
    FROM 
        msdb.dbo.sysjobsteps JS 
        INNER JOIN msdb.dbo.sysjobhistory JH 
            ON JS.job_id = JH.job_id AND JS.step_id = JH.step_id 
        LEFT OUTER JOIN msdb.dbo.sysjobstepslogs JSL
            ON JS.step_uid = JSL.step_uid
    WHERE 
        INSTANCE_ID >
        (SELECT …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-agent log

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