暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

xtrabackup 报错Too many open files故障处理

原创 心在梦在 2023-04-03
653

xtrabackup 报错Too many open files 故障处理

一、背景

客户反馈数据库备份失败。

二、环境描述

[root@mes-node1 ~]# mysql -V mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper [root@mes-node1 ~]# innobackupex --version xtrabackup: recognized server arguments: --server-id=21 --log_bin=mysql-bin --datadir=/home/lib/mysql innobackupex version 2.4.20 Linux (x86_64) (revision id: c8b4056)
复制

三、故障排查

1. 检查备份脚本

[root@mes-node1 xtrabackup_full]# crontab -l 17 2 * * * /home/mysql_bak/backup.sh >>/home/mysql_bak/backup.log 0 4 * * * /home/xtra_backup.sh [root@mes-node1 ~]# cat /home/xtra_backup.sh /usr/local/xtrabackup/bin/innobackupex -uroot -phzjs1234 -S /home/lib/mysql/mysql.sock /home/xtrabackup_full find /home/xtrabackup_full -mtime +1 -exec rm -rf {} \;
复制

2. 检查备份结果

[root@mes-node1 xtrabackup_full]# ls -lrth total 0 drwxr-x--- 2 root root 32 Mar 21 04:00 2023-03-21_04-00-01 drwxr-x--- 2 root root 32 Mar 22 04:00 2023-03-22_04-00-02 [root@mes-node1 xtrabackup_full]# du -sh * 200K 2023-03-21_04-00-01 200K 2023-03-22_04-00-02 [root@mes-node1 xtrabackup_full]# ll 2023-03-21_04-00-01 total 200 -rw-r----- 1 root root 201216 Mar 21 04:00 xtrabackup_logfile
复制

3. 手动执行备份

[root@mes-node1 ~]# /usr/local/xtrabackup/bin/innobackupex -uroot -phzjs1234 -S /home/lib/mysql/mysql.sock /home/xtrabackup_full xtrabackup: recognized server arguments: --server-id=21 --log_bin=mysql-bin --datadir=/home/lib/mysql xtrabackup: recognized client arguments: 230322 13:38:14 innobackupex: Starting the backup operation IMPORTANT: Please check that the backup run completes successfully. At the end of a successful backup run innobackupex prints "completed OK!". 230322 13:38:14 version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup;port=3306;mysql_socket=/home/lib/mysql/mysql.sock' as 'root' (using password: YES). Failed to connect to MySQL server as DBD::mysql module is not installed at - line 1327. 230322 13:38:14 Connecting to MySQL server host: localhost, user: root, password: set, port: 3306, socket: /home/lib/mysql/mysql.sock Using server version 5.7.24-log /usr/local/xtrabackup/bin/innobackupex version 2.4.20 based on MySQL server 5.7.26 Linux (x86_64) (revision id: c8b4056) xtrabackup: uses posix_fadvise(). xtrabackup: cd to /home/lib/mysql xtrabackup: open files limit requested 0, set to 1024 xtrabackup: using the following InnoDB configuration: xtrabackup: innodb_data_home_dir = . xtrabackup: innodb_data_file_path = ibdata1:12M:autoextend xtrabackup: innodb_log_group_home_dir = ./ xtrabackup: innodb_log_files_in_group = 2 xtrabackup: innodb_log_file_size = 50331648 InnoDB: Number of pools: 1 230322 13:38:14 >> log scanned up to (427884628939) xtrabackup: Generating a list of tablespaces InnoDB: Allocated tablespace ID 3463 for mysql/servers, old maximum was 0 InnoDB: Operating system error number 24 in a file operation. InnoDB: Error number 24 means 'Too many open files' InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html InnoDB: File ./quality@002dserver/spc_process_trace_data_T15.ibd: 'open' returned OS error 124. Cannot continue operation InnoDB: Cannot continue operation.
复制

分析: 备份报错,抛出错误信息InnoDB: Error number 24 means ‘Too many open files’.

4.检查数据库open_files_limit参数

mysql> show variables like 'open_files_limit'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | open_files_limit | 5000 | +------------------+-------+ 1 row in set (0.01 sec)
复制

5.统计下目前数据库需要打开多少文件

[root@mes-node1 ~]# find /home/lib/mysql -name "*.ibd" |wc -l 1114
复制

分析: 实例的 open_files_limit 的运行参数值为5000,大于备份时需要打开的文件数量,参数设置没有问题。

6.查看OS当前的 open files 数量

[root@mes-node1 xtrabackup_full]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 191192 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 191192 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
复制

分析: open files为1024,小于备份时需要打开的文件数量,数量不够,需要修改。

7.修改OS open files 数量

[root@mes-node1 ~]# vi /etc/security/limits.conf * soft nproc 65536 * hard nproc 65536 * soft nofile 65536 * hard nofile 65536 -- 重新登录session [root@mes-node1 ~]# ulimit -a|grep open open files (-n) 65536
复制

8.再次手动执行备份

[root@mes-node1 ~]# /usr/local/xtrabackup/bin/innobackupex -uroot -phzjs1234 -S /home/lib/mysql/mysql.sock /home/xtrabackup_full xtrabackup: recognized server arguments: --server-id=21 --log_bin=mysql-bin --datadir=/home/lib/mysql xtrabackup: recognized client arguments: ......... ......... 230322 14:35:31 Executing UNLOCK TABLES 230322 14:35:31 All tables unlocked 230322 14:35:31 [00] Copying ib_buffer_pool to /home/xtrabackup_full/2023-03-22_13-57-10/ib_buffer_pool 230322 14:35:31 [00] ...done 230322 14:35:31 Backup created in directory '/home/xtrabackup_full/2023-03-22_13-57-10/' MySQL binlog position: filename 'mysql-bin.000297', position '620931201' 230322 14:35:31 [00] Writing /home/xtrabackup_full/2023-03-22_13-57-10/backup-my.cnf 230322 14:35:31 [00] ...done 230322 14:35:31 [00] Writing /home/xtrabackup_full/2023-03-22_13-57-10/xtrabackup_info 230322 14:35:31 [00] ...done xtrabackup: Transaction log of lsn (427894252071) to (427913862331) was copied. 230322 14:35:31 completed OK!
复制

结论:备份成功,问题解决。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论