« FAQ:UpgradeVMCentrale » : différence entre les versions

De WikiFr_dbSQWare
Aller à la navigation Aller à la recherche
Ligne 460 : Ligne 460 :
<pre>
<pre>
rsync -aHv --delete -e "ssh -o BatchMode=yes -o StrictHostKeyChecking=no" /backups/mysql/MYS_DBA_PRD root@srvdbsqware04:/backups/mysql/.
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/
</pre>
</pre>



Version du 10 février 2025 à 15:24

Généralités


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:
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 que 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é copier 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 cron

Avec l'utilisateurs root sur la machine source :

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

Première synchronisation des répertoires


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:
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


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/.


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


Exemple d'erreurs

Lisez bien l'erreur au début ou à la fin de 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] 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 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 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

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_20250210_140030.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/MySQLBackups_20250210_140030.lst :
/backups/mysql/MYS_DBA_PRD/dbsqware_db_20250210_140030.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'utilisateurs 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/

Ajustement des paramètres de la nouvelle plateforme

Mise en production de la nouvelle plateforme

Arrêt ancienne machine

reprise de l'IP sur la nouvelle machine

Reprise des indicateurs