12,925
回編集
167行目: | 167行目: | ||
<br> | <br> | ||
データベースを作成する。<br> | データベースを作成する。<br> | ||
sudo -u postgres createdb | 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> | ||