日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql备份 where_MySQL备份与还原

發布時間:2023/12/1 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql备份 where_MySQL备份与还原 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.mysqldump+mysqlbinlog介紹

mysqldump備份結合binlog日志恢復。MySQL備份一般采取全庫備份加日志備份的方式,例如每天執行一次全備份,每小時執行一次二進制日志備份,這樣在MySQL故障后可以使用全備份和日志備份將數據恢復到最后一個二進制日志備份前的任意位置或時間。

2.binlog

2.1介紹

MySQL的二進制日志記錄著該數據庫的所有增刪改的操作日志(前提是要在自己的服務器上開啟binlog),還包括了這些操作的執行時間。為了顯示二進制文件內容,可以使用mysqlbinlog命令查看。

2.2用途

1)主從復制

2)恢復數據

2.3開啟binary log功能

通過編輯my.cnf中的log-bin選項可以開啟二進制日志,形式如下:

log-bin [=DIR/[filename]]

其中,DIR參數指定二進制文件的存儲路徑;filename參數指定二進制文件的文件名,其形式為filename.number,number的形式為000001、000002等。每次重啟MySQL服務或運行mysql>flush logs;都會生成一個新的二進制日志文件,這些日志文件的number會不斷遞增。除了生成上述的文件外還會生成一個名為fiename.index的文件,這個文件中存儲所有二進制日志文件的清單,又稱為二進制文件的索引。

開啟binary log功能的命令操作:

vim /etc/my.cnf

log_bin=/data/mysql/mysql-bin

/etc/init.d/mysqld restart

查看是否開啟:

[root@CentOS 7 ~]# mysql

mysql> show variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin? ? ? ? ? ? ?| ON? ? |

+---------------+-------+

1 row in set (0.00 sec)

3.二進制日志操作的相關命令

3.1查看MySQL Server上的二進制日志

mysql> show binary logs;

+------------------+-----------+

| Log_name? ? ? ? ? ? ?| File_size? |

+------------------+-----------+

| mysql-bin.000001 |? ? ? ?120? ?|

| mysql-bin.000002 |? ? ? ?120? ?|

| mysql-bin.000003 |? ? ?65402 |

| mysql-bin.000004 |? 1190629|

| mysql-bin.000005 |? ? ? ?262? ?|

+------------------+-----------+

5 rows in set (0.00 sec)

3.2查看二進制日志信息

mysql> mysql> show binlog events in 'mysql-bin.000001';

+------------------+-----+-------------+-----------+-------------+---------------------------------------+

| Log_name? ? ? ? ? ?| Pos? | Event_type? | Server_id? |End_log_pos | Info? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|

+------------------+-----+-------------+-----------+-------------+---------------------------------------+

|mysql-bin.000001|? ?4? ? |Format_desc|? ? ? 3306? ? |? ? ? ?120? ? ? ? | Server ver: 5.6.36-log, Binlog ver: 4 |

+------------------+-----+-------------+-----------+-------------+---------------------------------------+

1 row in set (0.00 sec)

3.3查看二進制日志的事件

mysql> show binlog events;

3.4把某個二進制日志之前的其他二進制日志都刪除

pugre binary logs to 'mysql-bin.00010';

3.5把指定時間之前的二進制文件刪除

pugre binary logs before '2018-5-7 22:46:26';

4.使用binlog恢復之前刪除的數據(id=2)

注意:在實際生產環境中,如果遇到需要恢復數據庫的情況,不要讓用戶能訪問到數據庫,以避免新的數據插入進來,以及在主從的環境下,關閉主從。

4.1查看binlog文件,從中找出delete from test.tb1 where id=2

[root@CentOS7 ~]# cd /data/mysql/

[root@CentOS7 mysql]# mysqlbinlog -v mysql-bin.000002? ? (由于顯示太多,就不寫了。但從中可以看出delete事件發生position是27,事件結束position是416)

4.2恢復流程

直接用bin-log日志將數據庫恢復到刪除位置287前,然后跳過故障點,載進行恢復

4.3由于之前沒有做過全庫備份,所以使用所有binlog日志恢復,所以生產環境中需要很長時間恢復,導出相關binlog文件

[root@CentOS7 mysql]# mysqlbinlog /data/mysql/mysql-bin.000001 > /tmp/mysql-bin.000001.sql

[root@CentOS7 mysql]# mysqlbinlog --stop-position=287 /data/mysql/mysql-bin.000002 > /tmp/287.sql

[root@CentOS7 mysql]# mysqlbinlog --start-position=416 /data.mysql/mysql-bin.000002 > /tmp/416.sql

4.4刪除test數據庫

mysql>drop database test;

4.5利用binlog恢復數據

[root@CentOS7 mysql]# mysql -uroot -p123456 < /tmp/mysql-bin.000001.sql

[root@CentOS7 mysql]# mysq -uroot -p123456 < /tmp/287.sql

[root@CentOS7 mysql]# mysql -uroot -p123456 < /tmp/416.sql

4.6恢復后,檢查表的數據是否完整

mysql>select * from test.tb1;

4.7mysqlbinlog相關參數

--start-datetime? ? 從二進制日志文件中讀取指定時間戳或本地計算機時間之后的日志事件

--stop-datetime? ? 從二進制日志文件中讀取指定時間戳或本地計算機時間之前的日志事件

--start-position? ? ?從二進制日志文件中讀取指定position事件位置作為開始

--stop-position? ? ?從二進制日志文件中讀取指定position事件位置作為事件截至

5.mysqldump

5.1介紹

是MySQL用于備份和數據轉移的一個工具。主要生產一系列的SQL語句,可以封裝到文件,該文件包含所有重建數據庫所需的SQL命,如create database、create table、insert等。可以用來實現輕量級的快速遷移或恢復數據庫。

mysqldump是將數據表導成SQL腳本文件,在不同的MySQL版本之間升級時相對比較合適。

5.2使用建議

一般在數據量很小的時候(幾個G)可以由于備份。當數據量比較大的情況下,不建議使用mysqldump進行備份

5.3使用對象

可以針對單個表、多個表、單個數據庫、多個數據庫、所有數據庫進行導出的操作

6.mysqldump相關操作命令

6.1導出數據庫test

mysqldump -uroot -p --flush-logs test > /tmp/terst.sql

--flush-logs? 完整備份的時候重新開啟一個新的binlog

6.2數據庫的導入

mysql -uroot -p test > /tmp/test.sql

6.3導出指定數據庫或單個表

mysqldump [options] db_name [tbl_name]

6.4導出多個數據庫

mysqldump [options] --databases db_name

6.5導出所有

mysqldump [options] --all-databases

總結

以上是生活随笔為你收集整理的mysql备份 where_MySQL备份与还原的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。