「サーバ - REST API」の版間の差分

ナビゲーションに移動 検索に移動
167行目: 167行目:
<br>
<br>
データベースを作成する。<br>
データベースを作成する。<br>
  sudo -u postgres createdb myapi_db
  sudo -u postgres createdb   <任意のデータベース名>
  sudo -u postgres createuser myapi_user
  sudo -u postgres createuser <任意のデータベースユーザ名>
<br>
==== MariaDBを使用する場合 ====
===== MariaDBのインストール =====
MariaDBをインストールする。<br>
# RHEL
sudo dnf install
# SUSE
sudo zypper install
# Raspberry Pi
sudo apt install mariadb-server mariadb-client
<br>
MariaDBのセキュリティを設定する。<br>
* rootパスワードの設定
* anonymousユーザの削除
* リモートrootログインの禁止
* テストデータベースの削除
* 権限テーブルの再読み込み
<br>
sudo mysql_secure_installation
<br>
MariaDBへログインして、データベースの作成、ユーザの作成、権限の設定を行う。<br>
sudo mysql -u root -p
# データベースとユーザの作成
CREATE DATABASE <<任意のデータベース名>;
CREATE USER '<任意のデータベースユーザ名>'@'localhost' IDENTIFIED BY '<データベースユーザのパスワード>';
# 権限の設定
GRANT ALL PRIVILEGES ON <<任意のデータベース名>.* TO '<任意のデータベースユーザ名>'@'localhost';
# 設定を反映
FLUSH PRIVILEGES;
<br>
MariaDB向けPythonドライバをインストールする。<br>
pip install mysql-connector-python sqlalchemy mysqlclient
# または
pip3 install mysql-connector-python sqlalchemy mysqlclient
<br>
必要な場合は、MariaDBのパフォーマンスの最適化を行う。<br>
<syntaxhighlight lang="ini">
[mysqld]
# バッファプールサイズ (利用可能メモリの50-70[%]程度)
innodb_buffer_pool_size = 1G
# クエリキャッシュ
query_cache_type = 1
query_cache_size = 128M
# 接続数の設定
max_connections = 150
# スレッドキャッシュ
thread_cache_size = 8
# テーブルオープンキャッシュ
table_open_cache = 2000
# InnoDBの設定
innodb_file_per_table          = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size        = 16M
</syntaxhighlight>
<br>
===== バックアップ設定 =====
バックアップスクリプトを作成する。<br>
<br>
<syntaxhighlight lang="sh">
#!/usr/bin/env sh
BACKUP_DIR="<任意のバックアップディレクトリ  例: /var/backups/mysql>"
BACKUP_FILE="<任意のバックアップファイル名  例: myapi_db>"
DATE=$(date +%Y%m%d_%H%M%S)                      # 日付を付加する場合
BACKUP_FILE="$BACKUP_DIR/$BACKUP_FILE_$DATE.sql"  # バックアップファイルのパス
# バックアップの作成
# 例: mysqldump -u myapi_user myapi_db > $BACKUP_FILE
mysqldump -u <データベースユーザ名> <データベース名> > $BACKUP_FILE
# 圧縮
gzip $BACKUP_FILE
# 30日以上前のバックアップを削除 (オプション)
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete
</syntaxhighlight>
<br>
===== MariaDBのメンテナンス =====
定期的な実行が推奨されるメンテナンスを行う。<br>
<br>
<syntaxhighlight lang="mysql">
-- テーブルの分析
ANALYZE TABLE items;
-- テーブルの最適化
OPTIMIZE TABLE items;
-- インデックスの使用状況確認
SHOW INDEX FROM items;
-- スロークエリの確認
SHOW VARIABLES LIKE '%slow%';
SHOW VARIABLES LIKE '%long%';
</syntaxhighlight>
<br><br>
<br><br>


案内メニュー