mariadbを10.11(jammy)から11.4(noble numbat)へ切り替え

母艦として利用してるローカルlinuxも、xrdpコンテナもベースosをjammyからnumbatへ切り替えた。

ローカルkubernetesもminikubeからmicrok8sに切り替えて、利用イメージをnumbatへ切り替えた。

google cloudの中のベースosもxrdpも同じくnumbatへ切り替えた。

面倒やし書かへんけど、業務利用してるawsの中のamazonlinux2023で動かしてるコンテナもnumbatのxrdpに変えてみた。

今月けっこうがんばったな。

もしかしてと思ってdockerhub見たら、mariadbもベースosがnumbatのが出てるやん。

ただ上がるだけやったら放置やけど、LTSが出とる。

コンテナのバージョンアップしたほうがええな。

検証利用やし、メモなしで業務利用のawsの中のmariadbをnumbatにバージョン上げてダンプファイル突っ込んだら、あっさり動いた。

今回は母艦の中のdockerで動いてるmariadbをnumbatに上げる。

mariadbのダンプファイルはテキストになってて、createしたりinsertしたりするからデータの保全はほぼ常にできてる。

バージョンの特定

世間一般へのアナウンスは11.4がLTSってなってた。

MariaDB
Check end-of-life, release policy and support schedule for MariaDB.

dockerhubにタグがあって11.4がある。

https://hub.docker.com/_/mariadb

11.4-noble11.4.2ってのと同じdigestになってるから、11.4.2を使えばええっぽい。

11.4.2より新しい11.5ってのもあるけど、LTSやないみたいやから要らん。

ubiってもしや?

なんと、タグ名にubiってのがついてるのがある。

もしかしてUniversalBaseImageの略? redhatのこととちゃうんか?

ググったら出てきた。

UBI based Docker Official Images - MariaDB.org
MariaDB Container Images based on Red Hat UBI images are now available on Docker Hub.

「エンタープライズ向けユーザにお知らせでーす」って赤い帽子かぶってるやん。

いろんなプラットフォームで動いてくれるのはええことかなって思う。

サポートの都合でredhat一択っていうユーザ企業もあるやろし。

redhatは母艦にあるubuntuに比べたら、使ってるカーネルが古い傾向があったはず。

dockerは親ホストとコンテナがカーネル共有するから、わけわかめな誤動作出たらイヤやしubiは使わん。

ibmの息がかかったプロダクトはredhat/centosみたいな末路たどるんとちゃうかってイヤな予感。

mysqlがubi使ってもええけど、mariadb大丈夫か?

もしDBMSを切り替えるとしたら、postgresqlでもええけど、あのデータベースは運用途中で勝手に最適化動いて遅くなるのがイマイチ。

何年か前に業務で、javaのガベージコレクションがまとめて動いたときみたいな、悲惨な応答速度になることが夜間バッチであったな。

別のデータベースの可能性を探しながら様子見るしかないな。

どのへんが変わったか

データベースそのものを変えるときはsql発行で使えんようになったものとか、使ってる処理に制限が出て影響出えへんかを気にする。

シンプルなsqlだけ使ってたら気にせずでええんやけど、ストアドとか使ってたらdbmsの変更すらできん。

世の中にはこのせいでoracleから抜け出せへんユーザ企業あるやろしな。

同じデータベースで、しかもバージョン変更だけやし、djangoから利用するのが前提やから、それほど気にせずアプリケーションテストでほぼ大丈夫なはずやけど、リリースノートは軽く読む。

MariaDB 11.4.2 Release Notes
Status: Stable (GA) | Release Date: 29 May 2024

けっこういっぱい書いてある。
LTSやししゃぁないんかもしれん。

mysqldumpはmariadb-dumpに変わったんかな。
データの流し込みのとき気をつけなアカンかもな。

真面目に英語読んだのは5行。あとは読む気が萎えた・・・。
バグ対処とかいろいろあるんやろな。

型とかsqlは致命的な変更なさそうに思うけど大丈夫なんかなぁ。

