FAQ:UpgradeVMCentrale

De WikiFr_dbSQWare
Aller à : navigation, rechercher

Sommaire

 [masquer

Généralités


Attention.png
Warning:
Avant toutes choses, nous vous conseillons de prendre contact avec le support avant de vous lancer dans ces manipulations !.


Limites de cette section

Cette section n’a pas la prétention de traiter tous les cas possibles d'upgrade de la VM centrale de dbSQWare.
Quand on parle d'upgrade, c'est de la partie système dont on parle !
Passer par exemple d'une machine CentOS 7 vers une Rocky Linux 9 ... C'est ce cas précis que nous prendrons en exemple, upgrade d'une installation faite par l'OVF fourni vers une nouvelle version de l'OVF.
Pour autant, la technique utilisée restera la même si vous avez fait une installation vierge, même sur un autre OS, etc ...

Ce chapitre ne traite pas les changements de paramétrages ou autre (pour l’installation du socle central, pour les autres paramétrages, reportez-vous aux sections adéquates).

MODOP général d'upgrade

Le principe est toujours plus ou moins le même ...

  • Installation d'une nouvelle VM centrale avec une IP tempo
  • Première synchro des répertoires (pour limiter le downtime)
  • Arrêt des cron de l'ancienne VM
  • Synchro complète (répertoires, bdd, etc ...)
  • Ajustement si nécessaire des paramètres de la nouvelle plateforme
  • Arrêt ancienne machine et reprise de l'IP sur la nouvelle machine

Installation d'une nouvelle VM centrale

Installation

Pour cette partie vous avez deux possibilités :

Paramétrages pour la migration


Note.png
Note:
Dans ce MODOP nous partons de l'hypothèse que la machine source s'appelle srvdbsqware et la machine cible vmsqwarebox !.


Vérification de la taille des $HOME de chaque utilisateurs

Vérifier que la nouvelle machine aura l'espace disponible pour recevoir les home des utilisateurs.
Depuis l'utilisateur root de la machine source :

root@srvdbsqware:/root # cd /home/
root@srvdbsqware:/home # du -sh dbsqware mssql mysql oracle postgres sybase
1.2G    dbsqware
30M     mssql
200M    mysql
652K    oracle
156K    postgres
36K     sybase

Depuis l'utilisateur root de la machine cible :

root@vmsqwarebox:/root # df -h
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     4.0M     0  4.0M   0% /dev
tmpfs                        1.8G     0  1.8G   0% /dev/shm
tmpfs                        732M   67M  666M  10% /run
/dev/mapper/root_vg-root      10G  3.2G  6.9G  32% /
/dev/sda2                    960M  366M  595M  39% /boot
/dev/mapper/root_vg-var      5.0G  489M  4.5G  10% /var
/dev/sda1                    599M  7.1M  592M   2% /boot/efi
/dev/mapper/data_vg-applis   5.0G  4.4G  652M  88% /applis
/dev/mapper/data_vg-backups   10G  179M  9.8G   2% /backups
/dev/mapper/data_vg-home      10G  2.3G  7.7G  23% /home
/dev/mapper/data_vg-data      15G  1.8G   14G  12% /data
tmpfs                        366M  4.0K  366M   1% /run/user/1000

Ici on a 7,7G d'espace disponible pour environ 2G de données à transférer on peut continuer.

Echange de clé ssh

On va utiliser rsync pour transférer les données et pouvoir faire un transfert différentiel après le décommissionnement de la machine source.
Pour ces manipulations il faut que la clé ssh de l'utilisateur root de la machine source soit présent dans la session de l'utilisateur root de la machine de destination (et uniquement dans ce sens).

Transfert de clé via ssh

Avec l'utilisateur root de la machine source :

root@srvdbsqware :/root # ssh-copy-id root@vmsqwarebox
root@srvdbsqware:/root/.ssh # ssh-copy-id root@vmsqwarebox
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'vmsqwarebox (<IP>)' can't be established.
ED25519 key fingerprint is SHA256:3WWyOqGAdLAUq56CMrop/9a40DxbnVoMpsZXU+HXPD0.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@vmsqwarebox's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@vmsqwarebox'"
and check to make sure that only the key(s) you wanted were added.

Copier/coller de la clé

Vous pouvez également faire la copie de la clé à la main, si vous préférez, ou si la version de ssh sur la machine source ne supporte pas ssh-copy-id.
Avec l'utilisateur root de la machine source :

root@srvdbsqware :/root # cat /root/.ssh/id_rsa.pub
ssh-rsa 7NgPkiCq71p6FzvlU1yf8CRrlPjV+3l0NeiML8rxWoR8omtsi+VO7WGnnldHSq10pDn0alzZFqGp0lmwBnW+u+r5X1uvcwqS4D
zNiCYjtAv4QEmBPbizucZovuoPE8zdJ/Fe+AllF5qTD8/k31JCWIH2krCATo/rkvUelxxvCJyKNhOjUF6w07xwGbi40X3uLUlg1x3ruUQz/
MYosO8VLHy+DVtERjwJrZwOQ7kEgNWrha/UvNu6HsP3VqKL3fQaqrIpWAemaH6Ck+dBnn02zhwWai8II1MAFgBWhq1JXTLz5n/ZzkZWEPy5ZGGjE= root@vmsqwarebox <br>

Copiez l'intégralité de la clé, puis avec l'utilisateur root de la machine de destination :

root@srvdbsqware :/root # vi /root/.ssh/authorized_keys
~
~
~
~
~
~
~
~
~
~
"~/.ssh/authorized_keys" 0L, 0B

Collez dans ce fichier la clé copiée plus tôt.

ssh-rsa 7NgPkiCq71p6FzvlU1yf8CRrlPjV+3l0NeiML8rxWoR8omtsi+VO7WGnnldHSq10pDn0alzZFqGp0lmwBnW+u+r5X1uvcwqS4D
zNiCYjtAv4QEmBPbizucZovuoPE8zdJ/Fe+AllF5qTD8/k31JCWIH2krCATo/rkvUelxxvCJyKNhOjUF6w07xwGbi40X3uLUlg1x3ruUQz/
MYosO8VLHy+DVtERjwJrZwOQ7kEgNWrha/UvNu6HsP3VqKL3fQaqrIpWAemaH6Ck+dBnn02zhwWai8II1MAFgBWhq1JXTLz5n/ZzkZWEPy5ZGGjE= root@vmsqwarebox <br>
~
~
~
~

Sauvegardez le fichier.

On test la connexion ssh

Avec l'utilisateur root de la machine source :

ssh 'root@vmsqwarebox'

Last login: Mon Feb 10 10:49:04 2024
root@vmsqwarebox:/root #

Sauvegarde des crontab

Avec l'utilisateurs root sur la machine source :

1 #root@srvdbsqware
2 for lvsqw_User in `echo 'dbsqware mssql mysql oracle postgres sybase'`
3 do
4 su - $lvsqw_User -c "echo '###########################';echo '$lvsqw_User';crontab -l> \$HOME/CrontabRef_srvdbsqware01;cat \$HOME/CrontabRef_srvdbsqware01"
5 done

Première synchronisation des répertoires


Attention.png
Warning:
Si jamais vous n'utilisez pas pour la machine source ET la machine de destination, ou si vous avez personnalisé l'environnement il faudra vérifier et adapter les commandes qui suivent.


Information.png
Information:
Les délais de synchronisation peuvent varier en fonction de votre réseau, de la quantité d'hôtes dans votre repository, et des fonctionnalités utilisées comme les rapports AWR ou les slowquery ....

Première synchronisation des home

Avec l'utilisateur root de la machine source

 1 cd /home/dbsqware
 2 rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh admin CrontabRef* dbSQWare depl_all.ksh sqwConfig root@vmsqwarebox:/home/dbsqware/.
 3 cd /home/mssql
 4 rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh admin CrontabRef* logs sqwConfig .passwd_mssql root@vmsqwarebox:/home/mssql/.
 5 cd /home/mysql
 6 rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh admin CrontabRef* logs MYS_DBA_PRD sqwConfig .passwd_mysql root@vmsqwarebox:/home/mysql/.
 7 cd /home/oracle
 8 rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh admin CrontabRef* logs sqwConfig .passwd_oracle root@vmsqwarebox:/home/oracle/.
 9 cd /home/postgres
10 rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh admin CrontabRef* sqwConfig .passwd_postgres root@vmsqwarebox:/home/postgres/.
11 cd /home/sybase
12 rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh CrontabRef* root@vmsqwarebox:/home/sybase/.


Note.png
Note:
En fonction de vos configurations certains fichiers et, ou dossiers peuvent ne pas exister, il faut donc relancer la ligne de commande correspondante en ayant supprimé l'argument en question.


Exemple d'erreurs

Lisez bien l'erreur au début ou à la fin de la ligne rsync vous aide à identifier ce qu'il se passe avec [SENDER] ou [DESTINATION].

  • [SENDER] L'erreur vient de la source, en général le fichier ou le dossier en argument n'existe pas, ou bien l'échange ne clé n'est pas fait, n'a pas fonctionné,
  • [DESTINATION] L'erreur vient de la destination, en général le dossier dans lequel vous voulez copier n'existe pas, ou il y a un problème de droits dans ce dossier, ou bien l'échange ne clé n'est pas fait, n'a pas fonctionné.

Exemple avec l'utilisateur root depuis la machine source; et certains éléments seulement :

rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh CrontabRef* admin root@vmsqwarebox:/home/dbsqware/.
sending incremental file list
rsync: [sender] link_stat "/home/dbsqware/admin" failed: No such file or directory (2)

sent 388 bytes  received Xx bytes  802.00 bytes/sec
total size is Xx  speedup is Xx
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1330) [sender=3.2.3]

