SQLSERVER

SQLSERVER Expressのバックアップ

ありがたいことに、無料で使わせて頂ける、SQLSERVER Express

SQL Server 2017 Express エディション

このエントリ レベルの無料のデータベースで、最大 10 GB サイズの小規模なデータ ドリブンの Web アプリケーションとモバイル アプリケーションを構築します。

10GBを、小規模というのだろうか?

1日~1500件の受注をしている物流システムを作っていたが、
10GBには達していなかったと思うので、
結構、使えるわけですよ。
フルバックアップファイルは、20GBとかになっていましたが。

※有償のSQLSERVER Standardを使用

おまけに、SQLSERVER Management Studio(SSMS)まで無料なので、
※データベースの操作をするソフト
使わない手はないわけで、

弥生会計も、このSQLSERVER Expressを使っています。

 

なにより、商用でも無償で使えるのがありがたいが、機能制限がされており、

  • レプリケーション/ミラー(冗長性)
  • ジョブ(スケジュール)

など、バックアップ系が全くダメだけど、
参 >> ここまで使えるSQL Server Express Edition @IT

外部のジョブ機能を使うなりして、なんとか凌ぐわけですが、
ダウンタイム最小に!ということで、

まず、

SQLSERVERを、GoogleDriveにバックアップ

直接、GoogleDriveにDATAと、BACKUPを作って、指定しようすると怒られるので、

  1. SQLSERVERを停止する。(ファイルのロックを解除する)
  2. \Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL以下にある、DATA / Backupを、まるごとGoogle Driveにコピーする。
  3. Google Drive上のDATA/Backupのシンボリックリンクを、\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL に作る。
    ※大事なことは、Google Drive上にメインデータを置くことです。

シンボリックリンクは、コマンドプロンプトを、管理者モードで起動し、

CD \Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL
mklink /d DATA "\Users\ユーザー名\Google ドライブ\DATA"
mklink /d Backup "\Users\ユーザー名\Google ドライブ\Backup"

を実行。

※ユーザー名のところだけ、書き換え

参 >> Windowsのシンボリックリンクとジャンクションとハードリンクの違い

  1. SQLSERVERを再開する

以上で、自動的に、ファイルがクラウド上にコピーされます。
※おそらく、SQLSERVERの停止時=Windowsの再起動時に、ファイルが保存され、起動時に、クラウドに反映されていると思います。

追記 >> 実際にやってみたら、ファイルがロックされていて、同期が出来ません!

SQLSERVER Expressの定期バックアップを作る

メインファイル以外にも、一般的なスケジュールによるバックアップもやっておきましょう。

Expressでは、ジョブが使えないので、代案として、

  • Windowsのタスクでバックアップ
  • 運用するソフト上で、タイマーを使ってバックアップ

いずれも、上記の設定で、Backupに保存すれば、自動的にクラウド上に保存されます。

例 >>

BACKUP DATABASE [TestDB] TO DISK = N'C:\backup\TestDB.bak' WITH NOFORMAT, NOINIT, NAME = N'TestDB-完全 データベース バックアップ', SKIP, NOREWIND, NOUNLOAD, STATS = 10
 GO

参 >> SQL Server Expressで自動バックアップを作成する方法

 

SQLSERVER Express の冗長化

クラスタ・ミラーが使えないので、別のPCにSQLSERVERを用意しましょう。

追記 >> 上記の通り、コピーさせてくれないので、コールドスタンバイにバックアップから、復元してやるしか、方法はないようです。

  1. 同様にシンボリックリンクを作り、
  2. 起動時に自動実行されないように、サービスを手動にしておきます。=コールドスタンバイ

PCが故障しないかぎり、眠ったままとなりますが、
万が一の時は、

  1. サービスを起動し、
  2. 最新のデータかどうかだけ確認し、
    (足りない時は、バックアップから復元)
  3. 問題なければ、データベースの接続先を変更

死んだPCから、データを抜く必要もないため、ダウンタイムは最小になるはずです。

 

-

SQL Server on Linux

現在、うちで開発している主力製品のサブシリーズのデータベースは、
Microsoft SQLServer Expressで動いているが、
クライアント兼サーバー(親子)としているので、
その機を不意に再起動してしまうと、全滅してしまう・・・

ということで、

別にサーバーを立ててくれとの要望があり、
単独でとなると、やはりそれなりの気を使う。

 

そもそも、親子で使っているのが間違っているんだが、
PC1台分のコストでも、下げてあげたい。
と思った訳だけど、

出来ることなら、別にして、せめて

  • RAID0でも組んだPC上に、(BIOS RAIDでもいい)
  • サーバーOSを載せた上で、

データベース・サーバーぐらいは、動かしたい!

***

ということで、サーバーOSにWindowsを選ぶと、
楽ちんだけど、お金がかかるので、
やっぱり、

帝王のLINUXの登場となる。

「SQL Server Linux」で検索してみると、
まさかと思ったけど、リリースしている。

Editions and supported features of SQL Server 2017 on Linux

SQL Server のエディションを選択します:
1) Evaluation (無料、製品使用権なし、期限 180 日間)
2) Developer (無料、製品使用権なし)
3) Express (無料)
4) Web (有料)
5) Standard (有料)
6) Enterprise (有料)

Expressもあり、無償みたいなので、
OS・DBサーバーともに、無料で使えそう。

※小規模のデータベースで、On Linuxなら、
Mysqlやpostgresqlでいいんだけど、
これまで、SQL Server で構築してきたノウハウがある分、
SQL Serverを選んでしまう。

 

古いPentium D機をRAID 0したやつが、どっかに転がっていたはずなので、
とりあえず、運用テストでもしてみることに。

 

Redhat Linuxは、サポートが有償のLinuxだけど、その派生?のCentOSを使うのが、安心そう。

レッドハットはRHELに含まれているソフトウェアのソースコードをオープンソースライセンスに基づき無償公開している。CentOSは、このソースコードをもとに、レッドハットの商標や商用パッケージ等を除去したものをリビルドしている。CentOSは、White Box Enterprise Linux、Scientific Linux等を含めて、一般に「RHELクローン」と呼ばれることもある。

参 >> CentOS @Wikipedia

続く。

PS.
Linuxの派生ツリー。
途中で消えたやつもあったり、まだ生きてるやつが居たり。

>> Linux ディストリビューション @Wikipedia

-