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
    • 最新
    • 标签
主页 / dba / 问题

问题[log](dba)

Martin Hope
Ron Piggott
Asked: 2021-12-09 22:36:58 +0800 CST

MariaDB 理解“事件”间隔

  • 0

我创建了我的第一个活动:

ALTER EVENT flush_logs_event 
ON SCHEDULE EVERY 6 HOUR 
COMMENT 'Rotate /var/log/mysql/master-bin*' 
DO FLUSH LOGS;

我将它从“12”更改为“6”,因为日志复制的增长速度有多快。我希望它按时间而不是文件大小旋转,以使我更轻松地部署其他从站。

我认为“6 小时”是指 6H00 12H00 18H00 和 24H00。同时我改变了事件我也对/etc/mysql/my.cnf进行了调整:

expire_logs_days=7

然后我做了

systemctl restart mariadb.service

当 MariaDB 重新启动时,master-bin 旋转。它创建了master-bin.000006。当我重新启动 MariaDB 时,大约是 5:21。这是否意味着 master-bin 将在 11:21、17:21 等旋转?

为了全面披露,我还包括:

MariaDB [mysql]> show events \G
*************************** 1. row ***************************
                  Db: mysql
                Name: flush_logs_event
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 6
      Interval field: HOUR
              Starts: 2021-12-09 05:21:23
                Ends: NULL
              Status: ENABLED
          Originator: 1
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
  Database Collation: utf8mb4_general_ci

谢谢。

mariadb log
  • 1 个回答
  • 28 Views
Martin Hope
RoohAllah Godazgar
Asked: 2021-09-24 01:03:33 +0800 CST

日志目录的 MariaDB 隐藏磁盘使用情况

  • 1

我们的环境中有一个简单的主/从集群,它设置在 Ubuntu 20.04 和 MariaDB 10.5 上:

MariaDB [(none)]> SELECT VERSION();
+--------------------------------------------+
| VERSION()                                  |
+--------------------------------------------+
| 10.5.11-MariaDB-1:10.5.11+maria~bionic-log |
+--------------------------------------------+

我们将所有日志目录设置为/var/lib/mysql包括 bin log & relay log: /var/lib/mysql/binfiles。

对于这个目录 ( /var/lib/mysql),我创建了一个 100GB 空间的 LVM,但是 2 天后,我收到了一条警报,说这个目录已满,我必须向它添加一个额外的 100GB 空间。

奇怪的是这个目录中的文件只使用了 18GB 磁盘空间,我不知道其余的发生了什么:

输出df -h:

Filesystem                           Size  Used Avail Use% Mounted on
/dev/mapper/vg--data-lv--mysql--log   99G   91G  3.4G  97% /var/log/mysql

输出du -h --max-depth=1 /var/log/mysql(包括隐藏文件;没有):

13G /var/log/mysql/binfiles
19G /var/log/mysql

包含/var/log/mysql(包括隐藏文件;没有):

total 5426300
drwxr-s---  3 mysql adm          4096 Sep 23 00:18 .
drwxrwxr-x 10 root  syslog       4096 Sep 23 00:18 ..
drwxr-sr-x  2 mysql adm          4096 Sep 23 12:21 binfiles
-rw-r-----  1 mysql adm             0 Sep 23 00:00 mariadb-slow.log
-rw-rw----  1 mysql adm      14629234 Sep 23 00:00 mariadb-slow.log.1.gz
-rw-rw----  1 mysql adm    1074177544 Sep 22 21:29 mariadb-slow.log.old
-rw-rw----  1 mysql adm         33699 Sep 22 05:12 mariadb.err
-rw-r-----  1 mysql adm             0 Sep 23 00:00 mysql.log
-rw-rw----  1 mysql adm    4467658081 Sep 23 00:00 mysql.log.1.gz

包含/etc/mysql/my.cnf:

# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 0. "/etc/mysql/my.cnf" symlinks to this file, reason why all the rest is read.
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# If you are new to MariaDB, check out https://mariadb.com/kb/en/basic-mariadb-articles/

#
# This group is read both by the client and the server
# use it for options that affect everything
#
[client-server]
# Port or socket location where to connect
# port = 3306
socket                  = /run/mysqld/mysqld.sock

[client]
port                    = 3306
socket                  = /var/run/mysqld/mysqld.sock

[isamchk]
key_buffer              = 16M

[mariabackup]
open_files_limit            = 65535

