Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Sv translation
languageen

Create MySQL-Backup

Script

and cleaner Script  (only on one master)

The backup script is created on one of the master databasesmaster database. In a redundant system, it must be done on the active master databse. The server creates a rolling backup and deletes backups which are older than 14 days. The cleaner script is also configured right after, to ensure that the two jobs do not run in parallel

Note - this script will fail, if the jtel Databases JTELWeb, JTELStats, JTELStats2 and JTELLog are not present.

Warning
titleCaution - without Replication

If the setup is without replication, then remove --mastersource-data=2 from  from the backup script.


In Debian 11 Buster, a setting must be made in the configuration file /lib/systemd/system/anacron.timer and the deamon/service must be reloaded. Otherwise, the daily cron jobs will run at the default value, which is <07..23:30>

vi /lib/systemd/system/anacron.timer <OnCalendar=*-*-* 04..23:30> systemctl daemon-reload systemctl restart anacron.timer systemctl status anacron.timer
Warning
titleCaution - Debian 11
Code Block
Redundancy - Backup only on active DBM

Configure the backup on the active master database on redundant systems, as corruption of the index 'sp_AcdStatisticsLogin_geom3_AcdGroupsID' in the table JTELStats.AcdStatisticsLogin has happened in the past when the backup is made by the secondary database master.

RUN AS ROOT:

Status
colourRed
titleCaution Password

Translations Ignore


Code Block
languagebash
# CONFIGURATION *** CHANGE PASSWORD ***
CONFIG_mysql_dump_username='root'
CONFIG_mysql_dump_password='<password>'
CONFIG_backup_dir='/home/jtel/shared/backup/sql'
CONFIG_mysql_dump_host='localhost'

# Create directories
cd /home/jtel
mkdir -p /home/jtel/jtelbackupjtel_dailyjobs
mkdir -p ${CONFIG_backup_dir}

# Create .my.cnf
cat << EOF > /home/jtel/.my.cnf
[client]
user = ${CONFIG_mysql_dump_username}
password = ${CONFIG_mysql_dump_password}
host = ${CONFIG_mysql_dump_host}
EOF

# Create backup script
cat << 'EOF' > /home/jtel/jtelbackup/jtelbackupjtel_dailyjobs/jtel_backup.sh
#!/bin/bash
mkdir -p /home/jtel/shared/backup/sql/daily
mysqldump --add-drop-database --single-transaction --mastersource-data=2 --add-drop-table --events --routines --triggers --databases JTELWeb JTELStats JTELStats2 JTELLog JTELCustomer | gzip > /home/jtel/shared/backup/sql/daily/backup-$(hostname)-database-$(date +%F-%H%M%S).sql.gz
find /home/jtel/shared/backup/sql/daily -type f -mtime +14 -delete
EOF
 
# Create croncleaner script
cat << 'EOF' > /home/jtel/jtelbackup/jtelbackupjtel_dailyjobs/jtel_cleaner.sh
#!/bin/bash
su - jtel -c 'bash /home/jtel/jtelbackup/jtelbackup/shared/JTELCarrierPortal/DB/mySQL/cleaners/db_cleaner.sh'
EOF

# Execution permissions and cron job
chmod 750+x /home/jtel/jtelbackup/jtelbackup
chmod 750 /home/jtel/jtelbackup/jtelbackupjtel_dailyjobs/jtel_backup.sh
lnchmod -s+x /home/jtel/jtelbackup/jtelbackup /etc/cron.dailyjtel_dailyjobs/jtel_cleaner.sh

