MySQL은, mariadb 삭제 라이브러리, 복구의 완전한 아날로그 구현

시뮬레이션 시나리오 :

일요일 전체 백업 - 월요일 10시 삭제 데이터베이스 DB1 - 10시 10분 일부 페이지에 액세스 할 수 없음을, 어떻게 데이터를 복구 발견?

참고 :

由于库不仅仅一个,因此db1删除,用户可能正常的访问db2,但是多个数据库之间往往是有关联的,    
如商品数据库和订单数据库,因此为了避免数据的不一致性,往往会导致逻辑上出现问题的;
此时应当停止服务;即暂停用户的访问,这是一个大的问题,这是需要慎重选择的,是服务重要还是数据
更重要,最好向上级报告。

처리 로직 :

1, 서비스를 중지 : 로컬 사용자가 관리 할 수 있도록 원격 데이터베이스와 응용 프로그램 간의 네트워크 연결을 분리,
2, 논리 정렬 :
전체 백업 및 복구 : 전체 백업을 일요일,
10 : 00 일요일 일요일 1 데이터; 제외 삭제 SQL 명령,
월요일 10시 - 데이터의 10시 10분;

如果业务数据不是十分的重要,那么就恢复周日的全备份,丢失全备份至周1 10:00的数据。

[root@centos7x ~]$mysqldump -A -F --master-data=2 --single-transaction > all_`date +%F_%T`.sql
[root@centos7x ~]$less all_2018-02-24_21\:46\:13.sql 
-- Position to start replication or point-in-time recovery from
--
-- CHANGE MASTER TO MASTER_LOG_FILE='mariadb-bin.000010', MASTER_LOG_POS=245;
--
-- Current Database: `hellodb`

那么对于测试环境,'mariadb-bin.000010', MASTER_LOG_POS=245之前的二进制日志数据都是可以删除的; 
单机备份时,--master-data=1或者2都是可以的;但是如果是主动复制那么最好是1;

시뮬레이션 고장 :

아날로그 수정 및 삭제 작업을,
MariaDB는 [hellodb]> SELECT * 학생에서;
+ --------------- + ------- + ----- + --- ----------- + --------- + + -----
| StuID | 이름 | 나이 | 성별 | ClassID가 | TeacherID |
+ ------- + --------------- + ----- + -------- + --------- + --------- - +
|.. 1 |시 중위 | (22)는 | M | 2 | 3 |
.. | 2 |시 Potian | (22)는 | M | 1 | 7 |
. | 3 | 샤오 Yanke에 | (53)는 | M | 2 | 16 |
. | 4 | 딩 디안 | 32 | M |. 4. | 4 |
. | 5 | 유 YUTONG | (26)는 | M |. 3. | 1 |
. | 6 |시 청 | (46)는 | M |. 5 | NULL |
. | 7 | 자이 렌. | 19 | F.는. | 3 | NULL |
. | 8 | 린 Daiyu. | 17 | F.는. | 7 | NULL은 |
|. 9 |은 F. |. | 6 | NULL은 | 렌 잉잉이 | 20된다
| 10 | 유에 링샨이. | 19 | F.는. | 3 | NULL은 |
원발 Chengzhi는 | | |. 11 (23)는 | M | 6 | NULL |
| 12 | 웬 청청. | 19 | F.이. | 1 | NULL |
| (13)는 | 티안 Boguang | (33)는 | M | 2 | NULL |
| 14 | 루 Wushuang. | 17 | F.. | 3 | NULL |
| 15 | 두안 유. | 19 | M. | 4 | NULL |
| 16 | 쑤 주홍 | (21)는 | M |. 1 | NULL |
|. 17 | 임충 | 25 | M |. 4 | NULL |
| 18된다 | 아 룽 | 23된다 | M |. 7 | NULL |
|. 19 | 슈 Baochai | 6 | | NULL |. F. | 18은
| 20은 | 디아 찬. | 19 | F.. | 7 | NULL |
| (21)는 | 황 부인 | (22)는 | F.. | 6 | NULL |
| 22 | 샤오 아오가 | F. | 20은 | . 1 | NULL |
| 차오 마 | | M | | (23)는 23이다. 4 | NULL |
| 24 | 쑤 시안 (西安) | 27 | M | NULL | NULL |
| 25 | Dasheng 태양 | 100 | M | NULL | NULL |
+ --- + ---- ----- ----- + + + -------- --------- + ---- + -------
세트에 25 행 (0.00 초)

    MariaDB [hellodb]> insert into students (name,age,gender) values('a','29','F');
    Query OK, 1 row affected (0.01 sec)

    MariaDB [hellodb]> select * from students;
    +-------+---------------+-----+--------+---------+-----------+
    | StuID | Name          | Age | Gender | ClassID | TeacherID |
    +-------+---------------+-----+--------+---------+-----------+
    |     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
    |     2 | Shi Potian    |  22 | M      |       1 |         7 |
    |     3 | Xie Yanke     |  53 | M      |       2 |        16 |
    |     4 | Ding Dian     |  32 | M      |       4 |         4 |
    |     5 | Yu Yutong     |  26 | M      |       3 |         1 |
    |     6 | Shi Qing      |  46 | M      |       5 |      NULL |
    |     7 | Xi Ren        |  19 | F      |       3 |      NULL |
    |     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |
    |     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
    |    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |
    |    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
    |    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |
    |    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
    |    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |
    |    15 | Duan Yu       |  19 | M      |       4 |      NULL |
    |    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
    |    17 | Lin Chong     |  25 | M      |       4 |      NULL |
    |    18 | Hua Rong      |  23 | M      |       7 |      NULL |
    |    19 | Xue Baochai   |  18 | F      |       6 |      NULL |
    |    20 | Diao Chan     |  19 | F      |       7 |      NULL |
    |    21 | Huang Yueying |  22 | F      |       6 |      NULL |
    |    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
    |    23 | Ma Chao       |  23 | M      |       4 |      NULL |
    |    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
    |    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |
    |    26 | a             |  29 | F      |    NULL |      NULL |
    +-------+---------------+-----+--------+---------+-----------+
    26 rows in set (0.00 sec)

    MariaDB [hellodb]> 

