20190222全天的實驗

實驗1:分庫備份並壓縮

[root@centos7 ~]#systemctl restart mariadb
[root@centos7 ~]#mysql -e 'show databases';
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| hellodb |
| mysql |
| performance_schema |
| test |
| wordpress |
+--------------------+
[root@centos7 ~]#mysqldump -A |gzip > /data/all.sql.gz
[root@centos7 ~]#ll /data/all.sql.gz
-rw-r--r-- 1 root root 191 Feb 23 08:27 /data/all.sql.gz
[root@centos7 ~]#mysqldump -A |xz > /data/all.sql.gz
[root@centos7 ~]#ll /data/all
-rw-r--r-- 1 root root 141127 Feb 23 08:01 /data/all_bak.sql.gz
-rw-r--r-- 1 root root 105968 Feb 23 08:27 /data/all.sql.gz (可看到xz的壓縮比更好)
我們解壓: cd /data/ -> xz -d all.sql.xz 把數據庫關閉,把數據庫刪除並恢復,步驟如下:
[root@centos7 data]#systemctl stop mariadb
[root@centos7 data]#rm -fr /var/lib/mysql/
(注意是刪庫不是刪目錄)
[root@centos7 data]#ll -d /var/lib/mysql/
drwxr-xr-x. 2 mysql mysql 6 Feb 23 08:43 /var/lib/mysql/
[root@centos7 data]#ls
all.sql all.sql.gz
[root@centos7 data]#ls /var/lib/mysql/
[root@centos7 data]#systemctl start mariadb (此時會初始化文件夾,會有新的數據生成)
[root@centos7 data]#ls /var/lib/mysql/
aria_log.00000001 aria_log_control ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock performance_schema test (皆是新數據)
[root@centos7 data]#mysql < all.sql 導入數據庫
[root@centos7 data]#mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> select user,host from mysql.user;
+--------+---------------+
| user | host |
+--------+---------------+
| wang | % |
| root | 127.0.0.1 |
| magedu | 192.168.141.% |
| wpuser | 192.168.151.% |
| root | ::1 |
| root | localhost |
+--------+---------------+
6 rows in set (0.00 sec)
[root@centos7 data]#for db in mysql -e 'show databases'|grep -Ev 'Database|information_schema|performance_schema';do mysqldump -B $db |gzip > /data/${db}bakdate +%F.sql;done 函數方法
[root@centos7 data]#ll
total 156
-rw-r--r-- 1 root root 525 Feb 23 09:36 db1_bak_2019-02-23.sql
-rw-r--r-- 1 root root 1868 Feb 23 09:36 hellodb_bak_2019-02-23.sql
-rw-r--r-- 1 root root 139780 Feb 23 09:36 mysql_bak_2019-02-23.sql
-rw-r--r-- 1 root root 516 Feb 23 09:36 test_bak_2019-02-23.sql
-rw-r--r-- 1 root root 519 Feb 23 09:36 wordpress_bak_2019-02-23.sql
我們不用函數,用管道傳過去:
[root@centos7 data]#mysql -e 'show databases'|grep -Ev 'Database|information_schema|performance_schema'|sed -r 's/(.)/mysqldump -B \1 |gzip > \/data\/\1.bak.sql/' |bash sed命令
[root@centos7 data]#ll
total 156
-rw-r--r-- 1 root root 526 Feb 23 09:45 db1.bak.sql
-rw-r--r-- 1 root root 1868 Feb 23 09:45 hellodb.bak.sql
-rw-r--r-- 1 root root 139780 Feb 23 09:45 mysql.bak.sql
-rw-r--r-- 1 root root 516 Feb 23 09:45 test.bak.sql
-rw-r--r-- 1 root root 519 Feb 23 09:45 wordpress.bak.sql
我們加上時間註釋“date +%F”:
[root@centos7 data]#mysql -e 'show databases'|grep -Ev 'Database|information_schema|performance_schema'|sed -r 's/(.
)/mysqldump -B \1 |gzip > \/data\/\1_date +%F.bak.gz/' |bash
You have new mail in /var/spool/mail/root
[root@centos7 data]#ll
total 312
-rw-r--r-- 1 root root 526 Feb 23 09:48 db1_2019-02-23.bak.gz
-rw-r--r-- 1 root root 526 Feb 23 09:45 db1.bak.sql
-rw-r--r-- 1 root root 1868 Feb 23 09:48 hellodb_2019-02-23.bak.gz
-rw-r--r-- 1 root root 1868 Feb 23 09:45 hellodb.bak.sql
-rw-r--r-- 1 root root 139780 Feb 23 09:48 mysql_2019-02-23.bak.gz
-rw-r--r-- 1 root root 139780 Feb 23 09:45 mysql.bak.sql
-rw-r--r-- 1 root root 516 Feb 23 09:48 test_2019-02-23.bak.gz
-rw-r--r-- 1 root root 516 Feb 23 09:45 test.bak.sql
-rw-r--r-- 1 root root 519 Feb 23 09:48 wordpress_2019-02-23.bak.gz
-rw-r--r-- 1 root root 519 Feb 23 09:45 wordpress.bak.sql
此時,我們完成數據庫的備份!!

