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,您可以简单地备份(tarrsync 到远程主机)/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:无法让 NFS 工作

3vagrant的3种网络连接方式

vagrant系列教程:vagrant的配置文件vagrantfile详解(转)

使用vagrant在virtual上创建centos7虚拟机

使用vagrant在virtual上创建centos7虚拟机