Several methods of regular backup of MySQL database

Keywords: Laravel

1, The mysqldump command backs up data

MySQL provides a convenient tool mysqldump for exporting database data and files from the command line. We can directly export the database content through the command line. First, let's briefly understand the usage of mysqldump command:

#MySQL dump common
mysqldump -u root -p --databases Database 1 database 2 > xxx.sql

2, mysqldump common operation examples

1. Back up the data and structure of all databases
mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql
2. Back up the structure of all databases (add - d parameter)
mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql
3. Back up all database data (add - t parameter)
mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql
4. Back up the data and structure of a single database (, database name mydb)
mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql
5. Back up the structure of a single database
mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql
6. Back up the data of a single database
mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql
7. Backup the data and structure of multiple tables (the separate backup method of data and structure is the same as above)
mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql
8. Backup multiple databases at one time
mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql

3, Restore MySQL backup content

There are two ways to restore. The first is in the MySQL command line, and the second is to use the SHELL line to complete the restore

1. On the system command line, enter the following to restore:
mysql -uroot -p123456 < /data/mysqlDump/mydb.sql
2. After logging into the mysql system, find the files in the corresponding system through the source command to restore:
mysql> source /data/mysqlDump/mydb.sql

In Linux, BASH script is usually used to write the content to be executed, and crontab is executed regularly to realize automatic log generation.

The following code function is to backup mysql. In cooperation with crontab, the backup content is the daily MySQL database records in recent one month (31 days).

Write BASH to maintain a fixed number of backup files

In Linux, use vi or vim to write the script content and name it mysql_dump_script.sh

#!/bin/bash

#Save the number of backups and back up the 31 day data
number=31
#Backup save path
backup_dir=/root/mysqlbackup
#date
dd=`date +%Y-%m-%d-%H-%M-%S`
#Backup tools
tool=mysqldump
#user name
username=root
#password
password=TankB214
#Database to be backed up
database_name=edoctor

#Create if folder does not exist
if [ ! -d $backup_dir ];
then     
    mkdir -p $backup_dir;
fi

#Simply write mysqldump - U root - p123456 users > / root / mysqlbackup / users - $filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql

#Write create backup log
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt

#Find the backup that needs to be deleted
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`

#Determine whether the current number of backups is greater than $number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`

if [ $count -gt $number ]
then
  #Delete the earliest generated backups and keep only the number of backups
  rm $delfile
  #Write delete file log
  echo "delete $delfile" >> $backup_dir/log.txt
fi

The main meanings of the above codes are as follows:

1. First set various parameters, such as number, the maximum number to be backed up, backup path, user name, password, etc.

2. Execute mysqldump to save the backup file, print the operation to log.txt in the same directory, and mark the operation log.

3. Define the file to be deleted: get the ninth column, that is, the file list, through the ls command, and then define the file to be deleted with the latest operation time.

4. Define the number of backups: count the number of lines of files ending in sql through ls command and wc -l.

5. If the file size exceeds the limit, delete the sql file created the earliest

Use crontab to execute backup scripts periodically

In Linux, tasks executed periodically are generally handled by the cron daemon [ps -ef|grep cron]. Cron reads one or more configuration files that contain the command line and its invocation time. The cron configuration file is called "crontab", which is short for "cron table".

cron service

cron is a timed execution tool under Linux, which can run jobs without human intervention.

service crond start    //Start service
service crond stop     //Shut down service
service crond restart  //Restart service
service crond reload   //service crond reload 
service crond status   //View service status 
crontab syntax

The crontab command is used to install, delete, or list the tables used to drive the cron daemon. The user puts the command sequence to be executed into the crontab file for execution. Each user can have its own crontab file/ Crontab files under var/spool/cron cannot be created or modified directly. The crontab file is created by the crontab command.

How to enter the command and time to execute in the crontab file. Each line in the file includes six fields. The first five fields specify the time when the command is executed, and the last field is the command to be executed. Each field is separated by a space or tab.

The format is as follows:

minute hour day-of-month month-of-year day-of-week commands 
Legal value 00-59 00-23 01-31 01-12 0-6 (0 is sunday) 

In addition to numbers, there are several special symbols"*","/"and"-",",",*Represents all numbers within the value range,"/"Represents the meaning of each,"/5"Means every 5 units,"-"Represents from a number to a number,","Separate several discrete numbers.

-l Displays the current on standard output crontab.  
-r Delete current crontab File. 
-e use VISUAL perhaps EDITOR The editor to which the environment variable refers edits the current crontab File. When you finish editing and leave, the edited file will be installed automatically.  
Create cron script
  • Step 1: write a cron script file named mysqlRollBack.cron. 15,30,45,59 * * echo "xgmtest....." > > xgmtest.txt indicates that the print command is executed every 15 minutes

  • Step 2: add scheduled tasks. Execute the command "crontab crontest.cron". Done

  • Step 3: "crontab -l" check whether the scheduled task is successful or whether the corresponding cron script is generated under / var/spool/cron

Note: this operation is to directly replace the crontab under the user instead of adding a new one

Execute the scheduled task script written regularly (remember to give the shell script execution permission first)

0 2 * * * /root/mysql_backup_script.sh

The crontab command is then used to periodically script the instructions

crontab mysqlRollback.cron

Then check whether the scheduled task has been created through the command:

An example of using crontab is attached:

1. At 6 o'clock every morning

0 6 * * * echo "Good morning." >> /tmp/test.txt //Note that if you simply echo, you can't see any output from the screen, because cron email ed any output to the root mailbox.

2. Every two hours

0 */2 * * * echo "Have a break now." >> /tmp/test.txt

3. Every two hours and 8 a.m. between 11 p.m. and 8 a.m

0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

4. The 4th of each month and 11 a.m. from Monday to Wednesday every week

0 11 4 * 1-3 command line

5.1 at 4 a.m

0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //If there is an error or data output, the data will be sent to this account HOME as an email=/

6. Execute the script in / etc/cron.hourly every hour

01 * * * * root run-parts /etc/cron.hourly

7. Execute the script in / etc/cron.daily every day

02 4 * * * root run-parts /etc/cron.daily

8. Execute the script in / etc/cron.weekly every week

22 4 * * 0 root run-parts /etc/cron.weekly

9. Execute the script in / etc/cron.monthly every month

42 4 1 * * root run-parts /etc/cron.monthly

Note: the "run parts" parameter is. If you remove this parameter, you can write the name of a script to run instead of the folder name.

10. Execute the command at 4:00 p.m., 5:00 p.m. and 5 min, 15 min, 25 min, 35 min, 45 min and 55 min at 6:00 p.m. every day.

5,15,25,35,45,55 16,17,18 * * * command

11. At 3:00 p.m. on Monday, Wednesday and Friday, the system enters the maintenance state and restarts the system.

00 15 * * 1,3,5 shutdown -r +5

12. Execute the command innd/bbslin in the user directory at 10 and 40 minutes every hour:

10,40 * * * * innd/bbslink

13. Execute the bin/account command in the user directory at 1 minute every hour:

1 * * * * bin/account

Posted by StealthRider on Sat, 18 Sep 2021 10:45:35 -0700