分庫並壓縮 實驗步驟:

1、for db in mysql -uroot -e'show databases'|grep -Ev 'Database|information_schema|performance_schema';do mysqldump -B $db |gzip > /data/${db}bakdate +%F.sql;done
2、mysql -uroot -e'show databases'|grep -Ev 'Database|information_schema|performance_schema'|sed -r 's/(.)/mysqldump -B \1 |gzip > \/data\/\1.bak.sql/' |bash
3、mysql -uroot -e'show databases'|grep -Ev 'Database|information_schema|performance_schema'|sed -r 's/(.
)/mysqldump -B \1 |gzip > \/data\/\1_date +%F.bak.gz/' |bash

實驗2、完全備份
準備:在配置文件中設置二進制日誌,創建兩個新的文件夾存放二進制日誌

[root@centos7 ~]#mkdir /data/logbin/
[root@centos7 ~]#mkdir /data/backup
[root@centos7 ~]#ll /data
total 0
drwxr-xr-x 2 root root 6 Feb 23 09:52 backup
drwxr-xr-x 2 root root 6 Feb 23 09:51 logbin
[root@centos7 ~]#chown mysql.mysql /data/logbin
[root@centos7 ~]#
[root@centos7 ~]#vim /etc/my.cnf
[mysqld]
log_bin=/data/logbin/mysql-bin
[root@centos7 ~]#systemctl restart mariadb
[root@centos7 ~]#

