mysql之備份和導入數據(包括二進制日誌)

前言:今日早上在寫號碼大全博客時,思索一再,沒有更好的條理關鍵詞挖掘工具,就想起了曾經在操作mysql的時分,常常要用的一些指令,下面就來簡略介紹一下

備份數據:
Java代碼 保藏代碼
C:\Users\xxxx>mysqldump -uxxx -pxxx backup > backup.sql

臨沂批發網 http://www.shoudashou.com
國醫一號 http://www.tdhzp.com/
C:\Users\xxxx>  
mysqldump :mysql用於存儲數據庫的應用程序,會發生一個sql文件,如上文的backup.sql,其間包含了數據庫的create、insert into等語句。

隨後咱們運用dir指令檢查一下C:\Users\xxxx>目錄的文件列表,能夠看到
Java代碼 保藏代碼
2014/08/23 10:15 1,271 backup.sql 
康復數據:
Java代碼 保藏代碼
mysql> use backup; 
Database changed 
mysql> source C:\Users\xxxx\backup.sql 
Query OK, 0 rows affected (0.00 sec) 

Query OK, 0 rows affected (0.03 sec) 
運用mysql指令進入到mysql指令行,運用use backup切換數據庫,然後運用source指令進行數據的康復。

以上source指令在處理mysql的很多數據康復時,速度仍是對比可觀的。
可是咱們在實在的項目傍邊,常常需求用到二進制日誌,那麼下面咱們來做一個二進制的日誌備份操作

首要:咱們檢查一下mysql二進制日誌是不是敞開
Sql代碼 保藏代碼
mysql> show variables like 'log_bin'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| log_bin | OFF | 
+---------------+-------+ 
1 row in set (0.14 sec) 

第二步:咱們敞開二進制日誌(在Windows的mysql安裝目錄中的my.ini文件中添加以下內容,保證你的f盤有mysqlbin目錄)
Java代碼 保藏代碼
# add log-bin 
log-bin=f:/mysqlbin/binlog.log 
# set the database for test 
binlog-do-db=backup 

第三步:咱們重啓一下mysql
Sql代碼 保藏代碼
C:\Users\xxxx>net stop mysql 
MySQL 效勞正在中止. 
MySQL 效勞已成功中止。 


C:\Users\xxxx>net start mysql 
MySQL 效勞正在發動 . 
MySQL 效勞現已發動成功。 
第四步:再次檢查log_bin是不是敞開
Sql代碼 保藏代碼
mysql> show variables like 'log_bin'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| log_bin | ON | 
+---------------+-------+ 
1 row in set (0.00 sec) 

第五步:對backup數據庫進行一下操作,假設現已存在
Sql代碼 保藏代碼
mysql> show columns from binlog; 
+-------+---------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+-------+---------+------+-----+---------+-------+ 
| id | int(11) | YES | | NULL | | 
+-------+---------+------+-----+---------+-------+ 
1 row in set (0.08 sec) 

mysql> 
咱們刺進一條數據
Sql代碼 保藏代碼
mysql> insert into binlog values (2); 
Query OK, 1 row affected (0.01 sec) 

mysql> select * from binlog; 
+------+ 
| id | 
+------+ 
| 1 | 
| 2 | 
+------+ 
2 rows in set (0.00 sec) 

mysql> 

第六步:咱們檢查一下二進制日誌目錄
Sql代碼 保藏代碼
F:\mysqlbin>dir 
驅動器 F 中的卷是 F: 
卷的序列號是 000C-A0EB 

F:\mysqlbin 的目錄 

2014/08/23 11:02 . 
2014/08/23 11:02 .. 
2014/08/23 11:02 126 binlog.000001 
2014/08/23 11:02 107 binlog.000002 
2014/08/23 11:02 52 binlog.index 
3 個文件 285 字節 
2 個目錄 117,389,742,080 可用字節 
第七步:咱們再運用mysqlbinlog檢查一下,內容對比多,上下運用了...空過,能夠看到"insert into binlog values (2)"爲咱們剛剛操作的內容
Sql代碼 保藏代碼
F:\mysqlbin>mysqlbinlog binlog.000002 
... 
use backup/*!*/; 
SET TIMESTAMP=1408763281/*!*/; 
insert into binlog values (2) 
/*!*/; 
# at 271 
#140823 11:08:01 server id 1 end_log_pos 298 Xid = 9 
... 

那麼咱們再次回去標題講的二進制日誌康復和備份,備份就如前文所講,那麼就再來說說二進制的康復

第一種:運用source指令,二進制日誌是不能直接通過source指令來康復,那麼咱們需求依照以下過程來進行

第一步:先將二進制日誌轉換成一般sql文件
Java代碼 保藏代碼
F:\mysqlbin>mysqlbinlog -uxxx -pxxx binlog.000001 > binlog1.sql 

F:\mysqlbin>mysqlbinlog -uxxx -pxxx binlog.000002 > binlog2.sql 

F:\mysqlbin>dir 
驅動器 F 中的卷是 F: 
卷的序列號是 000C-A0EB 

F:\mysqlbin 的目錄 

2014/08/23 11:22 . 
2014/08/23 11:22 .. 
2014/08/23 11:02 126 binlog.000001 
2014/08/23 11:08 298 binlog.000002 
2014/08/23 11:02 52 binlog.index 
2014/08/23 11:22 644 binlog1.sql 
2014/08/23 11:22 1,569 binlog2.sql 
5 個文件 2,689 字節 
2 個目錄 117,389,737,984 可用字節 

第二步:新建一個sql文件,裏邊輸入以下內容
Java代碼 保藏代碼
source F:\mysqlbin\binlog1.sql 
source F:\mysqlbin\binlog2.sql 

第三步:導入以上的sql文件
Java代碼 保藏代碼
mysql> source C:\Users\xxx\backup.sql 
Query OK, 0 rows affected (0.00 sec) 

第二種方法,運用mysqlbinlog
Java代碼 保藏代碼
F:\mysqlbin>mysqlbinlog binlog.000001 | mysql -uroot -proot 

F:\mysqlbin>mysqlbinlog binlog.000002 | mysql -uroot -proot 

最終:這些簡略的,常用的指令,以及運用方法都是十分值得總結的。


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