我需要导入MySQL的大量文本数据。我在MacBook上做这个并没有足够的空间,所以我想将它存储在外部硬盘中(我现在并不关心速度 - 这只是用于测试)。
最好的方法是什么?
一个简单的方法是创建一个符号链接,替换当前指向外部磁盘的mysql数据库文件位置。谷歌的象征性链接。
关闭mysql之后的示例用法,将旧的mysql db文件夹名称更改为其他名称,并使用ln命令创建符号链接,如下所示
ln -s [EXTERNAL DRIVE PATH] [MYSQL DB FOLDER PATH]
然后将mysql db文件夹的所有先前内容移动到新位置。
对于第二个选项,表空间可能会起作用:
http://dev.mysql.com/doc/refman/5.1/en/create-tablespace.html
用户user658991答案就在那里。
添加软链接后,您需要将以下行添加到2行下面的/etc/apparmor.d/usr.sbin.mysqld到旧的mysql文件夹。
/path/to/mysql/folder/on/the/external/ r
/path/to/mysql/folder/on/the/external/ ** rwk
如果没有这两行,MySQL就无法开始抱怨:
Can't create test file /path/to/mysql/folder/on/the/external/hostname.lower-test
Can't create test file /path/to/mysql/folder/on/the/external/hostname.lower-test
mysqld: Can't change dir to '/path/to/mysql/folder/on/the/external/' (Errcode: 13)
重新启动apparmor以使更改生效。
sudo invoke-rc.d apparmor restart
有了这个,MySQL正常启动。
打开/etc/mysql/my.cnf
并找到datadir
的值。或者,你可以在mysql监视器中找到它
mysql> select @@datadir;
停止mysql
sudo systemctl stop mysql
将数据从那里复制到外部驱动器
sudo rsync -av /var/lib/mysql /mnt/myHDD/somedir/mysql
修改datadir
中my.cnf
的位置。
再次启动mysql
sudo systemctl start mysql
验证一切仍然正常并删除原始数据目录。
This page contains a more extensive guide但它警告的所有其他问题与我的树莓PI无关。即我跳过了它们并且有效。