MariaDB [hellodb]> 드롭 데이터베이스 hellodb;
쿼리 OK 영향 7 행 (0.01 초)

MariaDB [(없음)]> 쇼 데이터베이스;
+ -------------------- +
| 데이터베이스 |
+ -------------------- +
| INFORMATION_SCHEMA |
| MySQL의 |
| performance_schema |
| 테스트 |
+ -------------------- +
세트의 4 행 (0.00 초)

MariaDB [(없음)] "테스트 사용;
데이터베이스 변경

MariaDB [시험]> 테이블 T1 (아이디 int)를 생성;
쿼리 OK 영향 0 행 (0.01 초)

MariaDB [시험]> * 시험으로부터 선택;
ERROR 1146 (42S02) 표 'test.test'doesn''t가 존재
MariaDB [시험]>
MariaDB [시험]> 쇼 테이블;
+ ---------------- +
| Tables_in_test |
+ ---------------- +
| T1 |
+ + ----------------
세트의 1 행 (0.00 초)

MariaDB [시험] "판독 로크 플러시 테이블;
쿼리 확인, 영향을받는 0 행 (0.00 초)

MariaDB [시험]> * T1로부터 선택;
빈 설정 (0.00 초)

MariaDB [시험]> 삽입 값 T1 (1);
ERROR 1223 (HY000) : 당신이 충돌하는 읽기 잠금을 가지고 있기 때문에 쿼리를 실행 can''t는
MariaDB [테스트]>

데이터 복구 작업 :

MariaDB [시험]> 쇼 마스터 로그;
+ -------------------- + ----------- +
| Log_name | FILE_SIZE |
+ -------------------- + ----------- +
| mariadb-bin.000001 위 | 7700 |
| mariadb-bin.000002 | 290 |
| mariadb-bin.000003 | 290 |
| mariadb-bin.000004 | 290 |
| mariadb-bin.000005 | 290 |
| mariadb-bin.000006 | 290 |
| mariadb-bin.000007 | 290 |
| mariadb-bin.000008 | 290 |
| mariadb-bin.000009 | 290 |
| mariadb-bin.000010 | 669 |
-------------------- + + + -----------
세트에서 10 개의 행 (0.00 초)

로그 새로 고침 :
그래서 'mariadb-bin.000010'= 전체 백업 및 복구 MASTER_LOG_POS (245)를 사용하여 이전 데이터를,
245 'mariadb-bin.000010', MASTER_LOG_POS = 245 'mariadb-bin.000011', MASTER_LOG_POS는 =
데이터 사이를 바이너리 로그 복구를 사용;

