背景
- 事情があってCentOS7で運用していたownCloudをインストールしなおした。(従来のownCloudサーバのバージョンは8系列)
- データベースをデフォルトのSQLiteにしてしまったので、MariaDBに変更したい(ownCloudもそれを奨めてくる)。
- 従来運用していたownCloudで利用していたデータベースがMariaDBにあるので、これを上書きして使ってしまってよい。
- MySQLでも基本的に同じ作業で変換できるはず。
方法
- 公式ドキュメント Converting Database Type に、
occ
コマンドを使う方法が書いてある。-
occ
のdb
コマンドを使う。データベース変換機能は 2020.10.07 時点では実験的実装と表示される。(筆者の環境では動画などではない細かい文書ファイル中心に300 GBくらいを同期していますが、問題なく変換できた) - ネットで検索すると、日本語で引っかかってくるのは
config.php
を削除してwebから設定し直すというものが多い。こっちは試していないので、どっちが確実かは未検証。
-
手順
- 上記公式ドキュメントに沿って進める。
ownCloud設定ファイルの更新
- ownCloudの設定ファイル
{インストール先}/config/config.php
に以下の1行を加える
cinfig.php
'mysql.utf8mb4' => true,
MariaDBの設定更新と再起動
MariaDBのアップデート
- 公式ドキュメントの設定は、CentOS7デフォルトのMariaDB5.5では使えないので、MariaDBをバージョン10にアップデート
# rpm -qa | grep -i mariadb
mariadb-5.5.50-1.el7_2.x86_64
mariadb-libs-5.5.56-2.el7.x86_64
mariadb-server-5.5.50-1.el7_2.x86_64
mariadb-libs-5.5.50-1.el7_2.x86_64
mariadb-5.5.56-2.el7.x86_64
# systemctl stop mariadb
# sudo yum update mariadb-server -y
# rpm -qa | grep -i mariadb
MariaDB-common-10.5.5-1.el7.centos.x86_64
MariaDB-server-10.5.5-1.el7.centos.x86_64
MariaDB-client-10.5.5-1.el7.centos.x86_64
MariaDB-compat-10.5.5-1.el7.centos.x86_64
# systemctl start mariadb
# ss -ltn | grep 3306
LISTEN 0 80 :::3306
MariaDBの設定更新
- 設定ファイルをバックアップ
# cp -p /etc/my.cnf /etc/my.cnf.bak
- 設定ファイル
/etc/my.cnf
の[mysqld]
ブロックに設定を追記
/etc/my.cnf
[mysqld]
:
中略 従来の設定内容
:
key_buffer_size = 32M
table_cache = 400
query_cache_size = 128M
#in InnoDB:
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=1
innodb_log_file_size=256M
innodb_log_buffer_size = 128M
innodb_buffer_pool_size=2048M
innodb_buffer_pool_instances=3
innodb_read_io_threads=4
innodb_write_io_threads=4
innodb_io_capacity = 500
innodb_thread_concurrency=2
innodb_file_format=Barracuda
innodb_file_per_table=ON
innodb_large_prefix = 1
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
MariaDBの再起動
# systemctl start mariadb
# systemctl status mariadb
● mariadb.service - MariaDB 10.5.5 database server
:
:
後略
サービスの自動起動
- サービスの自動起動を設定するには、以下を実行
# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
occコマンドでデータベースを変換する
# cd /var/www/html/owncloud
# sudo -u apache php occ db:convert-type --clear-schema --all-apps mysql owncloud 127.0.0.1 owncloud
-
--clear-schema
オプションで、現在のスキーマが上書きされる - この記事を書いた時点(2020.10.07)では、データベース変換機能は実験的(This feature is currently experimental.)であると表示されます。覚悟の上使いましょう。
This feature is currently experimental.
Enter a password to access a target database:
Clearing schema in new database
Creating schema in new database
oc_account_terms
0 [>---------------------------]
:
:
中略
:
:
oc_vcategory_to_object
0 [>---------------------------]
おしまいです