DBeaver で MariaDB に mysqldump --no-data をする際の注意点と TIPS


DBeaver で MariaDB に mysqldump --no-data をする際の注意点

ググっても同様な問題で悩んでいるような事例が見つからなかったので、
かなりニッチと思われるが、件名の内容で手間取ったので備忘録を残す。

Database Task で mysqldump --no-data したら sequence が DDL に含まれない

Windows10 に DBeaver CE 22.0.0 をインストールし、docker の MariaDB 10.6 に使用していた。
DDL をまとめて作ろうと、Database Tasks に mysqldump --no-data な task を作り、 run してみたが、
吐き出された dump ファイルには create sequence が含まれない。

原因

以下記事を読むと、MariaDB の mysqldump に元々そういった不具合があったが、
10.3.26, 10.4.16, 10.5.7 で fixed となったらしい。
jira.mariadb.org: [MDEV-21786]mysqldump will forget sequence definition details on --no-data dump
では、なぜまだ問題がおこるのか。
本来、 MariaDB の mysqldump は mariadb-dump というツールのエイリアスに過ぎない。
参考:MariaDB Knowledge Base: mariadb-dump/mysqldump
しかし、DBeaver CE 22.0.0 Windows 版で使われる mysqldump は MySQL オリジナルのものらしい。
この mysqldump はドライバマネージャの native client (local client とも書かれる)で設定されている。
create sequence で作られる sequence オブジェクトは MariaDB 独自の機能で MySQL には今のところない機能なので、
MariaDB の mysqldump(mariadb-dump) で Fix した不具合が MySQL オリジナルの mysqldump では 再現してしまうのだろう。

解決

以下は前提として、 create sequence を含んだデータベースをバックアップ対象とするとして、
DBeaver CE 22.0.0 をインストールした Windows に MariaDB Community Server 10.6 をインストールし、
mariadb-dump とそのエイリアスの mysqldump をインストールする。
インストール途中で mariadb サーバを起動するか聞かれるが、こちらはスキップして良い。
インストール完了後、Windows の左下のスタートボタンを押下するとMySQL Client という DOS アプリケーションが出てくるので、
それを起動して、DOS プロンプトから "where mysqldump" とコマンド入力すればインストールされたフォルダが分かる。

C:\Program Files\MariaDB 10.6\bin>where mysqldump
C:\Program Files\MariaDB 10.6\bin\mysqldump.exe

C:\Program Files\MariaDB 10.6\bin>where mariadb-dump
C:\Program Files\MariaDB 10.6\bin\mariadb-dump.exe

インストールしたら、 DBeaver の「データベース」->「ドライバマネージャー」から、
「MariaDB」の「編集」を押下して、「ネイティブクライアント」タブを押下。
「ホームを追加」で「where mysqldump」で確認したパスを C:\Pro...\bin まで入力する。

あとは、「create new task」から「MySQL dump」を選び、
「Local clinet:」に先ほど追加したものを選んで進め、

「extra command args:」に --no-data を追加し、task を作成したら run する。

出力された dump ファイルを確認して create sequence が含まれていればOK。