事実を列挙するだけやのうて、使う側目線でもうちょっと読みやすかったらええのに。

どう保全するか

扱ってるデータベースには、djangoアプリからお金の情報/時間の情報/活動記録として数値とテキスト、名刺とか受け取り資料のpdf/jpegがblob列に入ってる。

帳簿は7年分を別途でpdf保管してるから、数字とかテキストを目検で追いかけたり、登録可否を確認する。

  1. 古いほうのバージョンのdbmsからのダンプを登録できる(インポート)
  2. 7年分の合計金額が1円単位であう(sql集計の確認)
  3. djangoのmatplotlibで円グラフ表示させてるパーセンテージが小数点以下でズレてへん(djangoでの集計)
  4. 月次の活動記録のテキストとpdf/jpegを任意で拾って化けてたり読み取り不良になってへん(blob列のデコード)
  5. mariadbに設定してるmax_allowed_packetを超えへんサイズのpdfがblob列にinsertできる(blob列へのbase64保管)
  6. 極端に挙動が遅くなってたりせんか(django画面での応答速度)

意識しながらdjangoの画面を開いて確認やな。

コンテナとしての差分

ホンマはOSイメージを指定して1からビルドせんでも、11.4-nobleをベースにしたらええんやけどビルドしてみたい。

実際、awsのamazonlinux2023にdocker入れてやってみたときは、ビルドでわけわかめなエラー出たから11.4-nobleをベースにして使った。

せっかく母艦がubuntu24なんやしビルドからやってみよか。

dockerhubのバージョンタグはgithubにリンクが張られててdockerfileが読める。

mariadb-docker/11.4 at 11135d071fd1fe355b1f7fa99b9d3b4a59bb5225 ?? MariaDB/mariadb-docker
Docker Official Image packaging for MariaDB. Contribute to MariaDB/mariadb-docker development by creating an account on ...

dockerfile以外にも、そこから使われるファイルが置いてある。
ダウンロードして現行のと差分をチェックする。

mariadb-1104

jammyがnobleに変わった以外にも、けっこう差分あるな。

前にdocker-entrypoint.shに実行権つけるように書き足したたことがあった。

ということで、前と同じように自分なりに追記。

RUN chmod +x /usr/local/bin/docker-entrypoint.sh

mariadbのデータ領域削除してみてコンテナ動かす

コンテナ全停止して、mariadbのコンテナ潰しといてdockerイメージも潰す。

kubernetes向けの保管イメージも潰しとく。

その上でmariadbのデータ潰す。

root@nafslinux-ubu24:/docker/nariDockerDat/sv_mariadb11/data# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
root@nafslinux-ubu24:/docker/nariDockerDat/sv_mariadb11/data#
root@nafslinux-ubu24:/docker# cd nariDockerDat/sv_mariadb11
root@nafslinux-ubu24:/docker/nariDockerDat/sv_mariadb11# cd data
root@nafslinux-ubu24:/docker/nariDockerDat/sv_mariadb11/data# rm -fR *  ⭐️キレイさっぽり消える
root@nafslinux-ubu24:/docker/nariDockerDat/sv_mariadb11/data# ls -la
root@nafslinux-ubu24:/docker/nariDockerDat/sv_mariadb11/data#

compose.yml更新しとく。

  sv_mariadb1104: ⭐️変えた
    hostname: svmariadb1104 ⭐️変えた
    build:
      context: ./nariDockerDat/sv_mariadb11/
      dockerfile: sv_mariadb11_Dockerfile.txt
    image: mariadb:1104 ⭐️変えた
    ports:
      - "13306:3306"
    env_file:
      - ./nariDockerDat/sv_mariadb11/env_sv_mariadb11.txt
    volumes:
      - ./nariDockerDat/sv_mariadb11/data:/var/lib/mysql
      - ./nariDockerDat/sv_mariadb11conf:/etc/mysql/conf.d

コンテナを起動する。
1分以内で起動してくる。

