Projet

Général

Profil

Actions

Demande #6423

fermé

Demande #6409: Migrer l'infra en Bookworm

Migrer agir sur Bookworm

Ajouté par Pierre-Louis Bonicoli il y a 8 mois. Mis à jour il y a 7 mois.

Statut:
Résolu
Priorité:
Normale
Assigné à:
Catégorie:
-
Version cible:
Début:
Echéance:
% réalisé:

100%

Temps estimé:
Difficulté:
2 Facile

Mis à jour par François Poulain il y a 7 mois

  • Statut changé de Nouveau à En cours de traitement

D'après Quentin le paquet redmine a été cassé lors de l'install.

Effectivement le log mentionnait une erreur de migration dans les post install.

J'ai peiné, malgré le soutien d'echarp, pour faire fonctionner Bundle.

Mais en fait ça n'est pas utile. En fouillant ya un bin dans le dossier de redmine et on a un bin/rake qui fonctionne.
(j'ignore pk bundle ne fonctionne pas mais il ne va pas m'être nécessaire tout de suite)

Je rejoue la migration et je rejoue bien l'erreur :

# ./bin/rake db:migrate
== 20190510070108 AddUniqueIdToImportItems: migrating =========================
-- change_table(:import_items)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Duplicate column name 'unique_id'

Lisant le code de la migration et étudiant le schéma de la db, je me convainc que, pour une raison incomprise, la colonne unique_id est en trop. La table étant vide de données, je dégage la colonne :

MariaDB [redmine]> ALTER TABLE import_items DROP unique_id;

Je rejoue la migration. J'ai une nouvelle erreur sur la même migration :

== 20190510070108 AddUniqueIdToImportItems: migrating =========================
-- change_table(:import_items)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Index column size too large. The maximum column size is 767 bytes

Après recherche je tombe sur la recommandation de passer le InnoDB Row Formats à « Dynamic ». Je lis la doc et ça semble raisonnable. J'essaie pour la table :

MariaDB [redmine]> ALTER TABLE import_items DROP unique_id;

MariaDB [redmine]> ALTER TABLE import_items ROW_FORMAT=DYNAMIC;

Puis je rejoue les migrations :

(April) root@agir:/usr/share/redmine# ./bin/rake db:migrate
== 20190510070108 AddUniqueIdToImportItems: migrating =========================
-- change_table(:import_items)
   -> 0.3159s
== 20190510070108 AddUniqueIdToImportItems: migrated (0.3161s) ================

== 20190620135549 ChangeRolesNameLimit: migrating =============================
-- change_column(:roles, :name, :string, {:limit=>255, :default=>""})
   -> 0.1822s
== 20190620135549 ChangeRolesNameLimit: migrated (0.1825s) ====================

== 20200826153401 AddTwofaSchemeToUser: migrating =============================
-- add_column(:users, :twofa_scheme, :string)
   -> 0.6474s
== 20200826153401 AddTwofaSchemeToUser: migrated (0.6477s) ====================

== 20200826153402 AddTotpToUser: migrating ====================================
-- add_column(:users, :twofa_totp_key, :string)
   -> 0.3743s
-- add_column(:users, :twofa_totp_last_used_at, :integer)
   -> 0.1999s
== 20200826153402 AddTotpToUser: migrated (0.5745s) ===========================

== 20210704125704 AddTwofaRequiredToGroups: migrating =========================
-- add_column(:users, :twofa_required, :boolean, {:default=>false})
   -> 0.2392s
== 20210704125704 AddTwofaRequiredToGroups: migrated (0.2393s) ================

== 20210705111300 AddProjectsDefaultIssueQueryId: migrating ===================
-- add_column(:projects, :default_issue_query_id, :integer, {:default=>nil})
   -> 0.3391s
== 20210705111300 AddProjectsDefaultIssueQueryId: migrated (0.3392s) ==========

== 20210728131544 DropIsInChlogColumn: migrating ==============================
-- remove_column(:trackers, :is_in_chlog)
   -> 0.7883s
== 20210728131544 DropIsInChlogColumn: migrated (0.7884s) =====================

== 20210801145548 RemoveBccRecipientsSetting: migrating =======================
== 20210801145548 RemoveBccRecipientsSetting: migrated (0.0243s) ==============

== 20210801211024 RemoveOrphanedUserCustomValues: migrating ===================
== 20210801211024 RemoveOrphanedUserCustomValues: migrated (0.0039s) ==========

