show databases like 'キーワード%';
2020年5月19日火曜日
各DBサイズを調べる(一覧表示)
DBサイズ一覧:
=============
SELECT
table_schema, sum(data_length) /1024/1024 AS mb
FROM
information_schema.tables
GROUP BY
table_schema
ORDER BY
sum(data_length+index_length) DESC;
=============
テーブルサイズ一覧:
===========
SELECT
table_name, engine, table_rows AS tbl_rows,
avg_row_length AS rlen,
floor((data_length+index_length)/1024/1024) AS allmb, #総容量
floor((data_length)/1024/1024) AS dmb, #データ容量
floor((index_length)/1024/1024) AS imb #インデックス容量
FROM
information_schema.tables
WHERE
table_schema=database()
ORDER BY
(data_length+index_length) DESC;
===========
現在の接続しているスレッド数
1)現在の接続しているスレッド数を確認する
mysql> show status like 'Threads_connected';
2)select文で確認
SELECT * FROM information_schema.PROCESSLIST;
プロセスのKill
1)SequelPro/Workbenchで対象のDBに接続を行う
2)以下の手順で、プロセスの確認及びkillを行う。
========
①現在のプロセスの状態を確認する。
SHOW PROCESSLIST;
②処理に60秒以上かかっているプロセスを確認する(rdsadminは除外で確認する。)
SELECT * FROM information_schema.PROCESSLIST WHERE time >= 60 and user != 'rdsadmin';
③以下のコマンドで、削除対象のプロセスを指定する。
KILL [Id];
④再度のプロセスの状態を確認して、対処のプロセスが削除されていること。
SHOW PROCESSLIST;
======
■接続時(Sequel Pro)に以下のエラー表示が出力される。
== error 内容 ==
blocked because of many connection errors; unblock with 'mysqladmin flush-hosts
blocked because of many connection errors; unblock with 'mysqladmin flush-hosts
発生原因:
DB接続に失敗すると発生するエラー
障害内容:
①管理画面からアクセスを行うとDB接続が出来ない状態になる。
->API間のアクセスについては、クレームが出てない。
②接続時(Sequel Pro)に以下のエラー表示が出力される。
== error 内容 ==
blocked because of many connection errors; unblock with 'mysqladmin flush-hosts
調査経緯:
ネット上の情報を収集限り、暫定的な解決方法が多いので
原因特定になる鍵が見つからない状態
それと、error.logに過去ログが残っていないので特定ができない状態。
日中の場合:
対象のDBを接続されている方からロックのエラーが表示を確認されたら
Slackで即時報告してもらう。
業務外
API/RDSのCPU使用率が100%になったら、RDS->EC2再起動を行う。
- EC2を別途設けることも考えたが、作成時間を考慮した場合再起動したほうが早そう。
- ネット情報ですが、再起動すれば解除されるようです。
解消策がない場合
- スナップショットからのリカバリを実施する
対処方法(暫定的な):
①対象のDBにて、以下のコマンドを投入する。
FLUSH HOSTS;
②RDSのパラメータのmax_error_count(10 ->xxxxx)の値を変更する
->65535まで変更可能。
上記、②については、発生するトリガーが不明なのと信憑製が分からないので
①の対処になるかと思う。
Dockerfileの記述方法について
1)FROM
①ベースイメージの設定
②publicのリポジトリを指定して取得するのが楽(例えば、ruby:2.3.3みたいなイメージ)
③複数回指定し複数イメージ作成することが可能だが、その場合は直前の内容までが一つのimageとしてcommitされる
④digestはdocker images --digestsで表示可能
FROM
FROM :
FROM @
例:
FROM nginx:1.15.0-alpine
2)MAINTAINER
作成者情報を設定
MAINTAINER
3)ADD
①新しいファイル、フォルダをコピーする。(圧縮されているファイルは展開される)
例:
ADD
4)COPY
②新しいファイルをフォルダコピーする。(圧縮されているファイルは展開されない)
COPY
->主にxxxx.confファイル系をローカル上からコンテナに送り込むのに便利
5)ENV
③環境変数の設定
ENV
ENV =
6)RUN
①対象のイメージにインストールされているコマンドを実行できる(useradd,yum,apt-get等はよく使う)
RUN
例:
RUN pip install -r requirements.txt
7)EXPOSE
①特定のポートを解放する。
EXPOSE
例:
EXPOSE 9000
8)CMD
①実行するコンテナーのデフォルト値を設定するのが一番の目的
②同じDockerfile内で使用できるのは一回のみ
③ENTRYPOINTに対して引数を設定することも可能
例1:
CMD echo "This is a test." | wc -
例2:
CMD ["/usr/bin/wc", "--help"]
9)WORKDIR
①ワークディレクトリを設定する
②同じDockerfile内に複数回指定可能
③ENVで登録したパスを利用してもよい
例:
/var/www/laravel
Dockerの環境変数について
以下のような環境変数は、アプリの導入時に必要な物なので
AWS側の環境変数には記載しない。
環境変数について:
1)環境変数に変わらない場合
AWSに書く必要はない
2)環境変数によって変わる場合
ステージング・本番環境によって異なるものは、AWS側に記述すること。
3).envファイルなど
中身を開発側に確認が必要!!(OSに関する情報などを意識すること)
メモ:
これらの設定(環境変数)は、composer(PHPのパッケージマネージャ)に必要なものと思われます。
これは、Dockerとして動作する際に必要とし、StagingでもProductionでもコンテナ上は
変わらない設定だと思うので、Dockerfileに書く。
AWSのサービス設定としての環境変数保存について:
Develop、Statging、Productionでそれぞれ異なる設定が必要になるような物
->例えば、データソースのエンドポイント、何かの接続ユーザ名やそのCredentialといったものです。
Dockerコマンド
[タグなしコンテナの削除]
docker system prune
[イメージ全削除]
docker rmi $(docker images -q)
[強制削除]
docker rmi -f [イメージID]
[起動中のコンテナの全停止]
docker ps -q | xargs docker stop | xargs docker rm
[docker 一括削除]
docker rm -f docker ps -a -q
[alpine linuxログイン方法]
docker exec -it コンテナID /bin/ash
[dockerコピー]
(docker > ホスト間)
①以下の方法でコピーを行う。(ローカル環境で実施)
sudo docker cp [docker ID]:[対象のフォルダ] /<—コピー先
例:
sudo docker cp 28631a7dd6e0:yii-1.1.21/testdrive /
Failed to get D-Bus connection: Operation not permittedの対処策
1)systemctlコマンドを行うと以下の様なエラーが出て実行できない。
systemctl
==== Error内容 =======
Failed to get D-Bus connection: Operation not permitted
2)—privilegedを付けて、コンテナを立ち上げてから入ることでsystemctlが使えるようになる。
docker run --privileged --name centos -d centos /sbin/init
3)実施にログインして試す。
docker exec -ti centos bash
docker-composeファイルの記述方法について
Docker compose とは:
以下の様な、個別のコンテナを一括で作成管理をするツールになる。
(個別で、Dokcerfileの実行が不要なので楽)
簡単なイメージ:
project_folder
|-------docker-compose <-----ここにnginxとphpのコンテナ実行に関する記述を記載
|-------nginx
| |----Dockerfile
|-------php
|----Dockerfile
Docker composeの記述方法について:
[image]
イメージを取得
例:
image: ubuntu
[build]
Dockerfile のあるディレクトリのパスを指定する。
例:
build: /path/to/build/dir
[command]
コマンドを使用時に記載
例:
command: bundle exec thin -p 3000
[links]
①コンテナを他のサービスにリンクします。
サービス名とリンク・エイリアス(サービス:エイリアス)を指定できるだけでなく
又は、サービス名(エイリアスとしても使われます)でも指定できます。
例:
links:
- db
- db:database
- redis
②エイリアス名を記述すると、コンテナ内の/etc/hosts の中にサービス名が
追加されるようだ。
例:
172.17.2.186 db
172.17.2.186 database
172.17.2.187 redis
Dockerの環境変数について:
参照先:
①name_PORT
全ての URL です。
例:DB_PORT=tcp://172.17.0.5:5432
②name_PORT_num_protocol
全ての URL です。
例:DB_PORT_5432_TCP=tcp://172.17.0.5:5432
③name_PORT_num_protocol_ADDR
コンテナの IP アドレスです。
例:DB_PORT_5432_TCP_ADDR=172.17.0.5
④name_PORT_num_protocol_PORT
公開するポート番号です。
例:DB_PORT_5432_TCP_PORT=5432
⑤name_PORT_num_protocol_PROTO
プロトコルです(TCP か UDP)。
例:DB_PORT_5432_TCP_PROTO=tcp
⑥name_NAME
コンテナの完全修飾名です。
例:DB_1_NAME=/myapp_web_1/myapp_db_1
登録:
投稿 (Atom)
ローカルLLMでコーディングさせるポイント
簡単な指示で、依頼するとコンテキストオーバーで記憶喪失になって コードの内容が一致しないことが起こるので、work.mdみたいな作業メモを取らせたるのがよい 途中から、別スレッドに再実施する場合でも、work.mdが引き継ぎとして 参照して実施してくれるのがポイント