root@nafslinux-ubu24:/docker# docker compose start sv_mariadb1104
[+] Running 1/1
 ! sv_mariadb1104 Warning manifest for mariadb:1104 not f...                         2.2s
[+] Building 45.2s (15/15) FINISHED                                        docker:default ⭐️けっこう速くて45秒で済んだ
 => [sv_mariadb1104 internal] load build definition from sv_mariadb11_Dockerfile.tx  0.0s
 => => transferring dockerfile: 6.68kB                                               0.0s
 => [sv_mariadb1104 internal] load metadata for docker.io/library/ubuntu:noble       2.0s
 => [sv_mariadb1104 internal] load .dockerignore                                     0.0s
 => => transferring context: 2B                                                      0.0s
 => [sv_mariadb1104 1/9] FROM docker.io/library/ubuntu:noble@sha256:2e863c44b718727  1.7s
 => => resolve docker.io/library/ubuntu:noble@sha256:2e863c44b718727c860746568e1d54  0.0s
 => => sha256:9c704ecd0c694c4cbdd85e589ac8d1fc3fd8f890b7f3731769a 29.71MB / 29.71MB  0.6s
 => => sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058 1.13kB / 1.13kB  0.0s
 => => sha256:c920ba4cfca05503764b785c16b76d43c83a6df8d1ab107e7e6610000 424B / 424B  0.0s
 => => sha256:35a88802559dd2077e584394471ddaa1a2c5bfd16893b829ea576 2.30kB / 2.30kB  0.0s
 => => extracting sha256:9c704ecd0c694c4cbdd85e589ac8d1fc3fd8f890b7f3731769a5b169eb  1.0s
 => [sv_mariadb1104 internal] load build context                                     0.0s
 => => transferring context: 35.97kB                                                 0.0s
 => [sv_mariadb1104 2/9] RUN groupadd -r mysql && useradd -r -g mysql mysql --home-  0.3s
 => [sv_mariadb1104 3/9] RUN set -eux;  apt-get update;  DEBIAN_FRONTEND=nonintera  22.9s
 => [sv_mariadb1104 4/9] RUN mkdir /docker-entrypoint-initdb.d                       0.1s
 => [sv_mariadb1104 5/9] RUN set -e; echo "deb http://archive.mariadb.org/mariadb-1  0.2s
 => [sv_mariadb1104 6/9] RUN set -ex;  {   echo "mariadb-server" mysql-server/root  16.8s
 => [sv_mariadb1104 7/9] COPY healthcheck.sh /usr/local/bin/healthcheck.sh           0.0s
 => [sv_mariadb1104 8/9] COPY docker-entrypoint.sh /usr/local/bin/                   0.0s
 => [sv_mariadb1104 9/9] RUN chmod +x /usr/local/bin/docker-entrypoint.sh            0.2s ⭐️足したところ動いとる
 => [sv_mariadb1104] exporting to image                                              0.9s
 => => exporting layers                                                              0.9s
 => => writing image sha256:e957c2041640b6829d4737cff0da1ccb4bf7411fe0dd946d2e91a55  0.0s
 => => naming to docker.io/library/mariadb:1104                                      0.0s
 => [sv_mariadb1104] resolving provenance for metadata file                          0.0s
[+] Running 1/1
 ✔ Container docker-sv_mariadb1104-1   Starte...                                     0.5s
root@nafslinux-ubu24:/docker#

データ領域潰してるからdbmsの初期化が動いてるはず。ログ見てみると初期化処理動いてるっぽい。

root@nafslinux-ubu24:/docker# docker logs docker-sv_mariadb1104-1
2024-07-27 07:10:15+09:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.2+maria~ubu2404 started.
2024-07-27 07:10:15+09:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2024-07-27 07:10:15+09:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2024-07-27 07:10:15+09:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.2+maria~ubu2404 started.
2024-07-27 07:10:15+09:00 [Note] [Entrypoint]: Initializing database files


PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following command:

'/usr/bin/mariadb-secure-installation'

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the MariaDB Knowledgebase at https://mariadb.com/kb

Please report any problems at https://mariadb.org/jira

The latest information about MariaDB is available at https://mariadb.org/.

Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/

2024-07-27 07:10:16+09:00 [Note] [Entrypoint]: Database files initialized ⭐️初期化やっとるな
2024-07-27 07:10:16+09:00 [Note] [Entrypoint]: Starting temporary server
2024-07-27 07:10:16+09:00 [Note] [Entrypoint]: Waiting for server startup
2024-07-27 07:10:17+09:00 [Note] [Entrypoint]: Temporary server started.
2024-07-27 07:10:17+09:00 [Note] [Entrypoint]: Creating database nariDB_1st
2024-07-27 07:10:17+09:00 [Note] [Entrypoint]: Creating user nari
2024-07-27 07:10:17+09:00 [Note] [Entrypoint]: Giving user nari access to schema nariDB_1st
2024-07-27 07:10:17+09:00 [Note] [Entrypoint]: Securing system users (equivalent to running mysql_secure_installation)

2024-07-27 07:10:17+09:00 [Note] [Entrypoint]: Stopping temporary server
2024-07-27 07:10:18+09:00 [Note] [Entrypoint]: Temporary server stopped ⭐️2秒ぐらいで初期化終わっとるな

2024-07-27 07:10:18+09:00 [Note] [Entrypoint]: MariaDB init process done. Ready for start up.

root@nafslinux-ubu24:/docker#

データ流し込みに必要なモジュール

いけたなと思ったら、1つ思い出した。

mariadbにデータ流し込むときに使うmysqlクライアントが入ってへんことに気づいた。

whichしたら出てこおへんけど、aptしたら入りそう。

dockerfileに書き足してやりなおしやな。

root@nafslinux-ubu24:/docker# docker exec -it docker-sv_mariadb1104-1 bash
root@svmariadb1104:/# which mysql ⭐️あらへん
root@svmariadb1104:/#
root@svmariadb1104:/# apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
:(中略)
root@svmariadb1104:/# apt install mysql-client
:(中略)
The following NEW packages will be installed:
  mysql-client mysql-client-8.0 mysql-client-core-8.0
0 upgraded, 3 newly installed, 4 to remove and 2 not upgraded.
Need to get 2826 kB of archives.
After this operation, 108 MB disk space will be freed.
Do you want to continue? [Y/n] ⭐️mysql-client足せるみたいやな

元々のdockerfileはたぶん、サイズが最小限になるように工夫して作ってあるように見える。

自分用やし、dockerfileの後ろのほうに気にせず書き足す。

:(中略)
RUN apt-get update ; apt-get install -y mysql-client ⭐️足してちょ

VOLUME /var/lib/mysql

COPY healthcheck.sh /usr/local/bin/healthcheck.sh
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]

