vagrant destroy 后保留 vagrant 数据库数据
Posted
技术标签:
【中文标题】vagrant destroy 后保留 vagrant 数据库数据【英文标题】:Keep vagrant database data after vagrant destroy 【发布时间】:2013-08-26 21:35:16 【问题描述】:在 Vagrant 销毁后保留数据库数据的最佳/可接受的做法是什么?
我应该为我的数据库数据创建一个共享文件夹吗?如果是这样(默认情况下)ubuntu 将此类数据存储在哪里?
我忘了提到我的主机和客户操作系统是 Ubuntu,我指的是 mysql
【问题讨论】:
【参考方案1】:每当我vagrant destroy
实例时,或者如果盒子发生问题并且我需要终止进程从而丢失数据时,我需要一种方法来备份我的数据库。我主要使用 CMS 系统,并且持久化后端数据库非常重要。
我已经共享了一个 db
文件夹,其中包含一个在配置时使用的 sql 文件。我安装了vagrant-triggers
插件,并让它在我运行vagrant destroy
命令时运行一个mysqldump.sh 脚本文件。
config.trigger.before :destroy do
info "Dumping the database before destroying the VM..."
run_remote "bash /home/vagrant/db/mysqldump.sh"
end
mysqldump.sh 文件将 mysqldump 命令运行到单独的 backup.sql 文件中。
mysqldump -u root database > /home/vagrant/db/backup.sql
【讨论】:
【参考方案2】:这取决于您使用的 RDBMS。
对于 Ubuntu 上的 MySQL,您可以简单地备份(tar
或 rsync
到远程主机)/var/lib/mysql 文件夹(当 mysql 未运行时)及其配置文件 /etc/mysql
。
对于 PostgreSQL 也是类似的,数据库文件通常在 cd /usr/local/pgsql/data
下。参考File System level backup
注意:避免使用默认的
vboxsf
在来宾和主机之间共享大量文件,因为它存在已知的性能问题。
【讨论】:
【参考方案3】:在框外映射数据库数据似乎是一个不错的解决方案:
[Homestead] Ideas on persisting databases upon vagrant destroy
【讨论】:
以上是关于vagrant destroy 后保留 vagrant 数据库数据的主要内容,如果未能解决你的问题,请参考以下文章
vagrant系列教程:vagrant的配置文件vagrantfile详解(转)