linux下實(shí)現(xiàn)mysql日志管理及mysql備份還原方法

下面跟著筆者一起來了解下linux下實(shí)現(xiàn)MySQL日志管理及mysql備份還原方法,相信大家看完肯定會(huì)受益匪淺,文字在精不在多,希望linux下實(shí)現(xiàn)mysql日志管理及mysql備份還原方法這篇短內(nèi)容是你想要的。

臨朐網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。

linux下mysql日志管理及mysql備份還原

1.SHOW GLOBAL VARIABLES LIKE '%log%';  顯示所有日志相關(guān)的選項(xiàng)

2.錯(cuò)誤日志:log_error和log_warnings

3.一般查詢?nèi)罩荆篻eneral_log general_log_file log log_output

4.慢查詢?nèi)罩荆簂ong_query_time log_slow_queries={YES|NO} slow_query_log low_query_log_file 

5.二進(jìn)制日志:任何引起或可能引起數(shù)據(jù)庫變化的操作;復(fù)制和即時(shí)點(diǎn)恢復(fù);

二進(jìn)制日志的格式:binlog_format

  基于語句: statement

  基于行: row

  混合方式: mixed

二進(jìn)制日志事件:產(chǎn)生的時(shí)間 和 相對(duì)位置

二進(jìn)制日志文件:索引文件 和 二進(jìn)制日志文件

linux下實(shí)現(xiàn)mysql日志管理及mysql備份還原方法

 mysql> SHOW MASTER STATUS;#查看當(dāng)前正在使用的二進(jìn)制日志文件

 mysql> SHOW BINARY LOGS; #查看所有日志文件:

 mysql> SHOW BINLOG EVENTS IN '二進(jìn)制日志文件' [FROM 位置];#查看事件:

    例如:SHOW BINLOG EVENTS IN 'mysql-bin.000004' FROM 107;

刪除二進(jìn)制日志文件: 刪除指定二進(jìn)制日志文件之前的所有日志文件

 mysql> PURGE BINARY LOGS TO '二進(jìn)制日志文件'

查看日志信息:mysqlbinlog命令選項(xiàng)如下:

         --start-datetime  --stop-datetime

         --start-position  --stop-position

    舉例:mysqlbinlog --start-position 177 --stop-position 331 mysql-bin.000004;

       mysqlbinlog --start-datetime='16-07-07 13:32:07' mysql-bin.000004;

滾動(dòng)二進(jìn)制日志:FLUSH LOGS;

6.中繼日志:從主云服務(wù)器的二進(jìn)制日志文件中復(fù)制而來的事件,并保存為的日志文件;

7.事務(wù)日志:事務(wù)性存儲(chǔ)引擎用于保證原子性、一致性、隔離性和持久性;

 innodb_flush_log_at_trx_commit:

  0: 每秒同步,并執(zhí)行磁盤flush操作;

  1:每事務(wù)同步,并執(zhí)行磁盤flush操作;

  2: 每事務(wù)同步,但不執(zhí)行磁盤flush操作;

8.mysqldump備份和還原數(shù)據(jù)庫工具

8.1.備份單個(gè)數(shù)據(jù)庫,或庫中特定表

  格式:mysqldump 數(shù)據(jù)庫名 [表1] [表2]

   --master-data={0|1|2}

0: 不記錄二進(jìn)制日志文件及路位置;

1:以CHNAGE MASTER TO的方式記錄位置,可用于恢復(fù)后直接啟動(dòng)從云服務(wù)器;

2:以CHANGE MASTER TO的方式記錄位置,但默認(rèn)為被注釋;

   --lock-all-tables:鎖定所有表

   --flush-logs: 執(zhí)行日志flush;

   --single-transaction啟動(dòng)熱備;如果指定庫中的表類型均為InnoDB

8.2.備份多個(gè)庫:

--all-databases: 備份所有庫

--databases DB_NAME,DB_NAME,...: 備份指定庫

--events 事件調(diào)度器

