ホームページ データベース mysql チュートリアル MySQL之truncate表后恢复思路整理(前提是有备份且开启binlog)_MySQL

MySQL之truncate表后恢复思路整理(前提是有备份且开启binlog)_MySQL

May 27, 2016 pm 01:46 PM

1.1对数据库thunder进行备份

mysqldump -S /tmp/mysql3316.sock  --single-transaction --master-data=2 thunder >thunder_full_2015112.sql
ログイン後にコピー


1.2进行truncate table操作并insert into table


(work)root@localhost:mysql3316.sock [(none)]>select * from thunder.tb1;
+----+---------+
| id | name    |
+----+---------+
|  1 | test    |
|  4 | thun    |
|  5 | thunder |
|  6 | thun    |
|  7 | thun    |
|  8 | thun    |
|  9 | test    |
+----+---------+
7 rows in set (0.00 sec)
(work)root@localhost:mysql3316.sock [(none)]>truncate table thunder.tb1;
Query OK, 0 rows affected (0.02 sec)
(work)root@localhost:mysql3316.sock [(none)]>insert into thunder.tb1(name) values('like');  
Query OK, 1 row affected (0.00 sec)
(work)root@localhost:mysql3316.sock [(none)]>insert into thunder.tb1(name) values('lik');
Query OK, 1 row affected (0.00 sec)
(work)root@localhost:mysql3316.sock [(none)]>insert into thunder.tb1(name) values('li');
Query OK, 1 row affected (0.00 sec)
(work)root@localhost:mysql3316.sock [(none)]>insert into thunder.tb1(name) values('l');
Query OK, 1 row affected (0.00 sec)
(work)root@localhost:mysql3316.sock [(none)]>select * from thunder.tb1;
+----+---------+
| id | name    |
+----+---------+
|  1 | test    |
|  4 | thun    |
|  5 | thunder |
|  6 | thun    |
|  7 | thun    |
|  8 | thun    |
|  9 | test    |
| 10 | like    |
| 11 | lik     |
| 12 | li      |
| 13 | l       |
+----+---------+
11 rows in set (0.00 sec)
ログイン後にコピー


1.3查看备份时binlog位置并找出误操作语句的位置


[root@mysqlnode1 mysql3316]# grep MASTER thunder_full_2015112.sql 
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=25191;
[root@mysqlnode1 ~]# mysql -S /tmp/mysql3316.sock -e "show binlog events in 'mysql-bin.000003'"|grep -i truncate
mysql-bin.000003        1011    Query   1163316 1091    truncate mysql.db
mysql-bin.000003        25239   Query   1163316 25328   truncate table thunder.tb1
ログイン後にコピー


1.4用mysqlbinlog命令在binlog中找出相关记录


[root@mysqlnode1 mysql3316]# mysqlbinlog -v --base64-output=decode-rows 
/data/mysql/mysql3316/logs/mysql-bin.000003 >3.sql 
[root@mysqlnode1 mysql3316]# vim 3.sql 
# at 25191
#151122 19:59:50 server id 1163316  end_log_pos 25239 CRC32 0xac936e4e  GTID [commit=yes]
SET @@SESSION.GTID_NEXT= 'c009ae77-8def-11e5-ab11-000c29ea831c:78'/*!*/;
# at 25239
#151122 19:59:50 server id 1163316  end_log_pos 25328 CRC32 0xd020ddc8  Query   thread_id=175   exec_time=0    
 error_code=0
SET TIMESTAMP=1448193590/*!*/;
truncate table thunder.tb1
/*!*/;
# at 25328
#151122 20:00:50 server id 1163316  end_log_pos 25376 CRC32 0xa12c299c  GTID [commit=yes]
SET @@SESSION.GTID_NEXT= 'c009ae77-8def-11e5-ab11-000c29ea831c:79'/*!*/;
# at 25376
#151122 20:00:50 server id 1163316  end_log_pos 25444 CRC32 0xaa7072db  Query   thread_id=175   exec_time=0    
 error_code=0