EXPOSE 3306
CMD ["mariadbd"]

ビルドしなおして動かしたらwhichで見えるようになった。

root@nafslinux-ubu24:/docker# docker exec -it docker-sv_mariadb1104-1 bash
root@svmariadb1104:/# which mysql
/usr/bin/mysql ⭐️あるやん
root@svmariadb1104:/#

後で気づいたけど、mysqlクライアントはmariadbクライアントになったらしい。
最初はmysqlクライアント入れたけど、後で使わないことにした。

データの流し込み

自分用のリストアのスクリプトがあって、teratermのマクロ呼び出してる。

その中にコンテナの名前書いてる箇所あるのと、呼び出してるシェルスクリプトも修正してから実行する。

include 'Y:_connect\connect\teraIni\gvis.ini'

; --- 接続 --------------
 conSTR = 'naFSlinux.intra.gavann-it.com /ssh /2 /auth=password /user=nari /passwd='
 strconcat conSTR gvis_nari
 strconcat conSTR ' /F='
 strconcat conSTR gvis_iPTH
 strconcat conSTR 'yellow151x42.INI '
 strconcat conSTR '/timeout='
 strconcat conSTR gvis_TOUT

 connect conSTR
 if result <> 2 goto end


; --- rootになる --------------
wait gvis_wS1
sendln "su - "