--routines 存儲(chǔ)過程和存儲(chǔ)函數(shù)

--triggers 觸發(fā)器

單個(gè)數(shù)據(jù)庫備份 方法一:

mysql>FLUSH TABLES WITH READ LOCK;

mysql>FLUSH LOGS;

mysql>SHOW BINARY LOGS;

#mysqldump -u root -p --master-data=2 jiaowu>/root/jiaowu.sql #備份并沒有創(chuàng)建數(shù)據(jù)庫的語句

mysql>UNLOCK TABLES;

mysql>CREATE DATABASE jiaowu;  #必須手動(dòng)創(chuàng)建數(shù)據(jù)庫

#mysql jiaowu < /root/jiaowu.sql  #指定還原至指定數(shù)據(jù)庫

單個(gè)數(shù)據(jù)庫備份方法二:

#mysqldump -u root -p --lock-all-tables --flush-logs --masterdata=2 jiaowu>/root/jiaowu.sql

所有數(shù)據(jù)庫完全備份:

#mysqldump -u root -p --lock-all-tables --flush-logs --all-databases  --master-data=2 > /root/alldatabases.sql

9.實(shí)例:利用mysqldump命令實(shí)現(xiàn)對(duì)所有數(shù)據(jù)庫每周做完全備份和每天做增量備份,并且實(shí)現(xiàn)還原

建議:mysql數(shù)據(jù)目錄放置獨(dú)立硬盤或LVM中,二進(jìn)制日志文件也要放置在其他目錄

以下利用實(shí)驗(yàn)環(huán)境模擬實(shí)現(xiàn):注意本實(shí)驗(yàn)二進(jìn)制日志文件名以自己實(shí)驗(yàn)環(huán)境為準(zhǔn)

9.1.周末做完整備份所有數(shù)據(jù)庫

#mysqldump -u root -p --lock-all-tables --flush-logs --all-databases  --masterdata=2  > /root/alldatabases.sql

9.2.清除滾動(dòng)日志之前的所有二進(jìn)制文件,但清除之前建議最好保存一下

mysql>PURGE BINARY LOGS TO 'mysql-bin.000010';

mysql>SHOW BINARY LOGS;

9.3.完整備份數(shù)據(jù)庫后,過了一天,模擬數(shù)據(jù)庫有刪除一個(gè)數(shù)據(jù)

mysql>USE jiaowu;

mysql>DELETE FROM tutors WHERE Age>80;

9.4.每天做增量備份

mysql>FLUSH LOGS;  #滾動(dòng)日志

#cd /mydata/data

#cp mysql-bin.000010 /root  #直接復(fù)制增量二進(jìn)制日志文件

#mysqlbinlog mysql-bin.0000010 > /root/increment_"date +%F-%H-%M-%S".sql #或保存至sql語句

9.5.模擬又過了一天,數(shù)據(jù)庫有插入一條數(shù)據(jù)

mysql>USE jiaowu;

mysql>INSERT INTO tutors (Tname) VALUES ("Tom");

9.6.模擬當(dāng)天數(shù)據(jù)庫崩潰,手動(dòng)刪除數(shù)據(jù)目錄所有文件導(dǎo)致數(shù)據(jù)庫無法使用

#cd /mydata/data

#cp mysql-bin.000011 /root/  #備份當(dāng)前正使用的二進(jìn)制日志文件

#rm -rf *

9.7.利用之前的備份,模擬實(shí)現(xiàn)還原數(shù)據(jù)庫

#killall mysqld

#cd /usr/local/mysql

#scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ #初始化數(shù)據(jù)庫

#service mysqld start

#cd

#mysql -u root -p < alldatabases.sql #還原完整備份時(shí)的數(shù)據(jù)庫

#mysql -u root -p < increment_2016-07-08-13-30-00.sql #還原增量備份的數(shù)據(jù)

#mysqlbinlog mysql-bin.000011 | mysql -u root -p #還原當(dāng)天數(shù)據(jù)庫崩潰時(shí)的數(shù)據(jù)