[mysql]
#no-auto-rehash                                                 # faster start of mysql but no tab completion

[mysqld_safe]
socket                  = /var/run/mysqld/mysqld.sock
nice                    = 0

[mysqldump]
quick
quote-names
max_allowed_packet          = 16M

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

PS:示例中有一些配置文件/etc/mysql/mariadb.conf.d/,我已经注释了其中的所有配置。我的主要配置位于 2 个文件中/etc/mysql/conf.d/:mysqld.cnf&master.cnf

包含mysqld.cnf:

[mysqld]
# General
plugin_load_add             = query_response_time
user                    = mysql
pid-file                = /var/run/mysqld/mysqld.pid
socket                  = /var/run/mysqld/mysqld.sock
port                    = 3306
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc_messages_dir             = /usr/share/mysql
lc_messages             = en_US
skip-external-locking
skip_name_resolve           = 0
myisam_recover_options          = BACKUP
concurrent_insert           = 2
sql_mode                = NO_ENGINE_SUBSTITUTION,NO_UNSIGNED_SUBTRACTION
default_storage_engine          = InnoDB
performance_schema          = ON
query_response_time_stats       = ON
userstat                = ON
innodb_buffer_pool_dump_at_shutdown     = OFF
innodb_rollback_on_timeout              = ON


# Performance
max_connections             = 5000
connect_timeout             = 5
wait_timeout                = 600
max_allowed_packet          = 100M
thread_cache_size           = 128
sort_buffer_size            = 4M
bulk_insert_buffer_size         = 16M
tmp_table_size              = 128M
max_heap_table_size         = 128M
key_buffer_size             = 128M
open-files-limit            = 65535
table_open_cache            = 2048
myisam_sort_buffer_size         = 512M
read_buffer_size            = 2M
read_rnd_buffer_size            = 1M
query_cache_limit           = 0
query_cache_size            = 0
long_query_time             = 0
join_buffer_size            = 3M
table_definition_cache                  = 1424

# Innodb
innodb_buffer_pool_size         = 186G
###innodb_buffer_pool_instances     = 64
innodb_monitor_enable           = all
innodb_file_per_table           = 1
innodb_open_files           = 65535
innodb_io_capacity          = 30000
innodb_io_capacity_max          = 40000
innodb_flush_neighbors          = 0
innodb_flush_method         = O_DIRECT
innodb_log_buffer_size          = 8M
innodb_log_file_size            = 6G
###innodb_log_files_in_group        = 2
innodb_log_group_home_dir       = /var/lib/mysql/
innodb_autoinc_lock_mode        = 2 

# Log
general_log             = 1
general_log_file            = /var/log/mysql/mysql.log
slow_query_log              = 1
slow_query_log_file         = /var/log/mysql/mariadb-slow.log
expire_logs_days            = 5
log_error               = /var/log/mysql/mariadb.err
log_warnings                = 0
long_query_time             = 0.5
#log_slow_rate_limit            = 1000
log_queries_not_using_indexes       = ON
log_slow_verbosity          = query_plan,explain
log_slow_admin_statements       = ON
log_slow_slave_statements       = ON
log_bin                 = /var/log/mysql/binfiles/mariadb-bin
log_bin_index               = /var/log/mysql/binfiles/mariadb-bin.index
max_binlog_size             = 100M
binlog_format               = row
relay_log                               = /var/log/mysql/binfiles/mariadb-relay-bin
relay_log_index                         = /var/log/mysql/binfiles/mariadb-relay-bin.index
max_relay_log_size                      = 100M

包含master.cnf:

[mysqld]
# Master/Slave settings for master node
bind-address                = a.b.c.d
server-id               = 10
gtid_domain_id              = 0
log_slave_updates           = 1
innodb_flush_log_at_trx_commit      = 1

我认为这无关紧要,但我也在我的/etc/sysctl.conf文件中设置了这些:

net.core.somaxconn=65535
fs.file-max=2097152
fs.nr_open=2097152
vm.max_map_count=262144
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.core.rmem_default=262144
net.core.wmem_default=262144
net.ipv4.tcp_max_syn_backlog=65535
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_syn_retries=2
net.core.netdev_max_backlog=300000
net.ipv4.ip_local_port_range=1024 65535
net.ipv4.tcp_wmem=8192 65536 16777216
net.ipv4.tcp_rmem=8192 87380 16777216
net.ipv4.tcp_keepalive_intvl=30
net.ipv4.tcp_keepalive_time=120