wait gvis_wS3
sendln gvis_MAIN


; --- mariaDBのコンテナを停止 --------------
wait gvis_wS2
sendln "cd /docker"

wait gvis_wS2
sendln "docker compose stop sv_mariadb1104" ⭐️変えた

; --- ワークフォルダへ移動 --------------
wait gvis_wS2
sendln "cd /docker/nariDockerDat/_tmp"


; --- unzipしてtar展開 --------------
conSTR = "unzip -P "
strconcat conSTR gvis_psw2
strconcat conSTR ' Docker.zip '
wait gvis_wS2
sendln conSTR

conSTR = "tar xzf Docker.tar.gz ./Docker/nariDockerDat/sv_mariadb11"
wait gvis_wS2
sendln conSTR

wait gvis_wS2
sendln "cd /docker/nariDockerDat/_tmp"

wait gvis_wS2
sendln "rm -f Docker.zip Docker.tar.gz"

; --- コンテナ利用の永続領域を置き換え --------------
wait gvis_wS2
sendln "cd /docker/nariDockerDat"

wait gvis_wS2
sendln "rm -fR sv_mariadb11"

wait gvis_wS2
sendln "mv /docker/nariDockerDat/_tmp/Docker/nariDockerDat/sv_mariadb11 ./"

wait gvis_wS2
sendln "chown -R nari:nari /docker/nariDockerDat/sv_mariadb11"

wait gvis_wS2
sendln "rm -fR /docker/nariDockerDat/_tmp/Docker"

; --- コンテナ起動 --------------
wait gvis_wS2
sendln "docker compose up -d sv_mariadb1104" ⭐️変えた
wait gvis_wS2
sendln "sleep 10"

; --- mariaDBにDjango用領域を流し込み --------------
wait gvis_wS2
sendln "cd /docker"

wait gvis_wS2
sendln "/bin/sh /docker/djangoDB11restore.sh"

呼び出してるスクリプトの細かい修正は省くけど、流したらあっさり動く。

基本的な接続(a5sqlからつなぐ)

sql使ってバージョン確認、基本的なテーブルとデータの存在を確認する。

-- dbmsのバージョン
select @@version ;

-- mariadbに対するオプション指定の確認
SHOW VARIABLES LIKE 'max_allowed_packet';

-- mariadbのテーブル確認
SHOW tables ;

-- データ入ってる件数の確認
SELECT count(*) FROM GVIS_keihi ;

-- betweenで月指定変えながら、経費テーブルに特定の日付のデータ入ってるか確認
SELECT * FROM GVIS_keihi
WHERE year(workPeriod) = 2024 and month(workPeriod) between 6 and 7
order by workPeriod desc , workShubetsu, workPriority ;

-- 支払った消費税が入ってるか確認
select Kamoku,Tax8Kng,Tax10Kng from GVIS_keihi where Tax8Kng > 0 or Tax10Kng > 0 ;

ダンプファイルは2GB程度。

1つのmariadbに、本番/テスト用の2つのデータベース入ってるから、それぞれで確認した。

⭐️バージョン確認OK。

mariadb-1104

⭐️マウントしてるcnfファイルからのパラメータ反映OK。

mariadb-1104

⭐️djangoが使う管理用テーブルと、自分の業務テーブルの存在確認OK。

mariadb-1104

⭐️特定のテーブルのレコード件数確認OK。

mariadb-1104

⭐️経費テーブルに特定の日付のデータ入って確認OK。

mariadb-1104

⭐️8%と10%の消費税入ってる確認OK。

mariadb-1104

ここで最初に検討したリストのうち1つ目「dbmsからのダンプを登録できる」は完了。

確認終わった後で、a5sqlからの接続名を1011から1104に変更。

ポートとか接続先は変わらん。

djangoアプリケーションからの接続

こっからアプリケーション確認。

まずはdjangoのコンテナに入って、db接続のエラーにならんようにマイグレーション動かしてく。

djangoのコンテナは再起動も必要。

