1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ownCloudのデータベースをデフォルトのSQLiteからMariaDBなどに変更する(CentOS7)

Last updated at Posted at 2020-10-07

背景

  • 事情があってCentOS7で運用していたownCloudをインストールしなおした。(従来のownCloudサーバのバージョンは8系列)
  • データベースをデフォルトのSQLiteにしてしまったので、MariaDBに変更したい(ownCloudもそれを奨めてくる)。
  • 従来運用していたownCloudで利用していたデータベースがMariaDBにあるので、これを上書きして使ってしまってよい。
  • MySQLでも基本的に同じ作業で変換できるはず。

方法

  • 公式ドキュメント Converting Database Type に、occ コマンドを使う方法が書いてある。
    • occdb コマンドを使う。データベース変換機能は 2020.10.07 時点では実験的実装と表示される。(筆者の環境では動画などではない細かい文書ファイル中心に300 GBくらいを同期していますが、問題なく変換できた)
    • ネットで検索すると、日本語で引っかかってくるのは config.php を削除してwebから設定し直すというものが多い。こっちは試していないので、どっちが確実かは未検証。

手順

  • 上記公式ドキュメントに沿って進める。

ownCloud設定ファイルの更新

  • ownCloudの設定ファイル {インストール先}/config/config.php に以下の1行を加える
cinfig.php
'mysql.utf8mb4' => true,

MariaDBの設定更新と再起動

MariaDBのアップデート

# 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 [>---------------------------]

おしまいです

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?