您能否指导我在/var/log/mysql没有其他文件时使用的空间以及如何修复它?

编辑 1:数据目录 ( /var/lib/mysql) 和日志目录 ( /var/log/mysql) 各有一个单独的分区;所以它必须是关于这个目录(/var/log/mysql)的东西,而不是其他东西。

更新 1:似乎当日志、慢日志和错误日志文件轮换时,mariadb 仍在使用它们,并且发生了这种情况。知道如何解决这个问题(显然我可以重新启动服务)?

log mariadb-10.5
  • 1 个回答
  • 242 Views
Martin Hope
MyKE
Asked: 2019-10-24 05:10:32 +0800 CST

当 logrotate 旋转 postgresql 日志文件时,PostgreSQL 将停止记录

  • 0

我已经安装

PostgreSQL 10.6 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3), 64-bit

并配置:

log_filename = 'postgresql.log'

但我想通过 logrotate 而不是 PostgreSQL 的内部 logrotation 来管理日志轮换:

#vim /etc/logrotate.d/postgresql

/var/lib/pgsql/data/log/postgresql.log {
    daily
    rotate 7
    compress
    create 0664 postgres postgres
    missingok
    notifempty
    sharedscripts
}

logrotate 按预期工作,但 PostgreSQL 将停止登录到旋转/var/lib/pgsql/data/log/postgresql.log文件。唯一的解决方案是systemctl restart postgresql可以放在 logrotatepostrotate/endscript块内,但如果这是在关键生产系统上完成的,我不能这样做。

你有什么建议如何在不需要重新启动 PostgreSQL 的情况下正确地 logrotate PostgreSQL 日志文件?

谢谢!

更新: 在重新加载 PostgreSQL 期间,它会查找更改。我找到了一种解决方法,如何实现 PostgreSQL 将开始登录到旋转的postgresql.log文件 - 我需要修改配置文件,例如注释掉/修改log_filename然后重新加载 PostgreSQL 并恢复更改并再次重新加载 PostgreSQL。因为 PostgreSQL 在配置文件中寻找变化。但如果有比触摸配置文件更好的解决方案,我会很高兴。

postgresql log
  • 3 个回答
  • 2380 Views
Martin Hope
ST-DDT
Asked: 2019-08-06 03:35:16 +0800 CST

MongoDB 服务器日志到文件和 rsyslog

  • 1

我必须通过 UDP 将我的日志转发到 rsyslog,但由于 UDP 和 rsyslog 的易失性,我也想记录到一个文件中。但是,AFAICT MongoDB 仅允许其日志使用一个目标:

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
  #destination: syslog

我正在使用最新的 mongodb 4。

除非我弄错了,它甚至不支持远程系统日志:https ://docs.mongodb.com/manual/reference/configuration-options/#systemLog.destination

如何使用 mongodb 登录到类似文件和远程系统日志?

mongodb log
  • 1 个回答
  • 961 Views
Martin Hope
IGGt
Asked: 2019-01-04 08:49:50 +0800 CST

在 MySQL 8.0 中禁用二进制日志

  • 11

如何在 MySQL 8.0 上禁用二进制日志记录?

我需要导入一个大的 MySQLDump 文件,并且不想用许多 GB 的数据填充二进制日志。过去我会设置log_bin=0并my.cnf重新启动数据库。

但是对于 MySQL 8.0,我尝试了各种设置,但每次我登录数据库并运行:

SELECT @@global.log_bin;

它不断返回1

我努力了:

log_bin = 0
log_bin = OFF
#log_bin = 1

是否可以禁用二进制日志?

mysql log
  • 6 个回答
  • 11415 Views
Martin Hope
Clovis_Sangrail
Asked: 2018-02-27 14:05:52 +0800 CST

如何阻止 psql 显示已执行的 SQL?

  • 2

当我执行 SQL 时,我看到查询返回给我。

=# \d
LOG:  statement: SELECT n.nspname as "Schema",
  c.relname as "Name",
  CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN
  [... LOT OF STUFF CUT]
                   List of relations
 Schema |          Name          |   Type   |  Owner   
--------+------------------------+----------+----------

所有查询也得到回应,

=# SELECT * FROM ( VALUES (1) ) AS t(x);
LOG:  statement: SELECT * FROM ( VALUES (1) ) AS t(x);
 x 
---
 1
