代码之家  ›  专栏  ›  技术社区  ›  fightstarr20

弹性Beanstalk-SQLite数据库

  •  0
  • fightstarr20  · 技术社区  · 6 年前

    我有一个简单的javascript站点,我在弹性Beanstalk上托管。此应用程序的一部分使用SQLite数据库来处理日志记录和分析。

    每次部署新版本的弹性数据库时,都会丢失前一版本的弹性数据库。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Sam H.    6 年前

    platform hooks 这样做几乎优雅。创建 .ebextensions 在你的应用程序的根目录中,并在其中创建一个名为 sqlite_backup.conf :

    files:
      /opt/elasticbeanstalk/hooks/preinit/01_sqlite_backup.sh:
        mode: "000755"
        owner: root
        group: root
        content: |
          #!/bin/sh
          # insert shell script which backs up sqlite to s3, something like the following:
          # set backup directory variables
          SRCDIR='/tmp/s3backups'
          DESTDIR='path/to/s3folder'
          BUCKET='s3bucket'
          NOWDATE=`date +%Y-%m-%d`
          sqlite3 test.db ‘.dump’ > $SRCDIR/dbbackup
          cd $SRCDIR
          tar -czPf $NOWDATE-backup.tar.gz dbbackup
          # upload backup to s3
          /usr/bin/s3cmd put $SRCDIR/$NOWDATE-backup.tar.gz s3://$BUCKET/$DESTDIR/
          # check if these persist across deploys - they shouldn't, but if they do, you don't have to backup to S3 (you also have to worry about filling up the disk).
    

    另一个叫 sqlite_restore.conf :

    files:
      /opt/elasticbeanstalk/hooks/postinit/99_sqlite_restore.sh:
        mode: "000755"
        owner: root
        group: root
        content: |
          #!/bin/sh
          # insert shell script which restores sqlite from s3
    

    因为他们的位置 /opt/elasticbeanstalk/hooks/(pre|post)init 他们将在正确的时间运行。文件是按文件名的字母顺序执行的,因此我选择了名称。

    将DBs备份到S3的很好的shell脚本: https://github.com/lumerit/s3-shell-backups

    推荐文章