これやっとかんと接続情報同じでもつながらん。

djangoのRuntimeWarningってのあっても動くけど、そろそろ対処せなあかんなぁ。

nari@nafslinux-ubu24:~$ docker exec -it docker-sv_django-1 bash
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
root@svdjango:/# cd /code/app
root@svdjango:/code/app# /usr/local/bin/python3 manage.py makemigrations gvisWebApp
/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py:98: RuntimeWarning: Accessing the database during app initialization is discouraged. To fix this warning, avoid executing queries in AppConfig.ready() or when your app modules are imported.
  warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning)
No changes detected in app 'gvisWebApp'
root@svdjango:/code/app# /usr/local/bin/python3 manage.py migrate gvisWebApp
/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py:98: RuntimeWarning: Accessing the database during app initialization is discouraged. To fix this warning, avoid executing queries in AppConfig.ready() or when your app modules are imported.
  warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning)
Operations to perform:
  Apply all migrations: gvisWebApp
Running migrations:
  No migrations to apply.
root@svdjango:/code/app# exit
exit
nari@nafslinux-ubu24:~$ dc
nari@nafslinux-ubu24:/docker$ docker compose restart sv_django
[+] Restarting 1/1
 ✔ Container docker-sv_django-1  Started                                            10.3s
nari@nafslinux-ubu24:/docker$

djangoのコンテナで動かしてるアプリケーションには、バージョン情報とかステータス確認できる画面を作ってある。

phpやったらバージョンとかロードしてるモジュールとかわかるんやけど、djangoはなさそうやから最初の頃に作った(ホンマはどっかにあるんかもしれんけど)。

mariadb-1104

周辺処理がホンマはいろいろあるねんけど、templatesに渡すためのデータベースの情報とってきてるviewのところだけでいうとこのへん。

def index(request):

    data = GvisMstKamoku.objects.db_manager("default").all()
    dataZ = GvisZaiko.objects.db_manager("default").filter( serialshubetsu='GVH',
                                                                serialseq1__range=["2014","2018"],
                                                                toroku__range=["2014-01-01", "2021-01-01"]
                                                                ).all()
    dataGoukei = GvisZaiko.objects.db_manager("default").filter( serialshubetsu='GVH',
                                                                serialseq1__range=["2014","2018"],
                                                                toroku__range=["2014-01-01", "2021-01-01"]
                                                                ).all().aggregate(sum=Sum('shutokukng'))['sum']

    ## モデルを使わずにsql発行
    con = connections['default']
    cursor = con.cursor()

    cursor.execute("select version()")
    dbversion = cursor.fetchall()

    cursor.execute("show databases")
    ichiran = cursor.fetchall()

    cursor.execute("select database()")
    currentdb = cursor.fetchall()

    cursor.execute("select count(*) from GVIS_zaiko")
    kensuu = cursor.fetchall()

    date_TIMEZONE = timezone.get_current_timezone_name
    date_ima = datetime.now()

    context = { 
        'platform_uname': platform.uname,
        'sys_version': sys.version,
        'django_version': django.VERSION,
        'data': data,
        'dataZ': dataZ, 
        'dataGoukei': dataGoukei,
        'dbversion': dbversion,
        'ichiran': ichiran,
        'currentdb': currentdb,
        'kensuu': kensuu,
        'date_TIMEZONE': date_TIMEZONE,
        'date_ima': date_ima
    }
    return render(request, 'gvisDjango3/gvisDjango3Top.html',context)

表示させたら、11.4のmariadb動いてるのがわかった。

動作確認

さてこっからデータの表示確認。

djangoの認証システム関連確認

djangoにはデータベースに入れてる認証情報がある。

mariadb-1104

テーブル一覧にあるauth_xxxってある。認証やないかもしれんけどdjango_xxxってのもあってこのへんも稼働には必要。

sqliteとかpostgresqlとか使っても同じ情報が入るはずで、自分のはmariadbね。