(1 row)

如何禁用此功能?我已经尝试了很多东西。

psql log
  • 1 个回答
  • 78 Views
Martin Hope
inivanoff1
Asked: 2017-09-10 06:11:31 +0800 CST

PostgreSQL 检查点日志解释

  • 5

我知道 PostgreSQL 检查点是什么以及它何时发生。

我需要一些关于参数产生的日志的额外信息log_checkpoints = on,所以请向我解释一下它的一些要点:

2017-09-09 16:31:37 EEST [6428-6524] LOG: checkpoint complete: wrote 30057 buffers (22.9%); 0 transaction log file(s) added, 0 removed, 47 recycled; write=148.465 s, sync=34.339 s, total=182.814 s; sync files=159, longest=16.143 s, average=0.215 s

  1. 我知道 22.9% 的共享缓冲区被写入(我有 1024 MB shared_buffers,这意味着 234 MB 被写出)。
  2. 我知道有 47 个 WAL 文件被回收,即不再需要它们来进行崩溃恢复,因为来自它们的真实数据已经在磁盘上。

问题A。但是write=148.465 s和sync=34.339呢?有什么区别?什么是write,为什么它的时间远远超过fsync()操作?

问题B。是什么sync files?哪些文件:WAL 文件?为什么sync files是159个,而回收的文件却只有47个?这些之间有什么关系?

谢谢!

postgresql log
  • 2 个回答
  • 6630 Views
Martin Hope
tachomi
Asked: 2017-01-11 14:53:31 +0800 CST

如何仅跟踪应用程序使用的表

  • 1

我有一个非常混乱的数据库,其中有很多表实际上没有被应用程序使用,所以我用general_log.

我正在向应用程序发出请求,并tail -f /path/to/general_log.log遵循一般日志中的连接 ID 并获取请求的所有表,但这将是一个非常令人沮丧的活动。

我想知道是否有工具或简单的方法可以做到这一点

mysql log
  • 3 个回答
  • 244 Views
Martin Hope
Maulik Patel
Asked: 2016-08-03 05:33:05 +0800 CST

错误日志位置?

  • 19

MySQL 是否写入任何日志文件?如果是,它的路径是什么(在 ubuntu/Linux 上)?

mysql log
  • 7 个回答
  • 119826 Views
Martin Hope
SHR
Asked: 2016-05-10 10:52:16 +0800 CST

Oracle log miner 权限:哪个权限授权用户使用 logMiner 作为计划的 JOB?

  • 0

我正在尝试将用户配置为定期从计划的作业中运行 logMiner。

我的用户名为 admin 我已授予 admin 用户以下权限:

 grant select on v_$database to admin
 grant execute on DBMS_LOGMNR to admin
 grant select on v_$logmnr_contents to admin

但是,当我尝试从 v$logmnr_contents 中进行选择时,我得到 - ORA-01031 权限不足。

为了测试,我正在运行以下脚本:

create or replace procedure Test_LogMiner AS
first_scn NUMBER(8);
last_scn NUMBER(8);
log_count NUMBER(8); 
BEGIN
  Select current_scn into last_scn from V$DATABASE;
  --Select max(mined_scn) into first_scn from my_table;
  first_scn := last_scn-100;
  DBMS_LOGMNR.START_LOGMNR(startScn=>first_scn, endScn=>last_scn,
     options=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG+DBMS_LOGMNR.CONTINUOUS_MINE);
  WRITE_LOG('LOG_DIR', 'After START_LOGMNR');
  -- get error on this select - ORA-01031 insufficient privileges-- 
  select count(*) into log_count from v$logmnr_contents;
  WRITE_LOG('LOG_DIR', 'select count(*)='||log_count);
  DBMS_LOGMNR.END_LOGMNR();
  WRITE_LOG('LOG_DIR', 'After END_LOGMNR');
EXCEPTION WHEN OTHERS THEN
  WRITE_LOG('LOG_DIR', 'Error: '||SQLERRM);
END; 

我可以运行相同的场景,意味着启动 logMiner 并从 v$logmnr_contents 中选择,当它不作为过程运行时,从 SQL 开发人员作为管理员用户(意味着:删除创建过程并将其余代码放入另一个begin/ end)

当我从 'sys as dba' 用户运行 proc 时,它也会运行。

我的问题是:我还应该在程序工作的方式上授予什么?

oracle log
  • 1 个回答
  • 3729 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