MariaDB [시험]> 로그 플러시;
쿼리 OK 영향 0 행 (0.01 초)

MariaDB [시험]> 쇼 마스터 로그;
+ -------------------- + ----------- +
| Log_name | FILE_SIZE |
+ -------------------- + ----------- +
| mariadb-bin.000001 위 | 7700 |
| mariadb-bin.000002 | 290 |
| mariadb-bin.000003 | 290 |
| mariadb-bin.000004 | 290 |
| mariadb-bin.000005 | 290 |
| mariadb-bin.000006 | 290 |
| mariadb-bin.000007 | 290 |
| mariadb-bin.000008 | 290 |
| mariadb-bin.000009 | 290 |
| mariadb-bin.000010 | 714 |
| mariadb-bin.000011 | 245 |
-------------------- + + + -----------
세트의 11 행 (0.01 초)

여러 바이너리 로그의 전체 백업 이후 인 경우에, 당신은 밖으로 복사 한 필요가 있고, 합병,
. [루트 @의 centos7x ~] $의 CP의 /var/lib/mysql/mariadb-bin.000010
[루트 @의 centos7x ~] $ LS
all_2018-02-24_21 : 46 : 13.sql all.sql anaconda- 의 ks.cfg hellodb_InnoDB.sql 초기 설정을 ks.cfg-mariadb-bin.000010

[루트 @의 centos7x ~] $ mysqlbinlog은 --start 위치 = 245 mariadb-bin.000010

[루트 @의 centos7x ~] $ mysqlbinlog은 --start 위치 = 245 mariadb-bin.000010> binlog.sql

바이너리 로그의 SQL 문을 삭제 제거하는 데이터베이스;
[루트 @의 centos7x ~]는 정력 binlog.sql $
드롭 데이터베이스 hellodb을

또한 일시적으로 일시적으로 꺼져있는 데이터를 복원하기 전에 바이너리 로그를 기록 할 필요가;

'SQL_LOG_BIN'등 MariaDB [시험]> 쇼 변수;
+ --------------- + ------- +
| VARIABLE_NAME | 가치 |
+ --------------- + ------- +
| SQL_LOG_BIN | ON |
--------------- ------- + + +
세트의 1 행 (0.00 초)

MariaDB [시험]> 설정 SQL_LOG_BIN = 0;
쿼리 확인, 영향을받는 0 행 (0.00 초)

'SQL_LOG_BIN'등 MariaDB [시험]> 쇼 변수;
+ --------------- + ------- +
| VARIABLE_NAME | 가치 |
+ --------------- + ------- +
| SQL_LOG_BIN | OFF |
--------------- ------- + + +
세트의 1 행 (0.00 초)

log_bin 옵션에 SQL_LOG_BIN와 /etc/my.cnf에 바이너리 옵션은 기록에 영향을 미칠 수 있지만 한 다음, 폐쇄
단어는 MySQL의 서비스를 다시 시작해야 수정, 구성 파일에 log_bin하는 이진 로깅 기능이 꺼져 의,
그리고 SQL_LOG_BIN의 대답은 즉시 효과 수준이다;

읽기 잠금 또는 잠금 해제를 데이터베이스;
MariaDB는 [시험]> 테이블 잠금 해제,
확인 조회 0 열의 영향 (0.01 초)

전체 백업을 복원
MariaDB [테스트]> 소스 all_2018-02-24_21 : 46입니다 13.sql

MariaDB [(없음)]> hellodb.students SELECT * 없음;

바이너리 로그 복구 :
마지막 레코드는 바이너리 로그는 사용자의 액세스를 복원이며,
MariaDB [(없음)]> binlog.sql 소스
MariaDB [(없음)]>는 SELECT * hellodb.students에서;
| 25 | 일 Dasheng | 100 | M | NULL | NULL |
| 26 | A | 29 | F | NULL | NULL |
+ --------------- + ------- + ----- + - ------ + ----------- + --------- +

MariaDB [시험]> 설정 SQL_LOG_BIN = 1;
쿼리 확인, 영향을받는 0 행 (0.00 초)

'SQL_LOG_BIN'등 MariaDB [시험]> 쇼 변수;
+ --------------- + ------- +
| VARIABLE_NAME | 가치 |
+ --------------- + ------- +
| SQL_LOG_BIN | ON |
--------------- ------- + + +
세트의 1 행 (0.00 초)

추천

출처blog.51cto.com/14589001/2446821