# OwnershipDoes the todailyjobs jtel user
chown -R jtel:jtel /home/jtel/.my.cnf
chown -R jtel:jtel /home/jtel/jtelbackup
chown -R jtel:jtelscript exist? If not, create.
if [ ! -f /home/jtel/shared/backup


# Run it
/etc/cron.daily/jtelbackup

Once the script is run, a backup should be present in /home/jtel/shared/backup/sql/daily.

The script runs automatically when the daily cron jobs are run.

Sv translation
languagede
Status
colourRed
titleThis page is only available in English

Sv translation
languagefr

Créer un script de sauvegarde MySQL (uniquement sur un maître)

Le script de sauvegarde est créé sur l'une des bases de données principales. Le serveur crée une sauvegarde continue et supprime les sauvegardes qui ont plus de 14 jours.

Note - ce script échouera, si les bases de données jtel JTELWeb, JTELStats, JTELStats2 et JTELLog ne sont pas présentes.

Warning
titleAttention - sans réplication

Si l'installation n'est pas reproductible, il faut alors supprimer --master-data=2 à partir du script de sauvegarde.

Status
colourRed
titleMot de passe de précaution

Translations Ignore
Code Block
languagebash
# CONFIGURATION *** CHANGE PASSWORD *** CONFIG_mysql_dump_username='root' CONFIG_mysql_dump_password='<password>' CONFIG_backup_dir='/home/jtel/shared/backup/sql' CONFIG_mysql_dump_host='localhost' # Create directories cd /home/jtel mkdir -p /home/jtel/jtelbackup mkdir -p ${CONFIG_backup_dir} # Create .my.cnf cat << EOFjtel_dailyjobs/jtel_dailyjobs.sh ]; then
# No - so create it
cat << EOFF > /home/jtel/.my.cnf [client] user = ${CONFIG_mysql_dump_username} password = ${CONFIG_mysql_dump_password} host = ${CONFIG_mysql_dump_host} EOF jtel_dailyjobs/jtel_dailyjobs.sh
#!/bin/bash
EOFF
# Create backupcron script 
cat << 'EOF' > /home/jtel/jtelbackup/jtelbackup.sh jtel_dailyjobs/jtel_dailyjobs
#!/bin/bash
su mkdir- jtel -pc '/home/jtel/shared/backup/sql/daily mysqldump --add-drop-database --single-transaction --master-data=2 --add-drop-table --events --routines --triggers --databases JTELWeb JTELStats JTELStats2 JTELLog | gzip > jtel_dailyjobs/jtel_dailyjobs.sh'
EOF
# Link to cron.daily
ln -s /home/jtel/shared/backup/sql/daily/backup-$(hostname)-database-$(date +%F-%H%M%S).sql.gz find /home/jtel/shared/backup/sql/daily -type f -mtime +14 -delete EOF # Create cron script cat << EOF > jtel_dailyjobs/jtel_dailyjobs /etc/cron.daily
# Make executable
chmod +x /home/jtel/jtelbackup/jtelbackup #!/bin/bash su - jtel -c 'jtel_dailyjobs/jtel_dailyjobs
chmod +x /home/jtel/jtelbackup/jtelbackup.sh' EOF # Execution permissions and cron job chmod 750 jtel_dailyjobs/jtel_dailyjobs.sh
fi

# Add jobs to dailyjobs script
cat << 'EOF' >> /home/jtel/jtelbackup/jtelbackup chmod 750 jtel_dailyjobs/jtel_dailyjobs.sh
bash /home/jtel/jtelbackup/jtelbackupjtel_dailyjobs/jtel_backup.sh ln -s 
bash /home/jtel/jtelbackup/jtelbackup /etc/cron.daily jtel_dailyjobs/jtel_cleaner.sh
EOF

# Ownership to jtel user 
chown -R jtel:jtel /home/jtel/.my.cnf 
chown -R jtel:jtel /home/jtel/jtelbackup jtel_dailyjobs
chown -R jtel:jtel /home/jtel/shared/backup 

# Run it as a test
/etc/cron.daily/jtelbackupjtel_dailyjobs


Once the script is run, a backup should be present in Une fois le script exécuté, une sauvegarde doit être présente dans /home/jtel/shared/backup/sql/daily.Le script s'exécute automatiquement lorsque les jobs cron quotidiens sont exécutés.

The script runs automatically when the daily cron jobs are run.


Sv translation
languagede

Status
colourRed
titleThis page is only available in English


Sv translation
languagefr