在一个MySQL服务器(InnoDB表)上,为了比较查询速度和更快的SSD,我克隆了nvme SSD (使用Macrium ),/var/lib/mysql的容量约为350 GB。但是在克隆到新磁盘后,查询速度大约慢了4倍。
我比较了.4台配置相同的计算机,数据被等分,所以它们都以同样的速度运行,克隆磁盘的计算机完成相同任务的速度慢了4倍。我重新启动了所有服务器,以排除任何存在的缓存。
我还看到,所有3台服务器都在几秒钟内重新启动,而使用克隆SSD的服务器在关闭之前需要几分钟才能完成一些后台MySQL任务。但是我没有注意到任何后台SQL任务在运行时都在运行。我不认为这是一个漫长的后台进程,恢复了失败的长操作。
克隆SSD是否会使数据变得更加零碎?
我试着“优化”表,只是为了看看它是否有任何改进,但优化~15 it表运行了24小时并在计数,所以这是个坏主意。
SSD是不同的,前一个是Kingston DC1000B (“企业”),第二个是Samsung 980 PRO。从水晶盘的基准,三星应该是2-3倍的阅读速度,6倍的速度更快的写入,两倍的IOPS对小文件。
发布于 2023-03-31 16:21:05
我不得不说是,因为发生在MySQL中的写作的性质
有两种类型中的一种执行写入的文件
第1类:按顺序书写
类别2:随机书写
.ibd文件(单个表的表空间文件)写入SSD具有相同的基本性能,无论是顺序的还是随机的。
如果您克隆一个MySQL仍在运行的SSD磁盘,那么所有这些文件都可能会发生更改。与快照开始时相比,按顺序写入的文件可能分散在磁盘上的情况要大得多。所有随机编写的文件也是如此。你很有可能感受到这种克隆的效果。
有两种基本方法可以克隆数据以获得更多的一致性。
步骤1:告诉mysqld将所有事务设置诺姆b_快地_关机刷新为0
mysql> SET GLOBAL innodb_fast_shutdown = 0;步骤2:关闭mysqld
service mysql stop步骤3:执行快照
步骤4:启动mysqld
service mysql stop您可以对正在运行的mysqld进程执行xtrabackup。
有一种称为流备份的方法。
步骤1:在目标主机上,清除数据文件夹
cd /var/lib
rm -rf mysql
mkdir mysql步骤2:获取目标主机的IP地址
ip r
or
ip addr show就本例而言,目标IP为10.20.30.253
步骤3:在目标主机上,设置netcat进程以从源主机捕获流备份(端口9999)
screen -S streaming_backup_from_source
nc -l 9999 | xbstream -c -C /var/lib/mysql步骤4:在源主机上启动流备份,并在端口9999上将输出重定向到netcat
screen -S streaming_backup_to_target
time innobackupex --no-timestamp --slave-info --user=username -ppassword --open-files-limit=100000 --stream=xbstream /dev/shm | nc -N 10.20.30.253 9999步骤5:监视屏幕会话,查看流备份何时完成
在目标主机上运行步骤6,运行apply日志选项
innobackupex --apply-log步骤7:在目标主机上,使文件夹所有者成为mysql
chown -R mysql:mysql /var/lib/mysql步骤8:在目标主机上,启动mysqld
service mysql start您应该将所有顺序写入的文件移动到另一个磁盘。我特别推荐二进制日志和慢速日志放在另一个磁盘上,我从Facebook工程师的旧博客文章,并在旧帖子中提到过中学到了这一点。
https://dba.stackexchange.com/questions/325447
复制相似问题