私はVPSでウェブアプリをいくつか運用していますが、
データの管理はRDBSのMySQLを使用しています。
ということでこれのデータ等の引越しを行います。
まずは旧VPSにログインして
# mysql -u root -p mysql> SHOW DATABASES;でデータベース名一覧を取得し、移すべきデータベース名を憶えておきます。
以下ではその対象データベースを"mydb"(1つだけ)として話を進めます。
mydbをバックアップするため以下を実行します。
# mysqldump --single-transaction -u root -p mydb > mydb.sql作成したバックアップファイル"mydb.sql"は新VPSへコピーしておきます。
次に新VPSにログインし以下を実行してサーバ群をセットアップします。
# apt update # apt install mysql-server # apt install mysql-client # apt install php-mysql # /etc/init.d/apache2 reloadまた以下を実行してmysqlを設定します。
# mysql -u root -p mysql> set character_set_client=utf8; mysql> set character_set_connection=utf8; mysql> set character_set_database=utf8; mysql> set character_set_results=utf8; mysql> set character_set_server=utf8; mysql> CREATE USER 'web'@'localhost' IDENTIFIED BY 'password';さらに以下を実行して空のmydbデータベースの作成と設定をします。
mysql> CREATE DATABASE mydb; mysql> GRANT all ON mydb.* TO 'web'@'localhost'; mysql> USE mybd; mysql> set character_set_database=utf8; mysql> show variables like "chara%"; mysql> exit最後に以下を実行してmydbデータベースを復元します。
# mysql -u root -p mydb < mydb.sql一応mydbデータベースが復元できたことを確認しておきます。
# mysql -u root -p mysql> USE mybd; mysql> SHOW TABLES;ところでMySQLってメモリ食うので安いVPSだときついんですよね。
そういうところではPostgreSQLの方が軽いのですが、
今回は歴史的経緯もあってMySQLをそのまま使いました。
で、焼け石に水と思いながらも
設定ファイル"mysql.conf.d/mysqld.cnf"を以下のような感じにしてみました。
key_buffer_size = 1M max_allowed_packet = 8M max_connections = 16 table_open_cache = 1000でメモリ使用量はどうなったかというと、
変更前は
# free
total used free shared buff/cache available
Mem: 979684 741000 89024 1144 305968 238684
Swap: 0 0 0
MySQL停止中は
# /etc/init.d/mysql stop
# free
total used free shared buff/cache available
Mem: 979684 397920 458728 1136 279352 581764
Swap: 0 0 0
変更後は
# /etc/init.d/mysql start
# free
total used free shared buff/cache available
Mem: 979684 728472 105128 1144 302520 251212
Swap: 0 0 0
ということで、やらないよりはまし、ですね。時間があればPosgreSQLに全面移行します。
さて、いつになることか。
0 件のコメント:
コメントを投稿