mysql 데이터베이스 백업(mysqldump)

데이터 백업을 위한 mysqldump 명령

mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql

Mysqldump 일반적인 작업 예

1. 모든 데이터베이스 데이터 및 구조를 백업합니다.

mysqldump -uroot -p123456 -A > /data/mysqlbackup/mydb.sql

2. 모든 데이터베이스의 구조를 백업합니다(-d 매개변수 추가).

mysqldump -uroot -p123456 -A -d > /data/mysqlbackup/mydb.sql

3. 모든 데이터베이스 데이터 백업(-t 매개변수 추가)

mysqldump -uroot -p123456 -A -t > /data/mysqlbackup/mydb.sql

4. 단일 데이터베이스(데이터베이스 이름 mydb)의 데이터 및 구조를 백업합니다.

mysqldump -uroot-p123456 mydb > /data/mysqlbackup/mydb.sql

5. 단일 데이터베이스의 구조를 백업합니다.

mysqldump -uroot -p123456 mydb -d > /data/mysqlbackup/mydb.sql

6. 단일 데이터베이스의 데이터 백업

mysqldump -uroot -p123456 mydb -t > /data/mysqlbackup/mydb.sql

7. 여러 테이블의 데이터 및 구조를 백업합니다. (데이터 및 구조에 대한 별도의 백업 방법은 위와 동일합니다.)

mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlbackup/mydb.sql

8. 한 번에 여러 데이터베이스 백업

mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlbackup/mydb.sql

MySQL 백업 콘텐츠 복원

1. 복원하려면 시스템 명령줄에 다음을 입력합니다.

mysql -uroot -p123456 < /data/mysqlbackup/mydb.sql

2. mysql 시스템에 로그인한 후 source 명령을 사용하여 해당 시스템에서 파일을 찾아 복원합니다.

mysql> source /data/mysqlbackup/mydb.sql

백업할 예약된 작업

Linux에서는 실행해야 할 내용을 작성하기 위해 주로 BASH 스크립트를 사용하며, 자동 로그 생성을 구현하기 위해 정기적으로 crontab 명령을 실행합니다.
다음 코드의 기능은 mysql을 백업하는 기능으로, crontab과 연동하여 지난 한 달(31일) 동안의 일일 mysql 데이터베이스 기록을 백업 내용으로 한다.
고정된 수의 백업 파일을 유지하려면 BASH를 작성하세요.

Linux에서는 vi 또는 vim을 사용하여 스크립트 콘텐츠를 작성하고 이름을 mysql_dump_script.sh로 지정합니다.

