2019년 10월 13일 MySQL의 백업 및 전체 백업 스크립트 케이스를 복원

A, MySQL의 전체 백업 케이스 (기본 백업)

1, 먼저 데이터베이스를 생성, 데이터 테이블은 데이터를 기록

MariaDB는 [(없음)]> 데이터베이스 클라이언트를 생성하지;

MariaDB [(없음)]> 사용 클라이언트

구성 파일을 수정 (중국어 지원)

[루트 @ localhost를 ~] #의 정력 /etc/my.cnf에           

변경된 내용

character_set_server = UTF8의
정렬 서버 = utf8_general_ci

[클라이언트]
기본 문자 집합 = UTF8

MariaDB는 [(클라이언트)]> '의 character_set_ %'와 같은 변수를 보여준다;
+ -------------------------- + ---------------------- ------ +
| VARIABLE_NAME | 가치 |
+ -------------------------- + ---------------------- ------ +
| 해서 character_set_client | UTF8 |
| character_set_connection을 | UTF8 |
| character_set_database | UTF8 |
| character_set_filesystem | 진 |
| character_set_results | UTF8 |
| character_set_server | UTF8 |
| character_set_system | UTF8 |
| character_sets_dir | 는 / usr / share / mysql을 / 문자셋 / |
+ -------------------------- + ---------------------- ------ +

 

MariaDB [클라이언트]> 표 USER_INFO (ID의 INT (20), 이름 char (20), 성별 CHAR (2)의 ID 번호 INT (110), 요금 INT (100)를 사용하여) 생성,
확인을 조회 0 열의 영향을 ( 0.01 초)

