« FAQ:UpgradeVMCentrale » : différence entre les versions
| Ligne 349 : | Ligne 349 : | ||
########################### | ########################### | ||
postgres | postgres | ||
no crontab for postgres | |||
Version du 10 février 2025 à 13:48
Généralités
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
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
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/.
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