1|查看列表:MariaDB [hellodb]> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name | Age | Gender |
+-----+---------------+-----+--------+
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 100 | F |
+-----+---------------+-----+--------+
4 rows in set (0.00 sec)
2、用事務將數據完全備份:mysqldump -A
[root@centos7 ~]#mysqldump -A --single-transaction --master-data=2 |gzip > /data/backup/all.bak.gz
[root@centos7 ~]#ll /data/backup/
total 140
-rw-r--r-- 1 root root 141203 Feb 23 10:47 all.bak.gz
3、我們想看增長情況:
MariaDB [(none)]> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 264 |
| mysql-bin.000002 | 638 |
+------------------+-----------+
2 rows in set (0.00 sec)
MariaDB [hellodb]> insert teachers(name,age)values('mage',20);
Query OK, 1 row affected (0.01 sec)
MariaDB [hellodb]> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 264 |
| mysql-bin.000002 | 872 |
+------------------+-----------+
2 rows in set (0.00 sec)
MariaDB [hellodb]> insert teachers(name,age)values('yuzheng',20);
Query OK, 1 row affected (0.00 sec)
MariaDB [hellodb]> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 264 |
| mysql-bin.000002 | 1109 | 638 872 1109 一直在漲。
+------------------+-----------+
2 rows in set (0.00 sec)
4、現在清空數據庫,實現還原:
a、[root@centos7 ~]#systemctl restart mariadb
[root@centos7 ~]# 先開啓服務,構建初始的數據庫狀態
b、查看系統數據庫:
[root@centos7 ~]#ll /data/logbin/
total 1064
-rw-rw---- 1 mysql mysql 264 Feb 23 10:37 mysql-bin.000001
-rw-rw---- 1 mysql mysql 1128 Feb 23 10:55 mysql-bin.000002
-rw-rw---- 1 mysql mysql 30373 Feb 23 10:55 mysql-bin.000003
-rw-rw---- 1 mysql mysql 1038814 Feb 23 10:55 mysql-bin.000004
-rw-rw---- 1 mysql mysql 245 Feb 23 10:55 mysql-bin.000005
-rw-rw---- 1 mysql mysql 150 Feb 23 10:55 mysql-bin.index
MariaDB [(none)]> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 264 |
| mysql-bin.000002 | 1128 |
| mysql-bin.000003 | 30373 |
| mysql-bin.000004 | 1038814 |
| mysql-bin.000005 | 245 |
+------------------+-----------+
5 rows in set (0.00 sec)
c、解壓數據庫:
[root@centos7 ~]#cd /data/backup/
[root@centos7 backup]#ls
all.bak.gz
[root@centos7 backup]#gzip -d all.bak.gz
[root@centos7 backup]#ll
total 512
-rw-r--r-- 1 root root 522178 Feb 23 10:47 all.bak
[root@centos7 backup]#vim all.bak
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=872;
[root@centos7 logbin]#mysqlbinlog --start-position=872 mysql-bin.000002 > inc.sql
[root@centos7 logbin]#ll
total 1080
-rw-r--r-- 1 root root 1911 Feb 23 11:28 inc.sql
-rw-rw---- 1 mysql mysql 264 Feb 23 10:37 mysql-bin.000001
-rw-rw---- 1 mysql mysql 1128 Feb 23 10:55 mysql-bin.000002
-rw-rw---- 1 mysql mysql 30373 Feb 23 10:55 mysql-bin.000003
-rw-rw---- 1 mysql mysql 1038814 Feb 23 10:55 mysql-bin.000004
-rw-rw---- 1 mysql mysql 264 Feb 23 11:24 mysql-bin.000005
-rw-rw---- 1 mysql mysql 264 Feb 23 11:27 mysql-bin.000006
-rw-rw---- 1 mysql mysql 264 Feb 23 11:28 mysql-bin.000007
-rw-rw---- 1 mysql mysql 245 Feb 23 11:28 mysql-bin.000008
-rw-rw---- 1 mysql mysql 240 Feb 23 11:28 mysql-bin.index
[root@centos7 logbin]#vim inc.sql 查看重定向的文件
/!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1/;
/!40019 SET @@session.max_insert_delayed_threads=0/;
/!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0/;
DELIMITER /!/;
#at 4
#190223 10:37:50 server id 1 end_log_pos 245 Start: binlog v 4, server v 5.5.60-MariaDB created 190223 10:37:50 at startup
ROLLBACK/!/;
BINLOG '
/rFwXA8BAAAA8QAAAPUAAAAAAAQANS41LjYwLU1hcmlhREIAbG9nAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD+sXBcEzgNAAgAEgAEBAQEEgAA2QAEGggAAAAICAgCAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAam7p6Q==
'/!/;
#at 872
#190223 10:51:15 server id 1 end_log_pos 943 Query thread_id=5 exec_time=0 error_code=0
SET TIMESTAMP=1550890275/!/;
SET @@session.pseudo_thread_id=5/!/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/!/;
d、追加導入文件進inc.sql,增量備份,
[root@centos7 logbin]#mysqlbinlog mysql-bin.000002 >> inc.sql
[root@centos7 logbin]#mysqlbinlog mysql-bin.000003 >> inc.sql
[root@centos7 logbin]#mysqlbinlog mysql-bin.000004 >> inc.sql
You have new mail in /var/spool/mail/root
[root@centos7 logbin]#mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> set sql_log_bin=off;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select @@sql_log_bin;
+---------------+
| @@sql_log_bin |
+---------------+
| 0 |
+---------------+二進制日誌爲0,關閉
1 row in set (0.00 sec)
e、恢復數據:
MariaDB [wordpress]> source /data/backup/all.bak 使生效
MariaDB [wordpress]> show databases; 可見數據庫已恢復
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| hellodb |
| mysql |
| performance_schema |
| test |
| wordpress |
+--------------------+
7 rows in set (0.00 sec)
f、 導入數據庫:source /data/logbin/inc.sql
MariaDB [mysql]> select * from hellodb.teachers;
+-----+---------------+-----+--------+
| TID | Name | Age | Gender |
+-----+---------------+-----+--------+
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 100 | F |
| 11 | mage | 20 | NULL |
| 12 | yuzheng | 20 | NULL |
+-----+---------------+-----+--------+
6 rows in set (0.00 sec) 可見數據已被還原並且是較新狀態;
g、數據庫恢復後,即可開啓二進制日誌,讓用戶開啓訪問。
MariaDB [mysql]> set sql_log_bin=on;
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> select @@sql_log_bin;
+---------------+
| @@sql_log_bin |
+---------------+
| 1 |
+---------------+
1 row in set (0.01 sec) 1表示開啓。

實驗2、完全備份和利用二進制日誌實現增量備份,並還原至數據庫的故障前的最新狀態

