# cat /etc/my.cnf
log_bin=mysql-bin
# mysql -uroot -p
Enter password:
mysql> show variables like'log_bin%';
+---------------------------------+--------------------------------------------------+
| Variable_name | Value |
+---------------------------------+--------------------------------------------------+
| log_bin | ON |
| log_bin_basename | /home/programs/mysql-5.6.26/data/mysql-bin |
| log_bin_index | /home/programs/mysql-5.6.26/data/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
+---------------------------------+--------------------------------------------------+
5 rows in set (0.00 sec)
# ll /home/programs/mysql-5.6.26/data/mysql-bin*
-rw-rw---- 1 mysql mysql 343629748 Oct 13 22:09 /home/programs/mysql-5.6.26/data/mysql-bin.000001
-rw-rw---- 1 mysql mysql 19 Sep 23 17:11 /home/programs/mysql-5.6.26/data/mysql-bin.index
根據時間,找到想要恢復的片,我根據大小和時間判斷,我所有修復的是 mysql-bin.000007
為了備份,我將 mysql-bin.000007拷貝到bak目錄下,執行
mysqlbinlog --base64-output=DECODE-ROWS -v -d 數據庫名 mysql-bin.000007 > data.sql
在此,可能有一個問題,就是mysqlbinlog 命令找不到,其實可以用軟連接的形式
find / -name mysqlbinlog -print
ln -fs /www/server/mysql/bin/mysqlbinlog /usr/bin
執行上面兩步,就可以使用這個命令了。
然后,將生成的data.sql進行還原就可以了
mysql -uroot -p -f 數據庫名 < data.sql