認証関連は自分で実装せずにdjango本体のを使ってて、ログイン画面が開くにはデータベースが最初から読めてへんとweb表示する時点でINTERNAL ERRORってエラー表示される。

たとえば、さっきのマイグレーション処理やるの忘れたらエラー表示される。

せやから、ログイン画面が表示できたらdjangoのシステムテーブル確認はOK。

mariadb-1104

この画面が表示できたら、django本体の認証システム関連OK。

mariadb-1104

利用ユーザの増減とか、パスワード設定はここで変えられる。

djangoのアプリ確認

次は業務テーブルの中のinteger/string/blobの確認。

ここが利用する側のメイン確認。

最初に検討したリストのうち1つ目(dbmsからのダンプを登録できる)は終わってるから、残りを順番にやってく。

帳簿の画面はpdfになってるからそれと比べる。

7年分の合計金額が1円単位であう(sql集計の確認)

過去7年分の帳簿と、djangoアプリの画面の数字合計を比べる。

以下、それぞれ2箇所ある赤い囲みと青い囲みの所について、7年分の売り上げ合計と、労働時間合計、ついでに消費税があってることを確認。

mariadb-1104

3年ぐらい前までphp使ってて、その後djangoに切り替えたから小数点以下の表記があるのはdjangoの分だけってところもあるけど完全一致した。

djangoのmatplotlibで円グラフ表示させてるパーセンテージが小数点以下でズレてへん(djangoでの集計)

matplotlibってのはdjangoで使ってる円グラフ表示のライブラリ。

グラフ表示は自分の目安として表示させてて、年度内の費用の食い方の傾向が前年と大きく変わってないかを見るために使ってる。

って、グラフは過去7年分の帳簿に残してへんやんけ・・・。
google cloudの本番データと見比べる。

mariadb-1104

グラフ表記の中の凡例箇所の数値が、7年分そろってるかどうかの確認。

おお、いけとる。

月次の活動記録のテキストとpdf/jpegを任意で拾って化けてたり読み取り不良になってへん(blob列のデコード)

テキストで保管してる活動記録を無作為に開いてみて読めること確認。5年前はubuntu18使ってたんやなぁ。

mariadb-1104

結果は割愛するけど、jpegも無作為に開いて、崩れなく目視できてOK。

pdfってわかりにくいけど、ブラウザでインライン表記できてて上のほうにページ番号指定とか拡大・縮小指定とか表示されてて化けたり表示エラーになったりしてへん。

mariadb-1104

blobも見えとるな。
昔買った1.5TBの2.5インチディスクはまだ動いてるで。

mariadbに設定してるmax_allowed_packetを超えへんサイズのpdfがblob列に登録できる(blob列へのbase64保管)

jpeg/pdfとかはさっき確認したからselectできてるやんな。

データのinsertやってみよっか。

あんまり大きいと書き込みに時間かかるから、10MBをアップロード上限にしてる。

小さな譜面のpdfがあったからこれ使う。

古い全音のムーンライトソナタの楽譜は16ページで、pdfでは7.7MB。

base64保管にしたらファイルサイズ増えるけど、ギリギリ10MB未満ぐらいにならんかな。

mariadb-1104

おお、入った。

ちゃんと1ページ目を小さいjpegに変換して、リストの中でプレビューできとる。

mariadb-1104

開いてみたら、ちゃんとブラウザにインライン展開できよる。
3楽章目までちゃんと読めるやん。

mariadb-1104

この譜面は全集で買い替えたけど、元は1963年発行の単品譜面で黄色くなってしもてる(なんと65円!!)。

ベートーベン先生の激しい旋律は220年以上経った今でも色褪せんなぁ。

極端に挙動が遅くなってたりせんか(django画面での応答速度)

業務で扱うなら厳密にやるとストップウォッチ使うんかもしれんけど、自分用やし感覚でいっとく。

検索したり登録したり、異様に遅くなったりしてへんかって確認。
linuxのdockerコンテナとしては遅くなったりはせんかった。

microk8sのkubernetesやったら遅いんやろなぁ。

タイトルとURLをコピーしました