1 開啓二進制功能
mkdir /data/logbin
chown mysql.mysql /data/logbin

vim /etc/my.cnf
log_bin=/data/logbin/mysql_bin

2 完全全庫備份
mysqldump -uroot -A --single-transaction --master-data=2 |gzip > /data/backup/all.·date +%F·bak.gz

3 數據庫繼續修改 insert

4 數據庫故障
rm -rf /var/lib/mysql/*
systemctl stop mariadb

5 恢復
1)解壓縮完全備份文件
gzip -d /data/backup/all.·date +%F·bak.gz

2)查看完全備份時二進制文件和位置
cat /data/backup/all.·date +%F·bak

3)導出前面二進制文件和位置以後的二進制內容
mysqlbinlog --start-position=479 mysql-bin.000001 > /data/backup/inc.sql
mysqlbinlog mysql-bin.000002 >> /data/backup/inc.sql
mysqlbinlog mysql-bin.000003 >> /data/backup/inc.sql

4)數據庫啓動並初始化
systemctl start mariadb

5) 暫停二進制功能
mysql> set sql_log_bin=0;

6) 還原完全備份和增量備份
mysql> source /data/backup/all.·date +%F·bak
mysql> source /data/backup/inc.sql

7) 確認數據是否還原
select

8)開啓二進制功能,9並恢復用戶訪問
mysql> set sql_log_bin=1;

#####
刷新日誌會增長
MariaDB [(none)]> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 264 |
| mysql-bin.000002 | 1128 |
| mysql-bin.000003 | 30373 |
| mysql-bin.000004 | 1038814 |
| mysql-bin.000005 | 264 |
| mysql-bin.000006 | 264 |
| mysql-bin.000007 | 264 |
| mysql-bin.000008 | 245 |
+------------------+-----------+
8 rows in set (0.00 sec)

MariaDB [(none)]> flush logs;
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 264 |
| mysql-bin.000002 | 1128 |
| mysql-bin.000003 | 30373 |
| mysql-bin.000004 | 1038814 |
| mysql-bin.000005 | 264 |
| mysql-bin.000006 | 264 |
| mysql-bin.000007 | 264 |
| mysql-bin.000008 | 288 |
| mysql-bin.000009 | 245 |
+------------------+-----------+
9 rows in set (0.00 sec)
2、做數據庫備份:
[root@centos7 ~]#cd /data/backup/
[root@centos7 backup]#ls
all.bak inc.sql
[root@centos7 backup]#rm -rf /data/backup/all.bak
[root@centos7 logbin]#mysqldump -A --single-transaction --master-data=2 > /data/backup/all.bak 將數據庫備份出來
3、增加表中數據,並drop表:
MariaDB [hellodb]> insert teachers(name,age)values('a',20);
Query OK, 1 row affected (0.01 sec)

MariaDB [hellodb]> insert teachers(name,age)values('b',70);
Query OK, 1 row affected (0.01 sec)

MariaDB [hellodb]> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name | Age | Gender |
+-----+---------------+-----+--------+
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 100 | F |
| 11 | mage | 20 | NULL |
| 12 | yuzheng | 20 | NULL |
| 13 | a | 20 | NULL |
| 14 | b | 70 | NULL |
+-----+---------------+-----+--------+
8 rows in set (0.00 sec)
MariaDB [hellodb]> drop table teachers; 刪除教師表
Query OK, 0 rows affected (0.00 sec)
4、然而用戶有可能是對學生表進行了操作,而非教師表:
MariaDB [hellodb]> insert students(name,age)values('k',70);
Query OK, 1 row affected (0.01 sec)

MariaDB [hellodb]> insert students(name,age)values('p',90);
Query OK, 1 row affected (0.00 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 | 1 | NULL |
| 26 | k | 70 | F | NULL | NULL |
| 27 | p | 90 | F | NULL | NULL |
+-------+---------------+-----+--------+---------+-----------+
27 rows in set (0.00 sec)
MariaDB [hellodb]> drop table teachers;
ERROR 1051 (42S02): Unknown table 'teachers'
5、還原教師表:
a、先加讀鎖,用戶暫時不能訪問,不能寫:
MariaDB [(none)]> flush tables with read lock;
Query OK, 0 rows affected (0.01 sec)
b、暫停數據庫:[root@centos7 backup]#systemctl stop mariadb
[root@centos7 backup]#
c、先將備份過的數據進行還原:
[root@centos7 logbin]#ll /data/backup/all.bak
-rw-r--r-- 1 root root 522389 Feb 23 12:07 /data/backup/all.bak
d、查看備份文件,從000009開始備份,數值是245,就是最開始的數,我們可以不寫,
[root@centos7 logbin]#less /data/backup/all.bak
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=245;
[root@centos7 logbin]#mysqlbinlog mysql-bin.000009 > /data/backup/inc.sql
e、將[root@centos7 logbin]#vim /data/backup/inc.sql
#190223 12:13:28 server id 1 end_log_pos 820 Query thread_id=5 exec_time=0 error_code=0
SET TIMESTAMP=1550895208/!/;
DROP TABLE teachers / generated by server /將此命令剛纔誤刪除的操作給註釋掉即可。
f、[root@centos7 logbin]#ll /data/backup/
total 516
-rw-r--r-- 1 root root 522389 Feb 23 12:07 all.bak 最早時的備份
-rw-r--r-- 1 root root 3536 Feb 23 12:31 inc.sql 剛纔的增量備份 (二者合一起即可完成還原最新狀態)
g、進行還原要清空數據庫,
[root@centos7 logbin]#pwd
/data/logbig
[root@centos7 logbin]#cd /var/lib/mysql/
[root@centos7 mysql]#ls
aria_log.00000001 db1 ibdata1 ib_logfile1 performance_schema wordpress
aria_log_control hellodb ib_logfile0 mysql test
[root@centos7 mysql]#rm -rf /var/ib/mysql/
[root@centos7 mysql]#
h、可以新開一臺克隆機,例如,192.168.141.150的centos7的克隆機,vim /etc/my.cnf 填入“ log_bin " 開啓二進制日誌
k、將早前備份的數據及增量備份的數據scp過去:
[root@centos7 backup]#scp
192.168.141.150:/data/
The authenticity of host '192.168.141.150 (192.168.141.150)' can't be established.
ECDSA key fingerprint is SHA256:/B/BdPds6zjUDhs/DzDuqCMSubAcFpmn1k0DfECvpo8.
ECDSA key fingerprint is MD5:80:f2:c3:33:58:83:58:19:df:4c:0d:b0:ea:f8:fa:cc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.141.150' (ECDSA) to the list of known hosts.
[email protected]'s password:
all.bak 100% 510KB 19.0MB/s 00:00
inc.sql 100% 3536 791.6KB/s 00:00
m、使其生效,select出表的最新狀態:
MariaDB [wordpress]> source /data/inc.sql;
MariaDB [wordpress]> source /data/all.bak;
MariaDB [hellodb]> show master logs;
+--------------------+-----------+
| Log_name | File_size |
+--------------------+-----------+
| mariadb-bin.000001 | 245 |
+--------------------+-----------+
1 row in set (0.00 sec)

MariaDB [hellodb]> set sql_log_bin=1;
Query OK, 0 rows affected (0.00 sec)

MariaDB [hellodb]> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name | Age | Gender |
+-----+---------------+-----+--------+
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 100 | F |
| 11 | mage | 20 | NULL |
| 12 | yuzheng | 20 | NULL |
| 13 | a | 20 | NULL |
| 14 | b | 70 | NULL |
+-----+---------------+-----+--------+
8 rows in set (0.00 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 | 1 | NULL |
| 26 | k | 70 | F | NULL | NULL |
| 27 | p | 90 | F | NULL | NULL |
+-------+---------------+-----+--------+---------+-----------+
27 rows in set (0.00 sec)
實驗步驟:恢復誤刪除的表
1 完全全庫備份
mysqldump -uroot -A --single-transaction --master-data=2 |gzip > /data/backup/all.·date +%F·bak.gz
2 數據庫繼續修改teachers表
insert
3 刪除teachers表
4 數據庫繼續修改students
insert
5 停止服務
systemctl stop mariadb
6 查看完全備份時二進制文件和位置
cat /data/backup/all.·date +%F·bak
7 導出前面二進制文件和位置以後的二進制內容
mysqlbinlog --start-position=479 mysql-bin.000001 > /data/backup/inc.sql
8 修改備份中的誤操作的指令
vim /data/backup/inc.sql 刪除drop table 指令
9 清空數據
rm -rf /var/lib/mysql/*
10 利用備份還原
mysql> set sql_log_bin=0;
mysql> source /data/backup/all.·date +%F·bak
mysql> source /data/backup/inc.sql
11 檢查無誤,恢復正常訪問
mysql> set sql_log_bin=1;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章