#!/bin/bash
#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/root/mysqlbackup
#日期
dd=`date +%Y%m%d_%H%M%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=TankB214
#将要备份的数据库
database_name=edoctor
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then     mkdir -p $backup_dir;
fi
#简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt
#找出最早生成的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi

위 코드의 주요 의미는 다음과 같습니다.

1. 먼저 번호, 백업할 최대 개수, 백업 경로, 사용자 이름, 비밀번호 등과 같은 다양한 매개변수를 설정합니다.

2. mysqldump 명령을 실행하여 백업 파일을 저장하고, 작업 로그를 표시하기 위해 동일한 디렉터리의 log.txt에 작업을 인쇄합니다.

3. 삭제해야 할 파일 정의: ls 명령을 사용하여 파일명 열인 9번째 열을 가져온 후 삭제해야 할 파일을 최근 작업 시간으로 정의합니다.

4. 백업 수 정의: ls 명령과 wc -l을 사용하여 sql로 끝나는 파일의 행 수를 계산합니다.

5. 파일이 제한 크기를 초과하는 경우 가장 먼저 생성된 sql 파일을 삭제합니다.

crontab을 사용하여 정기적으로 백업 스크립트 실행

Linux에서 주기적으로 실행되는 작업은 일반적으로 cron 데몬 [ps -ef|grep cron]에 의해 처리됩니다. cron은 명령줄과 호출 시간이 포함된 하나 이상의 구성 파일을 읽습니다. cron 구성 파일은 "cron table"의 약어인 "crontab"이라고 합니다.

크론 서비스

Cron은 수동 개입 없이 작업을 실행할 수 있는 Liunx의 예약 실행 도구입니다.

# 启动服务
service crond start
# 关闭服务
service crond stop
# 重启服务
service crond restart
# 重新载入配置
service crond reload
# 查看服务状态 
service crond status

크론탭 구문

crontab 명령은 cron 백그라운드 프로세스를 구동하는 데 사용되는 테이블을 설치, 제거 또는 나열하는 데 사용됩니다. 사용자는 실행해야 하는 일련의 명령을 실행을 위해 crontab 파일에 넣습니다. 각 사용자는 자신만의 crontab 파일을 가질 수 있습니다. /var/spool/cron 아래의 crontab 파일은 직접 생성하거나 수정할 수 없습니다. crontab 파일은 crontab 명령을 통해 생성됩니다.

crontab 파일에 실행할 명령어와 시간을 입력하는 방법입니다. 이 파일의 각 줄에는 6개의 필드가 포함되어 있습니다. 처음 5개 필드는 명령이 실행되는 시간을 지정하고 마지막 필드는 실행할 명령입니다. 각 필드를 구분하려면 공백이나 탭을 사용하세요.

형식은 다음과 같습니다.

minute hour day-of-month month-of-year day-of-week commands 

유효한 값 00-59 00-23 01-31 01-12 0-6 (0은 일요일) 숫자 외에도 "*", "/" 및 "-", ","와 같은 여러 특수 기호가 있습니다. , *는 값 범위 내의 모든 숫자를 나타내며, "/"는 매 마다, "/5"는 5단위마다, "-"는 특정 숫자부터 특정 숫자까지를 의미하고, ","는 여러 개의 이산 숫자를 구분하는 것을 의미합니다. -l은 현재 crontab을 표준 출력에 표시합니다.
-r은 현재 crontab 파일을 삭제합니다.
-e VISUAL 또는 EDITOR 환경 변수가 가리키는 편집기를 사용하여 현재 crontab 파일을 편집합니다. 편집을 마치고 종료하면 편집된 파일이 자동으로 설치됩니다.

크론 스크립트 생성

1단계: cron 스크립트 파일을 작성하고 이름을 mysqlRollBack.cron으로 지정합니다. 15,30,45,59 * * * * echo "xgmtest…" >> xgmtest.txt는 15분마다 인쇄 명령을 실행한다는 의미입니다.

2단계: 예약된 작업을 추가합니다. "crontab crontest.cron" 명령을 실행합니다. 완료

3단계: "crontab -l"을 사용하여 예약된 작업이 성공했는지 또는 해당 cron 스크립트가 /var/spool/cron 아래에 생성되었는지 확인합니다.

참고: 이 작업은 새 crontab을 추가하는 대신 사용자 아래의 crontab을 직접 대체합니다.

작성된 예약 작업 스크립트를 정기적으로 실행합니다. (먼저 쉘 스크립트 실행 권한을 부여하는 것을 기억하세요)

0 2 * * * /root/mysql_backup_script.sh

그런 다음 crontab 명령을 사용하여 작성된 타이밍 스크립트를 지정합니다.

crontab mysqlRollback.cron

그런 다음 다음 명령을 통해 예약된 작업이 생성되었는지 확인합니다.

첨부된 내용은 crontab을 사용하는 예입니다.

1. 매일 아침 6시

0 6 * * * echo "Good morning." >> /tmp/test.txt
# 注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

2. 2시간마다

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

3. 오후 11시부터 오전 8시, 오전 8시 사이 2시간마다

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

4. 매월 4일, 매주 월요일~수요일 오전 11시

0 11 4 * 1-3 command line

5. 1월 1일 오전 4시

0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
# 如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/

6. 매 시간마다 /etc/cron.hourly에 있는 스크립트를 실행합니다.

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

7. 매일 /etc/cron.daily에서 스크립트를 실행합니다.

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

8. 매주 /etc/cron.weekly에 있는 스크립트를 실행합니다.

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

9. 매월 /etc/cron.monthly에서 스크립트를 실행합니다.

42 4 1 * * root run-parts /etc/cron.monthly
注意: "run-parts" 这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。

10. 매일 오후 4시, 5시, 6시에 5분, 15분, 25분, 35분, 45분, 55분에 명령을 실행합니다.

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

11. 매주 월요일, 수요일, 금요일 오후 3시가 되면 시스템이 유지보수 상태로 전환되고 시스템이 다시 시작됩니다.

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

12. 매시간 10분과 40분마다 사용자 디렉터리에서 innd/bbslin 명령을 실행합니다.

10,40 * * * * innd/bbslink

13. 매시간 1분마다 사용자 디렉터리에서 bin/account 명령을 실행합니다.

1 * * * * bin/account

추천

출처blog.csdn.net/ZHAI_KE/article/details/132875297