Lors de l'installation d'une instance OwnCloud, j'ai pris les options par défaut, avec une base SQLite3.
Ceci est visible dans le fichier de configuration :
'52186ab50eee7',
'passwordsalt' => 'ae24c0a26cb22899d0dd54285fee51',
'datadirectory' => '/var/www/owncloud/data',
'dbtype' => 'sqlite3',
'version' => '5.0.17',
'installed' => true,
'maxZipInputSize' => 209715200,
'allowZipDownload' => true,
);
Hors, j'ai sur le serveur plusieurs bases MySQL, qui sont sauvegardées régulièrement, et au final je préférerais donc avoir toutes mes données dans du MySQL (ou MariaDB en l'occurence).
Il est possible de convertir la base SQLite3 en MySQL, puis modifier le fichier de configuration pour faire pointer sur la "bonne" base.
Ceci se fait en plusieurs étapes :
L'installation se fait de la manière suivante (sur debian) :
apt-get install sqlite3
On se positionne ensuite dans le répertoire /var/www/owncloud/data, dans lequel on trouve un fichier owncloud.db,et on lance la commande :
sqlite3 owncloud.db .dump > dump.mycloud.sql
Le format du fichier dump est différent entre les bases sqlite3 et MySQL. Il est donc nécessaire de le convertir. On peut trouver un script python qui effectue cette conversion, via la séquence suivante :
wget http://www.redmine.org/attachments/download/6239/sqlite3-to-mysql.py
chmod a+x sqlite3-to-mysql.py
cat dump.mycloud.sql | python sqlite3-to-mysql.py > owncloud.sql
A ce niveau, le fichier owncloud.sql contient des instructions compatibles avec MySQL.
On va créer une base MySQL, avec les commandes :
mysql -u root --password=ROOTPASS
create database DB;
grant all on DB.* to 'USER'@'localhost' identified by 'PASS'
exit
mysql -u USER --password=PASS DB < owncloud.sql
Il reste à modifier le fichier de configuration pour lui indiquer les nouveaux paramètres. Pour des raisons de sûreté, on fait d'abord une sauvegarde de la configuration avec sqlite3 :
sudo cp config.php config.php.sqlite3
Reste à indiquer les nouveaux paramètres :
'52186ab50eee7',
'passwordsalt' => 'ae24c0a26cb22899d0dd54285fee51',
'datadirectory' => '/data/www/owncloud/data',
'dbtype' => 'mysql',
'dbname' => 'DB',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',
'dbuser' => 'USER',
'dbpassword' => 'PASS',
'installed' => true,
'maxZipInputSize' => 209715200,
'allowZipDownload' => true,
);
On profite maintenant d'une base régulièrement sauvegardée, et de performances nettement améliorées !
Référence : http://fabianpeter.de/cloud/owncloud-migrating-from-sqlite-to-mysql/
Addendum : lors d'un autre essai, j'ai également du modifier des clauses CLOB (sqlite) en LONGTEXT (mysql).