Scheduled Database Backup
This procedure shows how to configure a periodic database backup using a bash script (tbdbbackup) executed from a Tmedia host unix cron jobs. Cron allows Linux and Unix users to run commands or scripts at a given date and time.
Contents |
"tbdbbackup" Script
The tbdbbackup script support the following features:
- Backup the TMG-CONTROL configuration database into a backup file
- Backup file name formatted as tbdbbackup_<hostname>_toolpack_<version>_<date>_<time>.sql.gz
tbdbbackup_TB014369_toolpack_2_8_2017_01_11_15h52m.sql.gz
- Keep N days of local backup files in /lib/tb/toolpack/pkg/database_backups. Default is 7 days.
- Backup files are listed on the Web portal in Backups->Manual Database Backup
- Optional copy to a remote server supporting SSH Key-Based Authentication
- Copy the backup file on a remote server (using scp) - optional
- Keep M days of backup files on the remote server (using ssh) - optional
Get the Script
On latest product version, the script should be available from the /usr/bin. To validate if you have the script on your Tmedia:
- Connect to the Tmedia using SSH as root
[root@TB014369 ~]# which tbdbbackup /usr/bin/tbdbbackup
If the script is not already installed, you can:
1. Update tb_tools package on your Tmedia (NOTE: this will ovewrite /usr/bin/tbcopycdr. If you customized the CDR copy script, make sure to have a copy)
yum update tb_tools
2. Or get the script directly from the latest tb_tools rpm package
mkdir tb_tools cd tb_tools wget http://repo.telcobridges.com/centos/7/os/x86_64/Packages/tb_tools-1.2-30.el7.tb.noarch.rpm rpm2cpio tb_tools-1.2-30.el7.tb.noarch.rpm | cpio -idmv
3. Or get it here: tbdbbackup [click to download]
Configure the Script
1. Copy the script to /root Note: You must copy the script to another location to avoid loosing your configurations when upgrading your host (yum update).
cp /usr/bin/tbdbbackup /root/tbdbbackup chmod +x /root/tbdbbackup
2. Edit the script file:
vim /root/tbdbbackup
3. Configure the following variables:
- LOCAL_BACKUP_MAX_DAYS : Keep the local backup files for that number of days. Set to 7 days by default.
# Add '#' in front of the line to disable the local backup file cleanup #LOCAL_BACKUP_MAX_DAYS="7"
- REMOTE_BACKUP_MAX_DAYS : Keep the local backup files for that number of days. Set to 7 days by default.
# Add '#' in front of the line to disable the remote backup file cleanup #LOCAL_BACKUP_MAX_DAYS="7"
- REMOTE_HOST : Remote host name or Ip address.
# Add '#' in front of the line to disable the remote copy #REMOTE_HOST = 10.10.10.10
- REMOTE_PORT : Remote host name or Ip address
- REMOTE_DIR : Remote host directory where the backup files will be copied
- REMOTE_USER : Remote host user
Create an SSH Key
You must create an SSH key pair and copy it to the remote server, if the remote server copy is configured. This will enable the Tmedia to copy the backup files to the remote host without asking for a password:
- Connect to the Tmedia using SSH as root
- Create Tmedia public/private dsa key pair
ssh-keygen -t rsa
Note: Do not add a pass phrase, simply press enter until the key pair is generate.
- Append the content of the public key to the remote host authorized keys
Tmedia public key location
/root/.ssh/id_rsa.pub
Remote Host authorized keys location
~/.ssh/authorized_keys
More details here: Password-less SSH
Test your Script
1.Manually run the script/;
/root/tbdbbackup
2.Check if the backup is locally created:
ls -alt /lib/tb/toolpack/pkg/database_backups/
3.If the remote copy is configured, make sure the file was copied on the remote server
4.Test "LOCAL_BACKUP_MAX_DAYS" (if configured):
- run the script a few times to create multiple files
- use "touch" to change the date of a file to a date older then "LOCAL_BACKUP_MAX_DAYS" days ago. For example, if "LOCAL_BACKUP_MAX_DAYS" is set to 15 days, set the date of the file as "16 days ago".
[root@TB014369]# ls -alt /lib/tb/toolpack/pkg/database_backups/ total 820 -rw-r--r-- 1 root root 206638 Jan 11 16:40 tbdbbackup_TB014369_toolpack_2_8_2017_01_11_16h40m.sql.gz -rw-r--r-- 1 root root 206612 Jan 11 15:52 tbdbbackup_TB014369_toolpack_2_8_2017_01_11_15h52m.sql.gz
[root@TB014369 database_backups]# touch -d "16 days ago" /lib/tb/toolpack/pkg/database_backups/tbdbbackup_TB014369_toolpack_2_8_2017_01_11_16h40m.sql.gz
[root@TB014369]# ls -alt /lib/tb/toolpack/pkg/database_backups/ total 820 -rw-r--r-- 1 root root 206612 Jan 11 15:52 tbdbbackup_TB014369_toolpack_2_8_2017_01_11_15h52m.sql.gz -rw-r--r-- 1 root root 206638 Dec 26 16:43 tbdbbackup_TB014369_toolpack_2_8_2017_01_11_16h40m.sql.gz
- run the script again; the file tbdbbackup_TB014369_toolpack_2_8_2017_01_11_16h40m.sql.gz should have been removed from /lib/tb/toolpack/pkg/database_backups/
Schedule the Script in a Cron Job
- Create a new crontab on the Tmedia
crontab -e
- Add new line with the cron configuration
Example:
Frequency | Cron Configuration |
---|---|
hourly (top of the hour) | 0 * * * * /root/tbdbbackup
|
daily (midnight) | 0 0 * * * /root/tbdbbackup
|