您好,登錄后才能下訂單哦!
這篇文章主要介紹了mysql遇到不小心誤刪表怎么辦,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
測試環(huán)境:
5.6.33 和 centos6.5
源碼安裝庫一:
yum install "@development tools" cmake ncurses-devel
yum install make gcc-c++ cmake bison-devel ncurses-devel
Wget http://101.110.118.23/dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33.tar.gz
解壓
tar xf mysql-5.6.33.tar.gz
編譯
Cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data
make
make install
授權
Chown mysql:mysql /usr/local/mysql -R
Chown mysql:mysql /data/mysql/data -R
建立配置文件
[root@localhost data]# vim /etc/my.cnf
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
default-character-set = utf8
[mysqld]
port=3306
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/var/lib/mysql/mysql.sock
user=mysql
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
初始化
/usr/local/mysql/scripts/mysql_install_db --basedir=-/usr/local/mysql -user=mysql --ldata=/data/mysql/data
也可以寫成
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf
啟動:
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf
進庫建立測試庫文件
1.修改/etc/my.cnf 添加開啟的二進制日志
log-bin=logbin
2重啟服務
3.建庫
create database test default character set utf8;
4.建表
create table a (id int(4),name char(10)) engine=innodb;
5.插入數(shù)據(jù)
insert into a values(1,“t”) 插入N條。
6.刪除
delete from emp;
7.啟動第二個庫
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/myserver.cnf
8.查看binlog找到恢復點
在恢復過程中會出現(xiàn)./bin/mysqlbinlog: unknown variable 'default-character-set=utf8' 錯誤。
只要把配置文件中的注釋掉,不用重啟,因為此時mysqlbinlog會二次調(diào)用配置文件 用完之后還原就好了。
/usr/local/mysql/bin/mysqlbinlog logbin.000002 >test2.log
less test2.log
9.恢復到第二個庫中
/usr/local/mysql3308/bin/mysqlbinlog /data/mysql/data/logbin.000002 --stop-position=735 |/usr/local/mysql3308/bin/mysql -uroot -h227.0.0.1
上面發(fā)現(xiàn)恢復過來少了一條語句 沒關系 采用下面
/usr/local/mysql3308/bin/mysqlbinlog /data/mysql/data/logbin.000002 --start-position=735 --stop-position=868 |/usr/local/mysql3308/bin/mysql -uroot -h227.0.0.1
上面注意了:恢復到點735 以及837是會丟失第三條4,t 的數(shù)據(jù)的 所以指定到刪除操作的點上面868.
直接恢復
./bin/mysqlbinlog /data/mysql/data/logbin.000002 --stop-position=868 |/usr/local/mysql3308/bin/mysql -uroot -h227.0.0.1 -P3308
10.恢復到主庫:
1、直接恢復
/usr/local/mysql/bin/mysqlbinlog --stop-position=868|/usr/local/mysql/bin/mysql -uroot -h227.0.0.1
2、把恢復的表單復制到相應的庫文件下
未做
3、把恢復好的庫導出,再復制重命名原來的庫 ,恢復好的庫導入之后再刪之前那的已誤操作的庫
導出表
/usr/local/mysql3308/bin/mysqldump -h227.0.0.1 -uroot -P3308 test a --default-character-set=utf8 >a.sql
原表復制 ---可能會很大 建議原表rename
create table a_bak as select * from a;
原表rename
rename table a to b;
導入表
/usr/local/mysql/bin/mysql -uroot -h227.0.0.1 <a.sql</a.sql<>
感謝你能夠認真閱讀完這篇文章,希望小編分享的“mysql遇到不小心誤刪表怎么辦”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。