10.單表備份

備份格式:SELECT * INTO OUTFILE '表的備份路徑.txt' FROM 表名 [WHERE 條件];

還原格式:LOAD DATA INFILE '表的備份路徑.txt' INTO TABLE 表名;

mysql> CREATE TABLE students_new LIKE students; #復(fù)制一個(gè)與源表結(jié)構(gòu)一樣的表

mysql> SELECT * INTO OUTFILE '/tmp/students_new.txt' FROM students;

mysql> DRIO TABLE students;

mysql> LOAD DATA INFILE '/tmp/students_new.txt' INTO TABLE students_new;

11.LVM快照備份

11.1.找開會(huì)話,模擬啟動(dòng)事務(wù)

     mysql>START TRANSACTION;

11.2.打開另外一個(gè)會(huì)話,加讀鎖,鎖定所有表;

mysql> FLUSH TABLES WITH READ LOCK;

mysql> FLUSH LOGS;

     mysql> SHOW MASTER STATUS;

11.3.通過另一個(gè)終端,保存二進(jìn)制日志文件及相關(guān)位置信息;

# mysql -uroot -p -e 'SHOW MASTER STATUS\G' > /backup/master-`data +%F`.info

11.4.創(chuàng)建快照卷

# lvcreate -L 100M -s -p r -n mydata-snap /dev/myvg/mydata

11.5.釋放鎖

mysql> UNLOCK TABLES;

11.6.掛載快照卷并備份

mount -o ro  /dev/myvg/mydata /mnt 

cd /mnt/data

     cp -a /mnt/data/* /backup/bak-full-`data +%F`

11.7.刪除快照卷;

 cd 

 umount /mnt

 lvremove --froce /dev/myvg/mydata-snap 

 cp /backup/bak-full-2016-07-11

 rm -rf mysql-bin.*

11.8.模擬添加數(shù)據(jù)并滾動(dòng)日志

   mysql> USE jiaowu;

   mysql> INSERT INTO tutors (Tname) VALUES ('stu200');

   mysql> FLUSH LOGS;

   mysql> INSERT INTO tutors (Tname) VALUES ('stu201');

   mysql> INSERT INTO tutors (Tname) VALUES ('stu202');

   mysql> FLUSH LOGS;

11.9.備份上次快照后增加的二進(jìn)制日志;

 cp /mydata/data

 cat /backup/master-2016-07-11.info #查看備份時(shí)的二制日志文件,且備份它之后所有二制日志文件

 mysqlbinlog --start-datetime='16-07-11 15:30:08' mysql-bin.000005 mysql-bin.000006 > /backup/increment-`data +F-%H-%M-%S`.sql

11.10.模擬刪除mysql數(shù)據(jù)庫數(shù)據(jù)目錄,導(dǎo)致mysql數(shù)據(jù)崩潰

  service mysqld stop

  rm -rf /mydata/data/*

11.11.還原數(shù)據(jù)庫

 cp -a /backup/bak-full-2016-07-11/* /mydata/data/

  ls -l /mydata/data 

  service mysqld start

  mysql> SET sql_log_bin=0; #連上mysql并暫時(shí)關(guān)閉二進(jìn)制日志功能

  mysql> source /backup/increment-2016-07-11-15-58-36.sql #導(dǎo)入增量二進(jìn)制日志文件

  mysql> SET sql_log_bin=0; #連上mysql并開啟二進(jìn)制日志功能

看完linux下實(shí)現(xiàn)mysql日志管理及mysql備份還原方法這篇文章后,很多讀者朋友肯定會(huì)想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。

網(wǎng)頁題目:linux下實(shí)現(xiàn)mysql日志管理及mysql備份還原方法
文章鏈接:http://bm7419.com/article0/ipdcio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序外貿(mào)網(wǎng)站建設(shè)、外貿(mào)建站、App設(shè)計(jì)、定制開發(fā)、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司