0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravel DB Snapshot】DBの簡易ダンプの取り方

Posted at

いつもの spatie 様がたの製作

はじめに

開発環境でDBのダンプを取ったり、開発メンバーに配ったりすることがありますよね
その際 mysqldumppg_dump のコマンドを用意するのは多少コストがかかる...

そこで .env に登録したDBの設定を利用して artisan コマンドから実行しよう、というのがこのライブラリです!

mysql でも postgres でも同じように使えますが、
mysqldumppg_dump 系のコマンドを使用可能な環境である必要があります

インストール

$ composer require spatie/laravel-db-snapshots

# 細かい設定がしたければ
$ php artisan vendor:publish --provider="Spatie\DbSnapshots\DbSnapshotsServiceProvider"

基本的に .env のプライマリDBを参照する

次に、どのディスクに書き出すかを config/filesystems.php に記入する
とりあえずローカルに書き出すと良い
disk 配列に定義できるものであれば、なんでも使える

config/filesystems.php
'disks' => [
    // ...
    'snapshots' => [
        'driver' => 'local',
        'root' => database_path('snapshots'),
    ],
    // ...
]

使い方

# snapshot の保存
$ php artisan snapshot:create
Creating new snapshot...
Snapshot `2024-10-21_00-47-25` created (size: 543 B)

# snapshot の読み込み
$ php artisan snapshot:load
 Which snapshot? [2024-10-21_00-47-25]:
  [0] 2024-10-21_00-47-25
 > 0
Snapshot `2024-10-21_00-47-25` loaded!

基本的にこれだけ!

上記の設定だと database/snapshots/* に保存される
好きな場所に変更するなり、.gitignore に追加するなり好きに使おう

image.png

応用

# 任意の名前を付ける
$ php artisan snapshot:create 20241021_v3_dump
Creating new snapshot...
Snapshot `20241021_v3_dump` created (size: 543 B)

# snapshot を消す
$ sail artisan snapshot:delete
 Which snapshot? [20241021_v3_dump]:
  [0] 20241021_v3_dump
  [1] 2024-10-21_00-47-25
 > 1
Snapshot `2024-10-21_00-47-25` deleted!

正直消す系のコマンドは、ファイル操作でやったほうが良い気がした

[PostgreSQL] Sail 環境下のエラー

Sail 環境で実行しようとしたら以下のエラーが出た
どちらかのバージョンを合わせよう

Error Output
============
pg_dump: error: aborting because of server version mismatch
pg_dump: detail: server version: 17.0 (Debian 17.0-1.pgdg120+1); pg_dump version: 15.7 (Ubuntu 15.7-1.pgdg22.04+1)

Sail コンテナを変更するのは少々コストが高いので、DB側を15に寄せる

      pgsql:
-         image: 'postgres:17'
+         image: 'postgres:15.7'

既存DBを消して再起動する

$ sail down --volumes
$ sail up -d

おわりに

面倒なことは artisan コマンドにやらせようの会

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?