On supprime l'argument "admin" de la commande :

rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh CrontabRef* root@vmsqwarebox:/home/dbsqware/.
sending incremental file list
CrontabRef
.ssh/
.ssh/authorized_keys
.ssh/config
.ssh/id_rsa
.ssh/id_rsa.pub
.ssh/known_hosts
.ssh/openssl.cnf

sent Xx,XX bytes  received Xx bytes  197,768.00 bytes/sec
total size is Xx  speedup is XxX.Xx

Synchronisation des sauvegardes

On commence par vérifier quels sont les répertoires qui contiennent des sauvegardes à transférer, avec l'utilisateur root de la machine source :

ls -al /backups/*
/backups/dbsqware:
total 0
drwxr-xr-x  2 dbsqware dba   6 Jun 11  2024 .
drwxr-xr-x. 8 root     root 92 Jun 11  2024 ..

/backups/mssql:
total 0
drwxr-xr-x  2 mssql dba   6 Jun 11  2024 .
drwxr-xr-x. 8 root  root 92 Jun 11  2024 ..

/backups/mysql:
total 4
drwxr-xr-x  4 mysql dba     51 Jun 12  2024 .
drwxr-xr-x. 8 root  root    92 Jun 11  2024 ..
drwxrwxr-x  2 mysql mysql 4096 Feb  9 20:00 MYS_DBA_PRD
drwxr-xr-x  2 mysql dba      6 Feb 10 08:00 MYS_DBA_PRD-tmpdir

/backups/oracle:
total 0
drwxr-xr-x  3 oracle dba  22 Jun 12  2024 .
drwxr-xr-x. 8 root   root 92 Jun 11  2024 ..
drwxr-xr-x  2 oracle dba   6 Jun 12  2024 binaires

/backups/postgres:
total 0
drwxr-xr-x  2 postgres dba   6 Jun 11  2024 .
drwxr-xr-x. 8 root     root 92 Jun 11  2024 ..

/backups/sybase:
total 0
drwxr-xr-x  2 sybase dba   6 Jun 11  2024 .
drwxr-xr-x. 8 root   root 92 Jun 11  2024 ..


Ensuite pour chaque dossier qui contient des éléments, toujours avec l'utilisateur root de la machine source :

rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" /backups/mysql/MYS_DBA_PRD root@vmsqwarebox:/backups/mysql/.


Synchronisation des données

Vérification

On commence par vérifier quels sont les répertoires qui contiennent des données, avec l'utilisateur root de la machine source :

ls -al /data/*
/data/dbsqware:
total 0
drwxr-xr-x  6 dbsqware dba   85 Aug  1  2022 .
drwxr-xr-x. 8 root     root  92 Jun 11  2024 ..
drwxr-xr-x  5 dbsqware dba   88 Dec  7  2020 admin
drwxr-xr-x  5 dbsqware dba  114 Jul 18  2022 dbseries
drwxr-xr-x  6 dbsqware dba  126 Aug  1  2022 git_AltGr_dbSQWare
drwxr-xr-x  4 dbsqware dba   56 Jul 18  2022 MassiveTestFiles

/data/mssql:
total 0
drwxr-xr-x  2 mssql dba   6 Jun 11  2024 .
drwxr-xr-x. 8 root  root 92 Jun 11  2024 ..

/data/mysql:
total 8
drwxr-xr-x   5 mysql dba     68 Jun 11  2024 .
drwxr-xr-x.  8 root  root    92 Jun 11  2024 ..
drwxr-xr-x   7 mysql mysql 4096 Jan  3 09:48 MYS_DBA_PRD
drwxr-xr-x   2 mysql dba      6 Jun 11  2024 MYS_DBA_PRD-binlog
drwxrwxr-x  22 mysql dba   4096 Feb  5 17:38 SlowQuery

/data/oracle:
total 4
drwxr-xr-x   4 oracle dba    35 Sep 10 10:00 .
drwxr-xr-x.  8 root   root   92 Jun 11  2024 ..
drwxr-xr-x  27 oracle dba  4096 Dec 26 15:58 admin
drwxr-sr-x   2 oracle 1521   22 Jul  6  2022 test_nas

/data/postgres:
total 0
drwxr-xr-x  2 postgres dba   6 Jun 11  2024 .
drwxr-xr-x. 8 root     root 92 Jun 11  2024 ..

/data/sybase:
total 0
drwxr-xr-x  2 sybase dba   6 Jun 11  2024 .
drwxr-xr-x. 8 root   root 92 Jun 11  2024 ..


Transfert des données

Ensuite pour chaque dossier qui contient des éléments, toujours avec l'utilisateur root de la machine source :

rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" /data/dbsqware root@vmsqwarebox :/data/.
rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" /data/mysql/SlowQuery root@vmsqwarebox :/data/mysql/.
rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" /data/oracle root@vmsqwarebox :/data/.

Arrêt des cron de l'ancienne VM

A partir de là, on "coupe le service" et on fait la bascule à proprement parlé, la première étape et donc d'arrêter les tâches planifiées pour s'assurer que la machine source ne lance plus rien.

Suppression des crontab de tous les utilisateurs

Avec l'utilisateur root de la machine source :

for lvsqw_User in `echo 'dbsqware mssql mysql oracle postgres sybase'`
do
su - $lvsqw_User -c "echo '###########################';echo '$lvsqw_User';crontab -r"
done


     _ _    ____   _____        __
  __| | |__/ ___| / _ \ \      / /_ _ _ __ ___
 / _` | '_ \___ \| | | \ \ /\ / / _` | '__/ _ \
| (_| | |_) |__) | |_| |\ V  V / (_| | | |  __/
 \__,_|_.__/____/ \__\_\ \_/\_/ \__,_|_|  \___|

###################################################################
# SQWareCentral module of dbSQWare
# Copyright (C) 2010-2024, dbSQWare (www.dbsqware.com)
# dbSQWare is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# CGU/CGA for more details.
# You should have received a copy of the CGU/CGA
# along with this program.  If not, see <http://www.dbsqware.com/licenses/>.
# For information : contact@dbsqware.com or www.dbsqware.com
###################################################################
# SqwVersion=2024.08

# For help type 'show <-h|-help|--help>'

###########################
dbsqware


###########################
mssql


###########################
mysql


###########################
oracle


###########################
postgres
no crontab for postgres


###########################
sybase
no crontab for sybase

Pour certains utilisateurs il est tout à fait normal de ne pas avoir de crontab : pas ce type de SGBD dans le parc, pas de rapport AWR pour Oracle, pas de PostgreSQL au status dist, etc ....

Vérification qu'il n'y plus de crontab

Avec l'utilisateur root de la machine source :

for lvsqw_User in `echo 'dbsqware mssql mysql oracle postgres sybase'`
do
su - $lvsqw_User -c "echo '###########################';echo '$lvsqw_User';crontab -l"
done


     _ _    ____   _____        __
  __| | |__/ ___| / _ \ \      / /_ _ _ __ ___
 / _` | '_ \___ \| | | \ \ /\ / / _` | '__/ _ \
| (_| | |_) |__) | |_| |\ V  V / (_| | | |  __/
 \__,_|_.__/____/ \__\_\ \_/\_/ \__,_|_|  \___|

###################################################################
# SQWareCentral module of dbSQWare
# Copyright (C) 2010-2024, dbSQWare (www.dbsqware.com)
# dbSQWare is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# CGU/CGA for more details.
# You should have received a copy of the CGU/CGA
# along with this program.  If not, see <http://www.dbsqware.com/licenses/>.
# For information : contact@dbsqware.com or www.dbsqware.com
###################################################################
# SqwVersion=2024.08

# For help type 'show <-h|-help|--help>'

###########################
dbsqware
no crontab for dbsqware

###########################
mssql
no crontab for mssql

###########################
mysql
no crontab for mysql

###########################
oracle
no crontab for oracle

###########################
postgres
no crontab for postgres

###########################
sybase
no crontab for sybase

Synchronisation complète et finale

Sauvegarde de la base dbsqware_db

On fait une dernière sauvegarde aprés avoir coupé les tâches planifiées.
Avec l'utilisateur root de la machine source :

root@srvdbsqware:/backups # su - mysql
Last login: Thu Jun 13 20:15:04 CEST 2024 on pts/0

mysql@srvdbsqware01:/home/mysql (MYS_DBA_PRD) $ 
$gvsqw_MysBin/sqwmys_DumpDatabase.ksh -I MYS_DBA_PRD -D dbsqware_db -HI 10 -Exec
Sourcing sqwmys_Global.lib v2024.08 SQWareProduction for MySQL (dbSQWare) ...
Sourcing .profile for MYS_DBA_PRD ...

[..résultats omis..]

Run of:
mysqldump -S /var/lib/mysql/mysql.sock -u mysql --create-options -f --max_allowed_packet=1000000000 --net_buffer_length=16M -R -q --databases dbsqware_db ...
END_TRT Code:   0 --> 2025-02-10 14:00:33 job mysqldump dbsqware_db on MYS_DBA_PRD
Dump file:
-rwxr-x--- 1 mysql mysql 148641 Feb 10 14:00 /backups/mysql/MYS_DBA_PRD/dbsqware_db_20240613_201751.dump.gz
Size of dump mysqldump of dbsqware_db: 148 Kb

END_TRT Code:   0 --> Async insert indicators '' 2025-02-10 14:00:33.
SQL file : /home/mysql/MYS_DBA_PRD/logs/AsyncSqlDir/20250210_140029_36982_dbsqware_db_sqwmys_DumpDatabase_0002.sql.gz

Insert generated dump file in /home/mysql/MYS_DBA_PRD/sqwConfig/ToTape/dbsqware_db_20240613_201751.lst :
/backups/mysql/MYS_DBA_PRD/dbsqware_db_20240613_201751.dump.log

Summary of returns:
END_TRT Code:   0 --> 2025-02-10 14:00:33 job mysqldump dbsqware_db on MYS_DBA_PRD
END_TRT Code:   0 --> Async insert indicators '' 2025-02-10 14:00:33.

Job job mysqldump dbsqware_db on MYS_DBA_PRD proceeded successfully

Sending mail html by sendmail at dbaadmin@mydomane.com

Begining     : 2025-02-10 14:00:29
End          : 2025-02-10 14:00:33
Duration     : 00:00:04

Transfert de la nouvelle sauvegarde

On va refaire un rsync de /backups/mysql/MYS_DBA_PRD, avec l'utilisateur root de la machine source :

rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" /backups/mysql/MYS_DBA_PRD root@srvdbsqware04:/backups/mysql/.
sending incremental file list
/backups/mysql/MYS_DBA_PRD/dbsqware_db_20250210_140030.dump.gz

sent Xx,XX bytes  received Xx bytes  197,768.00 bytes/sec
total size is Xx  speedup is XxX.Xx

Synchronisation finale des home

Avec l'utilisateur root de la machine source :

cd /home/dbsqware
rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh admin CrontabRef* dbSQWare depl_all.ksh sqwConfig root@vmsqwarebox:/home/dbsqware/.
cd /home/mssql
rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh admin CrontabRef* logs sqwConfig .passwd_mssql root@vmsqwarebox:/home/mssql/.
cd /home/mysql
rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh admin CrontabRef* logs MYS_DBA_PRD sqwConfig .passwd_mysql root@vmsqwarebox:/home/mysql/.
cd /home/oracle
rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh admin CrontabRef* logs sqwConfig .passwd_oracle root@vmsqwarebox:/home/oracle/.
cd /home/postgres
rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh admin CrontabRef* sqwConfig .passwd_postgres root@vmsqwarebox:/home/postgres/.
cd /home/sybase
rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" .ssh CrontabRef* root@vmsqwarebox:/home/sybase/.

Rsync fonctionnant en différentiel ce transfert là sera beaucoup plus rapide que celui de la Première synchronisation 3.1

On condamne la machine source

Il faut maintenant s'assurer que la machine source soit décommissionnée au moins au niveau de dbSQWare.
Pour cela on va simplement renommer le répertoire contenant dbSQWare.
Avec l'utilisateur root sur la machine source :

mv /home/dbsqware/dbSQWare /home/dbsqware/dbSQWare_mig

Ajustement des paramètres de la nouvelle plateforme


Attention.png
Warning:
Il faut maintenant se connecter sur la machine de destination, dans notre exemple vmsqwarebox.


Restauration de la base de données dbsqware_db

Avec l'utilisateur root sur la machine de destination :

root@wmsqwarebox:/root # su - mysql
Last login: Wed Jun 12 08:18:08 CEST 2024 from 192.168.231.27 on pts/1

mysql@wmsqwarebox:/home/mysql (MYS_DBA_PRD) $ dmp
total 88876
drwxrwxr-x 2 mysql mysql     4096 Jun 13 20:18 .
drwxr-xr-x 4 mysql dba         51 Jun 12 08:16 ..
-rwxr-x--- 1 mysql mysql 28171581 Jun 12 20:01 dbsqware_db_20240612_200004.dump.gz
-rwxr-x--- 1 mysql mysql 28165757 Jun 13 20:00 dbsqware_db_20240613_200003.dump.gz
-rwxr-x--- 1 mysql mysql 28165370 Jun 13 20:18 dbsqware_db_20240613_201751.dump.gz
-rwxr-x--- 1 mysql mysql  2909231 Jun 12 20:00 dbsqware_inov_20240612_200005.dump.gz
-rwxr-x--- 1 mysql mysql  2909231 Jun 13 20:00 dbsqware_inov_20240613_200004.dump.gz
-rwxr-x--- 1 mysql mysql   333161 Jun 12 20:02 mysql_20240612_200216.dump.gz
-rwxr-x--- 1 mysql mysql   333159 Jun 13 20:00 mysql_20240613_200015.dump.gz

gunzip dbsqware_db_20240613_201751.dump.gz
my --force < dbsqware_db_20240613_201751.dump

Modification des fichiers de configuration

Ici il faut modifier, ou pas, les fichiers de configuration pour être sûr de se connecter à la nouvelle base de données :

  • Changement de mot de passe
  • Changement de hostname,
  • ....

Avec l'utilisateur root sur la machine de destination :

vi /home/dbsqware/dbSQWare/SQWareCentral/etc_cust/.my_SQWareRepository.cnf
vi /home/dbsqware/dbSQWare/SQWareWeb/custom/sqwareweb.ini
vi /home/dbsqware/dbSQWare/SQWareProduction/generic/etc_cust/sqwgen_GlobalVar.cfg
vi /home/dbsqware/dbSQWare/SQWareCentral/etc_cust/sqwctl_LoopRetrieveAsynchronousFilesGlobal.cfg

Exemple de modification

Avec l'utilisateur root sur la machine de destination :

vi /home/dbsqware/dbSQWare/SQWareCentral/etc_cust/.my_SQWareRepository.cnf

Le fichier d'origine copié sur cette machine contient :

[client]
host = srvdbsqware
port = 3306
database = dbsqware_db
user = dbsqware_user
password = SurementPasC4?

On le met à jour avec :

[client]
host = localhost
port = 3306
database = dbsqware_db
user = dbsqware_user
password = EnF4itCsa!

Dans les dernières versions de dbSQWare (2024.06+) nous vous conseillons ici de remplacer le nom de la machine par localhost, c'est comme cela que l'OVF est livré.

Mise à jour de la licence et du référentiel

La licence dbSQWare est entre autre chose attachée au nom d'hôte de la machine, si vous renommez la machine de destination avec le nom d'hôte de la machine source les trois prochaines étapes sont facultatives.

Génération de la nouvelle licence (facultatif)

Avec l'utilisateur dbsqware sur la machine de destination :

cetc
rm *.valid *.lic
dbspatch


     _ _    ____   _____        __
  __| | |__/ ___| / _ \ \      / /_ _ _ __ ___
 / _` | '_ \___ \| | | \ \ /\ / / _` | '__/ _ \
| (_| | |_) |__) | |_| |\ V  V / (_| | | |  __/
 \__,_|_.__/____/ \__\_\ \_/\_/ \__,_|_|  \___|

###################################################################
# SQWareCentral module of dbSQWare
# Copyright (C) 2007-2025, dbSQWare (www.dbsqware.com)
# dbSQWare is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# CGU/CGA for more details.

[..résultats omis..]

Do you want to patch SQWareRepository [y-Y-o-O-n-N]?
Y

[..résultats omis..]

END_TRT Code:   0 --> Update_05_MenuX.sql executed successfully.
END_TRT Code:   0 --> Update_06_MenuY.sql executed successfully.
END_TRT Code:   0 --> Update_07_MenuY.sql executed successfully.
END_TRT Code:   0 --> Update_08_MenuY.sql executed successfully.
END_TRT Code:   0 --> Update_09_MenuY.sql executed successfully.

Job Install SQWareRepository proceeded successfully
Begining     : 2025-02-10 17:28:04
End          : 2025-02-10 17:29:21
Duration     : 00:01:17

Obtention de la nouvelle licence (facultatif)

Si vous souhaitez ne pas récupérer le nom d'hôte de la machine source contactez le support (support@dbsqware.com) afin d'obtenir votre nouvelle licence.
Le support dbSQWare va avoir besoin du nouveau fichier .lic généré par la commande dbspatch.
Pour le trouver, avec l'utilisateur dbsqware sur la machine de destination :

dbsqware@srvdbsqware04:/home/dbsqware/dbSQWare/SQWareCentral/etc_cust $ ls -al *.lic
-rw-r--r-- 1 dbsqware dba 159 Jun 13 20:48 yc2eaada-qaba-abas-rvdb-sqware04qc5e.lic

Installation de la nouvelle licence (facultatif)

Le support va vous renvoyer un fichier .lic qui devra remplacer celui qui se trouve dans /home/dbsqware/dbSQWare/SQWareCentral/etc_cust.
Vous pouvez :

  • soit le copier avec un outil de type scp,
  • soit le copier le contenu du fichier envoyé par le support et le coller en remplaçant tout le contenu du fichier d'origine.

Valider la licence et le référentiel (obligatoire)

Si vous avez choisi de récupérer le nom de la machine source il faut renommer la machine de destination avant de faire l'action suivante.
Ensuite pour valider la licence et le référentiel, avec l'utilisateur dbsqware sur la machine de destination :

dbspatch


     _ _    ____   _____        __
  __| | |__/ ___| / _ \ \      / /_ _ _ __ ___
 / _` | '_ \___ \| | | \ \ /\ / / _` | '__/ _ \
| (_| | |_) |__) | |_| |\ V  V / (_| | | |  __/
 \__,_|_.__/____/ \__\_\ \_/\_/ \__,_|_|  \___|

###################################################################
# SQWareCentral module of dbSQWare
# Copyright (C) 2007-2025, dbSQWare (www.dbsqware.com)
# dbSQWare is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# CGU/CGA for more details.

[..résultats omis..]

Do you want to patch SQWareRepository [y-Y-o-O-n-N]?
Y

[..résultats omis..]


LicType : Enterprise Edition
LicDUID : xxXXxxx-xXXxx-XXXxxx-XXXxxxXxXx
CheckNb: OK lic=2000 real=1981
CheckDate: OK lic=2026-01-31 real=2025-02-10 expire_days=355
Restart sqwScheduler to get new version ...

[..résultats omis..]

END_TRT Code:   0 --> Update_05_MenuX.sql executed successfully.
END_TRT Code:   0 --> Update_06_MenuY.sql executed successfully.
END_TRT Code:   0 --> Update_07_MenuY.sql executed successfully.
END_TRT Code:   0 --> Update_08_MenuY.sql executed successfully.
END_TRT Code:   0 --> Update_09_MenuY.sql executed successfully.

Job Install SQWareRepository proceeded successfully
Begining     : 2025-02-10 17:28:04
End          : 2025-02-10 17:29:21
Duration     : 00:01:17

Vérification et rechargement des crontab

Pour chaque utilisateur il faut s'assurer que les cron soient conformes.

Pour dbsqware@vmsqwarebox

Avec l'utilisateur dbsqware sur la machine de destination :

diff CrontabRef_srvdbsqware CrontabRef
mv CrontabRef_srvdbsqware CrontabRef
vi CrontabRef
crontab CrontabRef
crontab -l

pour mysql@vmsqwarebox

Avec l'utilisateur dbsqware sur la machine de destination :

mys

Une fois connecté dans la session de l'utilisateur mysql :

diff CrontabRef_srvdbsqwar CrontabRef
mv CrontabRef_srvdbsqware CrontabRef
vi CrontabRef
crontab CrontabRef
crontab -l

Une fois que vous avez vérifié que la crontab vous convient, vous pouvez retourner sur la session de l'utilisateur dbsqware :

exit

pour oracle@vmsqwarebox

Avec l'utilisateur dbsqware sur la machine de destination :

ora

Une fois connecté dans la session de l'utilisateur oracle :

diff CrontabRef_srvdbsqware CrontabRef
mv CrontabRef_srvdbsqware CrontabRef
vi CrontabRef
crontab CrontabRef
crontab -l

Une fois que vous avez vérifier que la crontab vous convient, vous pouvez retourner sur la session de l'utilisateur dbsqware :

exit

pour mssql@vmsqwarebox

Avec l'utilisateur dbsqware sur la machine de destination :

msq

Une fois connecté dans la session de l'utilisateur msssql :

diff CrontabRef_srvdbsqware CrontabRef
mv CrontabRef_srvdbsqware CrontabRef
vi CrontabRef
crontab CrontabRef
crontab -l

Une fois que vous avez vérifier que la crontab vous convient, vous pouvez retourner sur la session de l'utilisateur dbsqware :

exit


Note.png
Note:
Dans notre exemple nous ignorons postgres et sybase car lors de la Sauvegarde des crontab nous avions vu qu'il n'y en avait pas .


Ajustements éventuels

Selon votre architecture et les paramétrages que vous souhaitez faire, il est possible que vous deviez modifier les fichiers suivants : avec l'utilisateur dbsqware sur la machine de destination :

  • /etc/php.ini
  • /etc/httpd/conf/httpd.conf
  • /etc/httpd/conf.d/httpd-vhosts.conf

Mise en production de la nouvelle plateforme

Arrêt de l'ancienne machine

Tout d'abord nous vous conseillons d'éteindre la machine source, il faut la conserver le temps de valider que vous avez bien récupéré toutes vos données, et éventuellement de la conserver pour des questions d'archivage sur un temps plus long.

Reprise de l'IP sur la nouvelle machine

Vous devez mettre l'IP de la machine source à la nouvelle machine dbSQWare, essentiellement pour des raisons de gestion de flux et d'ACL réseaux. L'ancienne machine avait comme adresse IP : 192.168.10.52/24.
Avec l'utilisateur root sur la machine de destination :

root@vmsqwarebox:/root # ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:4b:63:e9 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.10.51/24 brd 192.168.10.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever

Il faut changer l'IP de la carte ens160, avec l'utilisateur root de la machine de destination :

ip addr del 192.168.10.51/24 dev ens160 && ip addr add 192.168.10.52/24 dev ens160

Si vous êtes connecté à la machine via le réseau vous devrez vous reconnectez sur la nouvelle adresse.

Reprise des indicateurs

La nouvelle machine dbSQWare est maintenant en production.
Il convient de reprendre les indicateurs pour l'ensemble du parc comme dernière vérification que la migration est terminée.

Récupérer la commande de collecte des indicateurs

Avec l'utilisateur dbsqware sur la machine de destination :

dbsqware@srvdbsqware04:/home/dbsqware (SQWareCentral) $
#
crontab -l | grep Indic -B1
# Check indicators
00 07       * * * bash -c '. ~/.profile 2>&1 >/dev/null;$gvsqw_SQWareCentralPath/bin/sqwctl_CheckIndicators.ksh 2>&1 >$HOME/admin/SQWareCentral/logs/sqwctl_CheckIndicators.log'
# Gather indicators
00 03       * * * bash -c '. ~/.profile 2>&1 >/dev/null;$gvsqw_SQWareCentralPath/bin/sqwctl_GatherIndicators.ksh 2>&1 >$HOME/admin/SQWareCentral/logs/sqwctl_GatherIndicators.log'
# Retry gather indicators if not exists
00 09,12,17 * * * bash -c '. ~/.profile 2>&1 >/dev/null;$gvsqw_SQWareCentralPath/bin/sqwctl_GatherIndicators.ksh -Repind -NoMail 2>&1 >$HOME/admin/SQWareCentral/logs/sqwctl_GatherIndicators_Repind.log'

Vous devez copier partiellement la ligne qui se trouve en dessous de # Gather indicators : $gvsqw_SQWareCentralPath/bin/sqwctl_GatherIndicators.ksh.

Lancer la commande de GatherIndicators

On va lancer la commande pour collecter les indicateurs (# Gather indicators), avec l'utilisateur dbsqware sur la machine de destination :

dbsqware@srvdbsqware04:/home/dbsqware (SQWareCentral) $
#
$gvsqw_SQWareCentralPath/bin/sqwctl_GatherIndicators.ksh
Sourcing sqwctl_Global.lib v2025.00 SQWareCentral (dbSQWare) ...


eval global vars:
gvsqw_DistSQWareProdUser="$gvsqw_UserUniqueCent@$gvsqw_Hostname" => gvsqw_DistSQWareProdUser=dbsqware@srvdbsqware04
gvsqw_RsyncDefaultUser="$gvsqw_UserExec@RsyncHost" => gvsqw_RsyncDefaultUser=dbsqware@RsyncHost
Log generated in /home/dbsqware/admin/SQWareCentral/logs/GatherIndicators/GatherIndicators_20250210_165737_3581809.log on srvdbsqware04 ...

Run Gather indicators for all rdbms '' : 2025-02-10 16:57:36

__________________________________________________________________
Program informations
SqwVersion=2025.00 / 2025.00
Copyright 2007-2025, dbSQWare (www.dbsqware.com)
Linux srvdbsqware04 5.14.0-427.20.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jun 7 14:51:39 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
gvsqw_GenPath=/home/dbsqware/dbSQWare/SQWareCentral/bin
Path=/home/dbsqware/dbSQWare/SQWareCentral/bin
./sqwctl_GatherIndicators.ksh
dbsqware@srvdbsqware04

sqwctl_GatherIn,dbsqware /home/dbsqware/dbSQWare/SQWareCentral/bin/sqwctl_GatherIndicators.ksh
  `-pstree -aul 3581809

__________________________________________________________________


Generate sql from /home/dbsqware/dbSQWare/SQWareCentral/action/generic/lst/sqwgen_GenTypeInstance.sql ...

Sql to execute:
select distinct ref.rdbmstype, 'On'

[..résultats omis..]

END_TRT Code:   0 --> 2025-02-10 12:09:03 Gather indicators for all rdbms

Summary of returns:
END_TRT Code:   0 --> Exec SQL executed successfully.
END_TRT Code:   0 --> 2025-02-10 12:09:03 Gather indicators for all rdbms

Job Gather indicators for all rdbms proceeded successfully
Begining     : 2025-02-10 12:00:02
End          : 2025-02-10 12:09:03
Duration     : 00:09:01 

Enjoy !!