站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        MySQL的備份還原(mysqldump)-Masuri-51CTO博客

        MySQL的備份還原(mysqldump)

        MySQL的還原前提是要建立在,有完全備份和二進(jìn)制日志開(kāi)啟的前提下,并且二進(jìn)制日志文件和完全備份存放在與數(shù)據(jù)庫(kù)文件不同的磁盤(pán)上,否則當(dāng)磁盤(pán)發(fā)生損壞數(shù)據(jù)將無(wú)法進(jìn)行恢復(fù)。

        開(kāi)啟二進(jìn)制日志

        開(kāi)啟二進(jìn)制日志需要將MySQL中的sql_log_bin和log_bin這兩個(gè)選項(xiàng)系統(tǒng)中默認(rèn)開(kāi)啟sql_log_bin選項(xiàng)所以此處無(wú)需修改

        MariaDB [(none)]> SHOW VARIABLES LIKE 'sql_log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | sql_log_bin   | ON    | +---------------+-------+ 1 row in set (0.01 sec)

        2.開(kāi)啟log_bin注意:不要和數(shù)據(jù)庫(kù)存放在統(tǒng)一磁盤(pán)內(nèi),不要和數(shù)據(jù)庫(kù)存放在統(tǒng)一磁盤(pán)內(nèi),不要和數(shù)據(jù)庫(kù)存放在統(tǒng)一磁盤(pán)內(nèi)重要的事情說(shuō)三遍。

        [root@localhost ~]# mkdir /data/bin [root@localhost ~]# chown -R mysql.mysql /data/bin  #將目錄的屬主和屬組都改為mysql

        二進(jìn)制日志目錄創(chuàng)建完畢后,修改配置文件,添加log-bin選項(xiàng),并指定路徑,此處要注意mysql-bin是二進(jìn)制日志的抬頭。

        [root@localhost ~]# vim /etc/mysql/my.cnf log-bin=/data/bin/mysql-bin            #mysql-bin為二進(jìn)制日志的文件名的抬頭

        以上配置完成后重啟mysql服務(wù)

        [root@localhost ~]# service mysqld restart Restarting mysqld (via systemctl):                         [  OK  ]

        此時(shí)二進(jìn)制日志目錄下已經(jīng)多出了兩個(gè)二進(jìn)制日志文件

        [root@localhost ~]# ll /data/bin/ total 12 -rw-rw---- 1 mysql mysql 351 May  6 16:51 mysql-bin.000001 -rw-rw---- 1 mysql mysql  54 May  6 16:51 mysql-bin.index

        場(chǎng)景一、磁盤(pán)損壞恢復(fù)

        生產(chǎn)中會(huì)發(fā)生存放數(shù)據(jù)的磁盤(pán)突然發(fā)生損壞而造成數(shù)據(jù)丟失的情況,此時(shí)就需要結(jié)合之前所作的完全備份以及二進(jìn)制日志進(jìn)行將數(shù)據(jù)完全恢復(fù)

        場(chǎng)景模擬

        一、對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份

        [root@localhost ~]# mysql -e "SHOW DATABASES;" +--------------------+ | Database           | +--------------------+ | hellodb            | | information_schema | | mysql              | | performance_schema | | test               | +--------------------+  [root@localhost ~]# mysqldump -A --single-transaction --master-data=2 | xz > /data/all.sql.xz

        二、備份完畢后數(shù)據(jù)庫(kù)發(fā)生小部分變化

        MariaDB [(none)]> INSERT hellodb.students(stuid,name,gender,age) VALUE(26,'linchong','M',30) ; Query OK, 1 row affected (0.00 sec)  MariaDB [(none)]> INSERT hellodb.students(stuid,name,gender,age) VALUE(27,'Lujunyi','M',30); Query OK, 1 row affected (0.00 sec)

        三、數(shù)據(jù)庫(kù)發(fā)生破壞,數(shù)據(jù)丟失

        [root@localhost ~]# rm -rf /data/mysql/*

        數(shù)據(jù)恢復(fù)

        一、將mysqld服務(wù)停止

        [root@localhost ~]# service mysqld stop Stopping mysqld (via systemctl):                           [  OK  ]

        二、查看下二進(jìn)制日志。

        由于每次啟動(dòng)服務(wù)都會(huì)重新生成一個(gè)新的二進(jìn)制日志,所以先查看下二進(jìn)制日志的編號(hào)以免等下在使用二進(jìn)制日志還原數(shù)據(jù)時(shí)還原了不必要的數(shù)據(jù)

        [root@localhost ~]# ll /data/bin/ total 504 -rw-rw---- 1 mysql mysql    351 May  6 16:51 mysql-bin.000001 -rw-rw---- 1 mysql mysql   9388 May  6 17:01 mysql-bin.000002 -rw-rw---- 1 mysql mysql     81 May  6 17:03 mysql-bin.index

        三、重啟MySQL服務(wù),初始化數(shù)據(jù)庫(kù)

        [root@localhost ~]# service mysqld start Starting mysqld (via systemctl):                           [  OK  ] [root@localhost ~]# ll /data/mysql/ total 122924 -rw-rw---- 1 mysql mysql    16384 May  6 17:01 aria_log.00000001 -rw-rw---- 1 mysql mysql       52 May  6 17:01 aria_log_control drwx------ 2 mysql mysql      272 May  6 16:54 hellodb -rw-rw---- 1 mysql mysql     1298 May  6 17:01 ib_buffer_pool -rw-rw---- 1 mysql mysql 12582912 May  6 17:03 ibdata1 -rw-rw---- 1 mysql mysql 50331648 May  6 17:03 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 Apr 29 12:49 ib_logfile1 -rw-rw---- 1 mysql mysql 12582912 May  6 17:03 ibtmp1 -rw-rw---- 1 mysql mysql        6 May  6 17:03 localhost.localdomain.pid -rw-rw---- 1 mysql mysql        0 Apr 29 12:57 multi-master.info drwx------ 2 mysql root      4096 Apr 29 12:49 mysql -rw-rw---- 1 mysql mysql      351 Apr 29 14:06 mysql-bin.000001 -rw-rw---- 1 mysql mysql      351 May  6 16:50 mysql-bin.000002 -rw-rw---- 1 mysql mysql       38 May  6 16:26 mysql-bin.index -rw-rw---- 1 mysql mysql        0 May  6 16:50 mysql-bin.state srwxrwxrwx 1 mysql mysql        0 May  6 17:03 mysql.sock drwx------ 2 mysql mysql       20 Apr 29 12:49 performance_schema drwx------ 2 mysql root         6 Apr 29 12:49 test

        四、將完全備份解壓

        [root@localhost ~]# unxz /data/all.sql.xz 

        五、由于完全備份后數(shù)據(jù)又發(fā)生過(guò)改變所以需要利用二進(jìn)制日志進(jìn)行還原在利用二進(jìn)制還原前,先查看下完全備份時(shí)二進(jìn)制日志所在的位置。

        [root@localhost ~]# vim /data/all.sql  -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=8946;

        六、將完全備份后產(chǎn)生二進(jìn)制日志的數(shù)據(jù)導(dǎo)出

        [root@localhost ~]# mysqlbinlog --start-position=8946 /data/bin/mysql-bin.000002 > /data/inc.log

        七、進(jìn)入MySQL,停止二進(jìn)制日志記錄

        由于接下來(lái)的操作是恢復(fù)數(shù)據(jù),所以此處不需要讓二進(jìn)制日志記錄數(shù)據(jù)。

        MariaDB [(none)]> SET sql_log_bin=off; Query OK, 0 rows affected (0.00 sec)

        八、導(dǎo)入之前做的完全備份

        MariaDB [(none)]> source /root/all.sql

        九、導(dǎo)入完全備份后產(chǎn)生的數(shù)據(jù)

        MariaDB [(none)]> source /data/inc.log 

        十、驗(yàn)證

        查看數(shù)據(jù)庫(kù),以及完全備份后增加的內(nèi)容是否存在

        [root@localhost ~]# mysql -e 'SHOW DATABASES;SELECT * FROM hellodb.students where stuid>25;' +--------------------+ | Database           | +--------------------+ | hellodb            | | information_schema | | mysql              | | performance_schema | | test               | +--------------------+ +-------+----------+-----+--------+---------+-----------+ | StuID | Name     | Age | Gender | ClassID | TeacherID | +-------+----------+-----+--------+---------+-----------+ |    26 | linchong |  30 | M      |    NULL |      NULL | |    27 | Lujunyi  |  30 | M      |    NULL |      NULL | +-------+----------+-----+--------+---------+-----------+

        場(chǎng)景二、誤刪除的恢復(fù)

        生產(chǎn)環(huán)境中通常會(huì)出現(xiàn)誤刪除的可能性,此時(shí)就需要用到完全備份,和部分修改后的二進(jìn)制日志來(lái)還原數(shù)據(jù)

        場(chǎng)景模擬

        一、對(duì)數(shù)據(jù)庫(kù)進(jìn)行完全備份

        [root@localhost ~]# mysqldump -A --single-transaction --master-data=2 | xz > /data/all.sql.xz

        一段時(shí)間后數(shù)據(jù)庫(kù)發(fā)生了誤刪除操作,然后又進(jìn)行了部分其他的曾的操作

        MariaDB [(none)]> DROP TABLE hellodb.students; Query OK, 0 rows affected (0.00 sec)  MariaDB [(none)]> INSERT hellodb.teachers VALUE (5,'Jiang Jieshi',50,'M'); Query OK, 1 row affected (0.00 sec)

        此時(shí)發(fā)現(xiàn)了數(shù)據(jù)庫(kù)hellodb.students表被刪除

        恢復(fù)數(shù)據(jù)庫(kù)

        一、停止MySQL服務(wù)

        [root@localhost ~]# service mysqld stop Stopping mysqld (via systemctl):                           [  OK  ]

        二、將數(shù)據(jù)庫(kù)文件內(nèi)的文件清空

        [root@localhost ~]# rm -rf /data/mysql/*

        三、將完全備份解壓

        [root@localhost ~]# unxz /data/all.sql.xz 

        四、查看完全備份內(nèi),二進(jìn)制日志的記錄點(diǎn)

        [root@localhost ~]# vim /data/all.sql  -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=494073;

        五、查看二進(jìn)制日志,并從二級(jí)制日志中導(dǎo)出數(shù)據(jù)

        [root@localhost ~]# ll /data/bin/ total 508 -rw-rw---- 1 mysql mysql    351 May  6 16:51 mysql-bin.000001 -rw-rw---- 1 mysql mysql   9388 May  6 17:01 mysql-bin.000002 -rw-rw---- 1 mysql mysql 494449 May  6 17:52 mysql-bin.000003 -rw-rw---- 1 mysql mysql     81 May  6 17:03 mysql-bin.index -rw-rw---- 1 mysql mysql      8 May  6 17:52 mysql-bin.state [root@localhost ~]# mysqlbinlog --start-position=494073 /data/bin/mysql-bin.000003 > /data/inc.sql

        六、從導(dǎo)出的數(shù)據(jù)中找到那條誤刪除的數(shù)據(jù)將其刪除或注釋

        [root@localhost ~]# vim /data/inc.sql #DROP TABLE `hellodb`.`students` /* generated by server */

        七、重啟MySQL服務(wù)

        [root@localhost mysql]# service mysqld start Starting mysqld (via systemctl):                           [  OK  ]

        八、將二進(jìn)制日志關(guān)閉

        MariaDB [(none)]> SET sql_log_bin=off; Query OK, 0 rows affected (0.00 sec)

        九、導(dǎo)入完全備份

        MariaDB [(none)]> SOURCE /data/all.sql  MariaDB [test]> SHOW DATABASES; +--------------------+ | Database           | +--------------------+ | hellodb            | | information_schema | | mysql              | | performance_schema | | test               | +--------------------+ 5 rows in set (0.00 sec) #此時(shí)被刪除的students表已經(jīng)找回 MariaDB [test]> SHOW TABLES FROM hellodb; +-------------------+ | Tables_in_hellodb | +-------------------+ | classes           | | coc               | | courses           | | scores            | | students          | | teachers          | | toc               | +-------------------+ 7 rows in set (0.00 sec) #但是誤操作后新加的記錄還沒(méi)有找回 MariaDB [test]> 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  |  93 | F      | +-----+---------------+-----+--------+ 4 rows in set (0.00 sec)

        十、導(dǎo)入二進(jìn)制日志所生成的修改后的文件

        MariaDB [test]> SOURCE /data/inc.sql  #導(dǎo)入后再次查看students表在 MariaDB [test]> SHOW TABLES FROM hellodb; +-------------------+ | Tables_in_hellodb | +-------------------+ | classes           | | coc               | | courses           | | scores            | | students          | | teachers          | | toc               | +-------------------+ 7 rows in set (0.00 sec) #新添加的記錄也有了 MariaDB [test]> 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  |  93 | F      | |   5 | Jiang Jieshi  |  50 | M      | +-----+---------------+-----+--------+ 5 rows in set (0.00 sec) 

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 亚洲精品免费观看| 国产色婷婷精品综合在线| 99免费精品国产| 无码国内精品人妻少妇| 国产成人1024精品免费| avtt天堂网久久精品| 亚洲精品亚洲人成人网| 国产精品哟女在线观看| 精品日产一区二区三区手机| 精品国产一区二区三区不卡| 亚洲码国产精品高潮在线| 亚洲A∨精品一区二区三区| 国产精品VIDEOSSEX久久发布| 99免费精品视频| 精品国产一区二区三区久久久狼| 亚洲中文字幕无码久久精品1 | 精品久久久久国产免费| 在线观看91精品国产入口| 国产精品久久久久影院嫩草| 久久夜色精品国产网站| 亚洲AV无码国产精品色午友在线 | 国产成人精品男人的天堂538| 久久精品人成免费| 老司机67194精品线观看| 人妻精品久久久久中文字幕69 | 久久精品无码一区二区三区日韩| MM1313亚洲精品无码| 午夜精品视频在线| 丝袜美腿国产精品视频一区| 久久精品国产福利国产秒| 精品精品国产高清a毛片牛牛| 国产精品999| 久久精品国产亚洲一区二区| 国产精品影音先锋| 777国产盗摄偷窥精品0OOO| 成人免费精品网站在线观看影片| 97精品国产高清自在线看超| 国产精品免费在线播放| 精品露脸国产偷人在视频 | 国产精品免费久久久久电影网| 国产专区日韩精品欧美色|