案列中查詢用到的命令:
show engines; ---現在已提供什麼存儲引擎
show variables like '%storage_engine%'; -----當前默認的存儲引擎
設置InnoDB爲默認引擎:在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句,也可以再加上 innodb_file_per_table=1 #讓innodb的每個表文件單獨存儲
show master status ; --查看節點狀態
show binlog events in 'mysql-bin.000001'; ---查詢執行mysql二進制事件查詢
set sql_log_bin=0; --關閉mysql的二進制同步 0表示關閉 1表示開啓
select @@sql_log_bin; ---查詢二進制查詢開啓狀態
mysql> \. /root/zzxtbl.sql --- 當前mysql會話中導入zzxtbl.sql腳本
select * into outfile'/opt/zzxtbl.txt' form zzxtbl; ----查詢zzxtbl表並導出到/opt/zzxtbl.txt中
create table zzxtbl like zztbls;
desc zzxtbl ,zzxtbl; -------desc 顯示錶結構
drop table zzxtbl; ------ 刪除表
truncate table zzxtbl; ------清空表數據
mysqlbinlog /data/mysql-bin.000001 ----查看mysql的二進制文件內容
mysqlbinlog --start-positsion=100/mysql-bin.000001 > /root/zzxtbl.sql ---查看節點數是100的,並導出sql腳本
mysql -e 'show master status\G' > /opt/master-`data+%F`.info ----查看保存備份的二進制文件
show variables like '%dir%'; ----查mysql的目錄存放
一、 mysql 使用select into outfile 將數據庫中的表文件到如到文本(.txt)中,然後進行數據庫內容恢復
語法: select * into outfile '/tmp/zzx.txt' form zzx;
顯示的導出數據的結構
操作步驟如下:
(1) 將a表的表結構複製成b表後,查看兩表中的數據結構dsca\b;
(2) 將a表刪除後,用loaddata infile '/tmp/zzx.txt' into table b ,中恢復 a表中的數據。
二、mysql使用二進制文件恢復數據庫
這裏提示可以根據你的mysql 服務器上的binlog日誌查方式,首先查看show master status;主節點的信息。然後在查看該節點中show binlog events in 'mysql-bin.000001';
binlog日誌根據開始的節點數運行成sql腳本
mysqlbinlog--start-position="319" /var/lib/mysql/mysql-bin.000005>/root/zzx.sql
1.清空表數據 (truncate table zzxs;)
2.關閉二進制文件同步(setsql_log_bin=0;),恢復成功後開啓 mysql的二進制開關(set_log_bin).
3.mysql 服務器上線
恢復成功了
三、使用lvm在線備份mysql數據庫
注:提前將mysql數據目錄放到我創建好的邏輯捲上。在此該卷組上要足夠的空間用來備份使用,在此mysql數據庫和binlog二進制文件都要在該卷組上。
步驟:
1.在MySQL的當前的會話中,要鎖定當前的所有的表;
mysql> flush tables with read lock;
mysql> flush logs;
這時事務提交
2.通過另一個終端,保存二進制日誌文件的相應的位置信息。
3.創建快照卷
4.釋放鎖
mysq>unlock tables;
釋放當前的表鎖。該事物就自動提交了提交了
5.掛載快照卷,備份
lvcreate -L 50M -s -p r -n mydata-snap/dev/zzxtbl/mydata
mount /dev/zzxtbl/mydata-snap /mnt -o ro
拷貝當前的lvm卷備份的數據到/opt
6.刪除快照卷
卸載當前的邏輯卷
umount /mnt
刪除卷組lvremove --force /dev/zzxtbl/mydata-snap
四、模擬mysql誤刪和增量恢復
1.刪除當前卷組上的mysql數據庫
停止mysqld的服務
2.拷貝之前備份的mysql的數據庫
3.還原增量的數據
mysqlbinlog --start-datetime='2015-08-26 23:45:57' mysql-bin.000008 > /opt/zengliang-`date +%F-%H-%M-%S`.sql
導入當前mysql數據庫中。數據就恢復了。開啓二進制同步開關 set sql_log_bin=1;