我正在运行 5.5.60-MariaDB,我需要在服务器上上传一个数据库。.sql 文件位于 SSD 驱动器(本地)上,它包含约 7 亿行,索引 4 列。一切都包含在转储文件中。
我的问题是,它已经花费了 24 小时而数据库仍未启动,这是否正常?服务器不忙于做其他事情,有 16 个内核和 125 GB 的 RAM。
我正在使用的命令是:
mysql -u root myDB < database_dump.sql
我的配置文件如下:
[mysqld]
datadir=/home/ssd/mysql_datadir
tmpdir=/home/ssd/mysql_tmdir
socket=/var/lib/mysql/mysql.sock
innodb_buffer_pool_size=4GB
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
# include all files from the config directory
!includedir /etc/my.cnf.d
tmp 和 data 目录都在同一个 SSD 磁盘上,sql 转储也是如此。我不知道这是否是一个正常的预期时间,或者我应该更改我的设置中的某些内容,这就是我伸出援手的原因。要上传的数据库引擎是 InnoDB。
谢谢!
如果您不确定恢复期间是否发生了任何事情,这里有一些检查活动的方法:
使用顶部
从命令行运行
top
。它将向您展示系统上正在发生的事情。然后,您可以通过按o
并键入来过滤列表以查找 MySQLCOMMAND=mysql
如果 RAM 和 CPU 使用率看起来相当低,则可能表明瓶颈是您的系统 IO 在您完成恢复时是最慢的部分。在顶部标题中,您将看到
wa
值,即 CPU 等待 I/O 完成所花费的时间。您可以使用 linux
iostat
命令更多地询问 IO 子系统。您可能会遇到 IO 瓶颈,但是,除非您计划定期执行此操作,否则此导入任务不会是典型的系统使用,因此不必为此担心 IO 性能。您正在导入一个 157GB 的文件 - 需要读取、插入和构建索引的数据很多!mysql客户端
使用 登录到服务器
mysql
。运行命令show processlist
以查看当前正在运行的查询列表。您应该会看到每次执行查询时发生的插入和更改。文件系统
查看
/home/ssd/mysql_datadir
目录以查看物理数据库文件是否随着数据的插入而增长。这将每两秒显示一次文件大小。随着数据的导入,它们会很好地增长。ibdata1
将是您数据库的数据。ib_logfile0
MySQL\MariaDB 使用它来ib_logfile0
帮助确保在非正常关闭后数据的一致性。重新开始导入有点太晚了,但将来您可以使用一个名为管道查看器的小实用程序,通过管道导入来查看备份文件中导入的位置。
它会给你一个花哨的进度条,显示文件的读取率,并给出估计的完成时间。这只是测量文件的读取,而不是 MariaDB 处理事情的时间。
我希望这会有所帮助!