MariaDB는 [클라이언트]> user_info 값을 삽입 ( "000000001", "孙空武','男','011 ','100 ');
쿼리 OK 영향 1 행 (0.00 초)

MariaDB는 [클라이언트]> ( '000000002', '蓝凌', '女', '012', '98')에 삽입 user_info 값;
쿼리 OK 영향 1 행 (0.01 초)

MariaDB는 [클라이언트]> ( '000000003', '姜纹', '女', '013', '12')에 삽입 user_info 값;
쿼리 OK 영향 1 행 (0.01 초)

MariaDB는 [클라이언트] " ("000000004 ","关园','男','014 ','38 ')에 삽입 user_info 값;
쿼리 OK 영향 1 행 (0.01 초)

MariaDB는 [클라이언트]> ( '000000005', '罗中昆', '男', '015', '39')에 삽입 user_info 값;
쿼리 OK 영향 1 행 (0.01 초)

MariaDB [클라이언트] " SELECT * USER_INFO에서]
+ ----------- ----------- + + + ------ -------- + -------- + -------
| ID | 이름 | 성 | 사용자 ID 번호 | 요금 |
+ ----------- + ------ + -------- + ------------- + ----- + --------
| 1 | 빈 일 우 | M | 11 | 100 |
| 2 | Landray | M | 12은 | 98 |
|. 3 | 생강 랜드 | M은 | (12)는 | | 13이다
. | 4 | 오프 공원 | M | 14 | 38 인 |
. | 5 | Luozhong 군 | M | 15 | 39 |
+ --- -------- + -------- + ------------- + ----------- + ------ - +
세트에 5 행 (0.00 초)

2, 첫 번째 전체 백업 client.user_info 테이블 :

[루트 @ 로컬 호스트 ~] # mysqldump를 -uroot -p123 클라이언트 user_info> 백업 / client.user_info - $ (날짜 + %의 Y %의 m % d에) .SQL

아날로그 데이터 손실 및 복구 데이터 :

[루트 @ localhost를 ~] # mysql을 -uroot -p123 -e '드롭 테이블 client.user_info;'
[루트 @ localhost를 ~] # mysql을 -uroot -p123 -e '사용 클라이언트, 쇼 테이블;'

[루트 @ localhost를 ~] # mysql을 -uroot -p123 클라이언트 <백업 / client.user_info-20191013.sql
[루트 @ localhost를 ~] # mysql을 -uroot -p123 -e '사용 클라이언트, 쇼 테이블;'
+ ------------------ +
| Tables_in_client |
+ ------------------ +
| user_info |
+ ------------------ +

[루트 @ 로컬 호스트를 ~] # MySQL을 -uroot - P123의 -e '사용 클라이언트, USER_INFO에서 SELECT *;'
+ ----------- + ----------- + - + ------------- + -------- + -------
| ID | 이름 | 성 | 사용자 ID 번호 | 요금 |
+ ---- ------- + -------- + ------------- + ----------- + ------- - +
|.. 1 | SUN 빈 WU | M | 11 | 100 |
| 2 | Landray | M은 | 98 | | 12입니다
. | 12 | | 3 | 생강 땅 | M | (13)이다
. 4 | 오프 공원 | M | 14 | 38 인 | |
| 5 | Luozhong 군 | M | 15 | 39 |
+ ----------- + ----------- + -------- + ------ ------- + --------

정기적 인 백업 데이터 :

약간의 스크립트를 작성 :

[루트 @ localhost를 ~] #의 정력 /opt/client_bak.sh

 내부 다음을 추가 :

#! / 빈 / bash는
$ (날짜 + % Y %의 분 % d에) .SQL - mysqldump는 -p123 클라이언트 user_info> 백업 / client.user_info -uroot

[루트 @ localhost를 ~] # 용 의 crontab -e                   // 일이 아침에이 스크립트를 수행하는
0 2 * * * /opt/client_bak.sh

[루트 @ localhost를 ~] # 개의 systemctl 다시 시작 있으며 crond는        예약 된 작업을 다시 시작 //

있으며 crond 형식 : 분 일 월 주 작업 예약

둘째, 크로스 - 호스트 백업

실험 환경 : 가상 머신의 IP : 192.168.200.111,192.168.200.112

실험 요구 사항 : 백업을 위해 매일 아침에 인증 라이브러리 오프 사이트 백업, 두 가지의 MySQL의 서버와 클라이언트 라이브러리를 달성하기 위해, 데이터 복구하는 스크립트를 작성하는 것입니다.

112 : [루트 @ 로컬 호스트는 ~] # 설치 MariaDB -Y 냠                // MariaDB에 대한 장착

1, 클라이언트에 라이센스 MySQL 서버를 선택하고 테이블을 백업 할 수있는 권한을 잠 그려면

MariaDB [(없음)]> 인증을 선택 잠금 테이블을 부여 * '123'식별 'admin'@'192.168.200.112'이다.;
쿼리 OK 영향 0 행 (0.01 초)

MariaDB [(없음)]> 클라이언트 선택 잠금 테이블을 부여 * '123'식별 'admin'@'192.168.200.112'이다.;
쿼리 확인, 영향을받는 0 행 (0.00 초)

MariaDB [(없음)]> 플러시 특권 // 리프레시 허가 형태
쿼리 OK, 0 행 영향 (0.00 초)

2 연결 테스트

[루트 @ localhost를 ~] # mysql을 -u 관리자 -p123 -h 192.168.200.111
MariaDB 모니터에 오신 것을 환영합니다. 명령로 끝; 또는 \의 g.
귀하의 MariaDB 연결 ID는 21
5.5.41 - MariaDB MariaDB 서버 : Server 버전

저작권 (C) 2000, 2014, 오라클, MariaDB 공사 Ab의 등.

'도움;'입력 도움 또는 '\의 시간'. 유형 '\ c'는 현재의 입력 문을 취소합니다.

MariaDB [(없음)]>

3, 쓰기, 클라이언트 백업 스크립트 :

[루트 @ localhost를 ~] #의 정력 /opt/bakmysql.sh

#! / 빈은 / bash는
# MySQL의 데이터베이스 백업 스크립트
#은 로그인 변수 설정
my_user을 = "ADMIN"
MY_PASS = "123"
my_host = "192.168.200.111"
MY_CONN = "- U $ my_user -p $ MY_PASS -h $ my_host"
# 설정 백업 데이터베이스
MY_DB1 = "정식"
MY_DB2 = "클라이언트"
# 백업 경로, 도구, 시간, 파일 이름을 정의
= "백업"BF_DIR을
BF_CMD이 = "은 / usr / 빈 /를 mysqldump는"
BF_TIME = $ (날짜 + %는 Y %의 m의 % %의 H %의 M D-)
NAME_1 = "$ MY_DB1- $ BF_TIME"
NAME_2 = "$ MY_DB2- $ BF_TIME"
# 백업 .SQL 스크립트, 다음 패키지 압축 (포장 후 원본 파일 삭제)
[-d $ BF_DIR] || -p $ BF_DIR에서 mkdir의
CD $ BF_DIR
$ BF_CMD $ MY_CONN는 MY_DB1 $> $ NAME_1.sql --databases
$ BF_CMD $ MY_CONN --databases $ MY_DB2> $ NAME_2.sql
/ 빈 / 타르 ZCF $ NAME_1.tar을.GZ $ NAME_1.sql --remove &>을 / dev / null
/ 빈 / 타르 zcf $ NAME_2.tar.gz $ NAME_2.sql --remove &>을 / dev / null

[루트 @ localhost를 ~] #의 chmod를 + X /opt/bakmysql.sh
[루트 @ localhost를 ~] #의 /opt/bakmysql.sh

[루트 @ localhost를 ~] # 개의 LS 백업 /
인증-20191014-0909.tar.gz 클라이언트 20191014-0909.tar.gz

예약 된 작업을 추가합니다 :

[루트 @ localhost를 ~] # 용의 crontab -e

0 2 * * * /opt/bakmysql.sh

[루트 @ localhost를 ~] # systemctl 다시 시작 있으며 crond

4, 스크립트 데이터 복구 :

 [루트 @ localhost를 ~] #의 정력 /opt/restore_mysql.sh

#! / 빈 / bash는
# MySQL의 데이터베이스 데이터 스크립트를 복원
# 변수를 설정

= My_user "ADMIN"
MY_PASS = "123"
my_host = "192.168.200.111"
BF_DIR = "백업"
MKDIR .aaa
LS $ BF_DIR | 칼럼 -t> .aaa / DB_LIST
AWK -F'- ''인쇄 $ {2} '. AAA / DB_LIST> .aaa / dt.txt
읽기 -p "를 데이터베이스 (YYYYMMDD)을 복원하고자하는 날짜를 지정하십시오 :"DT를
[$ 2천16만5백1 DT -ge] && [DT -le $ 20,160,601는] IF하며 다음
"$의 DT를"grep을 .aaa / dt.txt &>을 / dev / null
IF [$ -ne 0?] 그 후에
"죄송합니다, 당신은 백업 날짜 데이터베이스 백업 날짜의 범위 내에서 더 이상 복원 할 수 없습니다"에코
(가) 다른
"에코 다음 검색 데이터베이스를 복원 "
AWK -F'- '/ $의 DT /'{인쇄 NR, $ 1} '.aaa / DB_LIST
읽기 -p"데이터베이스를 복원 할 번호를 선택하세요 : "NB
나노 미터 = $ (AWK -F'-'/ $의 DT / '{인쇄 NR, $ 1}'.aaa / DB_LIST | AWK / $ NB / '인쇄 $} 2 { ')
"이제 데이터베이스 복원 : $에 dt가 $의 nm의"에코
CD $ BF_DIR
ONM = $ (LS |) GREP "$ DT는에 $의 나노"
MKDIR .bbb로 바꿉니다
XF $ ONM -C 타르 .bbb로 바꿉니다
MySQL의 -u -P my_user $ $ $ my_host MY_PASS -H <.bbb로 바꿉니다 / *
에코 "$ 복원되었습니다 내지 $의 DT '
RM의 RF .bbb로 바꿉니다
CD - &> / 디바이스 / 널
RM .aaa -rf
Fi를
다른
"죄송합니다, 데이터베이스 백업을 복원 할 백업 날짜가 날짜 범위 내에 있지 않습니다"에코
파이

[루트 @ localhost를 ~] # chmod를 + X /opt/restore_mysql.sh

이러한 클라이언트에 데이터를 복원, 당신은 권한을 열 필요

111 :

MariaDB는 [(없음)]> 인증을 모두 부여하지 * 'admin'@'192.168.200.112'이다.;
쿼리 확인, 영향을받는 0 행 (0.00 초)

MariaDB는 [(없음)]> 클라이언트 모두 부여하지 * 'admin'@'192.168.200.112'이다.;
쿼리 OK 영향 0 행 (0.01 초)

MariaDB [(없음)]> 데이터베이스 클라이언트 드롭;                     // 삭제 데이터 복구 클라이언트 할
쿼리 OK를, 1 행의 영향 (0.01 초)

 

 

 

 

추천

출처www.cnblogs.com/990624lty-jhc/p/11668313.html