== 20211213122100 RemoveIdentityUrlFromUsers: migrating =======================
-- remove_column(:users, :identity_url, :string)
   -> 0.1954s
== 20211213122100 RemoveIdentityUrlFromUsers: migrated (0.1955s) ==============

== 20211213122101 DropOpenIdAuthenticationTables: migrating ===================
-- drop_table(:open_id_authentication_associations)
   -> 0.1182s
-- drop_table(:open_id_authentication_nonces)
   -> 0.1070s
== 20211213122101 DropOpenIdAuthenticationTables: migrated (0.2254s) ==========

== 20211213122102 RemoveOpenIdSetting: migrating ==============================
== 20211213122102 RemoveOpenIdSetting: migrated (0.0077s) =====================

== 20220224194639 DeleteOrphanedTimeEntryActivities: migrating ================
== 20220224194639 DeleteOrphanedTimeEntryActivities: migrated (0.0469s) =======

Youpi.

D'après https://mariadb.com/kb/en/innodb-system-variables/#innodb_default_row_format dynamic devrait être le format par défaut. Hors la plupart des tables sont au format compact. C'est probablement lié à l'âge vénérable de notre Redmine, qui aura connu du pg, du my, et du mariadb.

Suggestion: migrer toutes les tables en dynamic pour éviter les futurs soucis de même nature.

Mis à jour par Quentin Gibeaux il y a 7 mois

  • % réalisé changé de 0 à 90

Mis à jour par François Poulain il y a 7 mois

Ça ne concerne que les tables Redmine, d'ailleurs.

MariaDB [(none)]> SELECT TABLE_NAME FROM information_schema.tables where ROW_FORMAT != "Dynamic" and TABLE_SCHEMA = "redmine";
+---------------------------+
| TABLE_NAME                |
+---------------------------+
| groups_users              |
| projects_trackers         |
| user_preferences_VIDE     |
| trackers                  |
| issue_statuses            |
| journal_details           |
| custom_fields             |
| wiki_contents_VIDE        |
| custom_fields_roles       |
| members                   |
| schema_migrations         |
| changesets_issues         |
| permissions_roles         |
| permissions               |
| versions                  |
| documents                 |
| messages                  |
| watchers                  |
| wiki_content_versions     |
| email_addresses           |
| member_roles              |
| custom_fields_trackers    |
| auth_sources              |
| workflows                 |
| wiki_redirects            |
| user_preferences          |
| repositories              |
| news                      |
| custom_values             |
| wiki_pages                |
| boards                    |
| wikis_VIDE                |
| tokens                    |
| issue_categories          |
| roles_managed_roles       |
| enabled_modules           |
| enumerations              |
| wiki_pages_VIDE           |
| wiki_contents             |
| issue_relations           |
| wikis                     |
| changes                   |
| journals                  |
| custom_fields_projects    |
| queries                   |
| comments_VIDE             |
| imports                   |
| issues                    |
| roles                     |
| queries_roles             |
| settings                  |
| comments                  |
| changeset_parents         |
| custom_field_enumerations |
+---------------------------+

Je n'ai pas trouvé comment changer ça en masse dans MAriadb, donc je fais avec un oneliner shell :

$ for table in $(mariadb -e 'SELECT TABLE_NAME FROM information_schema.tables where ROW_FORMAT != "Dynamic" and TABLE_SCHEMA = "redmine";' -B | tail -n +2); do mariadb redmine -e "ALTER TABLE $table ROW_FORMAT=DYNAMIC;"; done

Et à la fin :

MariaDB [(none)]> SELECT TABLE_NAME FROM information_schema.tables where ROW_FORMAT != "Dynamic" and TABLE_SCHEMA = "redmine";
Empty set (1.690 sec)

Mis à jour par François Poulain il y a 7 mois

Je fini la migration de la vm avec apt autoremove, apt clean, une purge et un reboot.

Mis à jour par François Poulain il y a 7 mois

J'imagine que cette configuration soit être également manquante sur plusieurs autres tables Mariadb dans l'infra.

Mis à jour par François Poulain il y a 7 mois

  • Statut changé de En cours de traitement à Résolu
  • % réalisé changé de 90 à 100

Mis à jour par Quentin Gibeaux il y a 7 mois

  • Assigné à mis à Quentin Gibeaux
Actions

Formats disponibles : Atom PDF