SET TIMESTAMP=1448193650/*!*/;
BEGIN
/*!*/;
# at 25444
#151122 20:00:50 server id 1163316  end_log_pos 25496 CRC32 0xd45864c2  Table_map: `thunder`.`
tb1` mapped to number 267
# at 25496
#151122 20:00:50 server id 1163316  end_log_pos 25541 CRC32 0x71343558 
 Write_rows: table id 267 flags: STMT_END_F
### INSERT INTO `thunder`.`tb1`
### SET
###   @1=1
###   @2='like'
# at 25541
#151122 20:00:50 server id 1163316  end_log_pos 25572 CRC32 0xd860159a  Xid = 4442
COMMIT/*!*/;
ログイン後にコピー


经查看在备份前master status位置后紧跟truncate命令,而后是insert,所以不需要执行binlog增量恢复,只需要把insert的数据还原,此处如果有数据,在导入备份后还需要执行这条语句

mysqlbinlog  --start-position=18311 --stop-position=19557 mysql-bin.000003 |mysql -S /tmp/mysql3316.sock 
thunder
ログイン後にコピー


其中--start-position为数据备份文件中的位置,--stop-position为误操作前的位置

1.5新建一个数据库thued,并还原之前thunder库的备份

[root@mysqlnode1 mysql3316]# mysql -S /tmp/mysql3316.sock thued<thunder_full_2015112.sql
ログイン後にコピー


1.6在thued.tb1中插入新增加的数据,并查看


(work)root@localhost:mysql3316.sock [thued]>insert into tb1(name) select name from thunder.tb1;
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0
(work)root@localhost:mysql3316.sock [thued]>select * from tb1;                                 
+----+---------+
| id | name    |
+----+---------+
|  1 | test    |
|  4 | thun    |
|  5 | thunder |
|  6 | thun    |
|  7 | thun    |
|  8 | thun    |
|  9 | test    |
| 10 | like    |
| 11 | lik     |
| 12 | li      |
| 13 | l       |
+----+---------+
11 rows in set (0.00 sec)
ログイン後にコピー


1.7删除thunder.tb1,把thued.tb1改名成thunder.tb1


(work)root@localhost:mysql3316.sock [thued]>drop table thunder.tb1;
Query OK, 0 rows affected (0.00 sec)
(work)root@localhost:mysql3316.sock [thued]>rename table thued.tb1 to thunder.tb1;
Query OK, 0 rows affected (0.00 sec)
(work)root@localhost:mysql3316.sock [thued]>select * from thunder.tb1;
+----+---------+
| id | name    |
+----+---------+
|  1 | test    |
|  4 | thun    |
|  5 | thunder |
|  6 | thun    |
|  7 | thun    |
|  8 | thun    |
|  9 | test    |
| 10 | like    |
| 11 | lik     |
| 12 | li      |
| 13 | l       |
+----+---------+
11 rows in set (0.00 sec)
ログイン後にコピー


 

以上就是MySQL之truncate表后恢复思路整理(前提是有备份且开启binlog)_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelは紹介例 Laravelは紹介例 Apr 18, 2025 pm 12:45 PM

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

MySQLおよびPHPMYADMIN:コア機能と関数 MySQLおよびPHPMYADMIN:コア機能と関数 Apr 22, 2025 am 12:12 AM

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

MySQL対その他のプログラミング言語:比較 MySQL対その他のプログラミング言語:比較 Apr 19, 2025 am 12:22 AM

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

データベース接続の解決問題:Minii/DBライブラリを使用する実用的なケース データベース接続の解決問題:Minii/DBライブラリを使用する実用的なケース Apr 18, 2025 am 07:09 AM

小さなアプリケーションを開発する際には、軽量データベース操作ライブラリをすばやく統合する必要性という厄介な問題に遭遇しました。複数のライブラリを試した後、私はそれらがあまりにも多くの機能を持っているか、あまり互換性がないかのどちらかであることがわかりました。最終的に、私は問題を完全に解決したYii2に基づいた単純化されたバージョンであるMinii/DBを見つけました。

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQLモードの問題を解決する問題:TheliamySQLModescheckerモジュールの使用経験 MySQLモードの問題を解決する問題:TheliamySQLModescheckerモジュールの使用経験 Apr 18, 2025 am 08:42 AM

Theliaを使用してeコマースWebサイトを開発するとき、私はトリッキーな問題に遭遇しました:MySQLモードが適切に設定されていないため、いくつかの機能が適切に機能しません。いくつかの調査の後、TheliamysQlModescheckerというモジュールを見つけました。これは、Theliaが必要とするMySQLパターンを自動的に修正できるため、問題を完全に解決できます。

MySQLの外国キーの目的を説明してください。 MySQLの外国キーの目的を説明してください。 Apr 25, 2025 am 12:17 AM

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

mysqlとmariadbを比較対照します。 mysqlとmariadbを比較対照します。 Apr 26, 2025 am 12:08 AM

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

See all articles