MySqlデータベースをバックアップするいくつかの方法

MySqlデータベースをバックアップするいくつかの方法

mysqldump ツールのバックアップ

データベース全体をバックアップする

$> mysqldump -u ルート -h ホスト -p データベース名 > backdb.sql

データベース内のテーブルをバックアップする

$> mysqldump -u root -h ホスト -p dbname tbname1, tbname2 > backdb.sql

複数のデータベースのバックアップ

$> mysqldump -u root -h host -p --databases dbname1, dbname2 > backdb.sql

システム内のすべてのデータベースをバックアップする

$> mysqldump -u ルート -h ホスト -p --すべてのデータベース > backdb.sql

データベースディレクトリ全体を直接コピーしてバックアップします(InnoDBストレージエンジンには適用されません)。

windowsns: インストールパス/mysql/data

Linux: /var/lib/mysql

コピーする前に、次のコマンドを実行する必要があります。

MYSQL> テーブルをロックします。
# コピー処理中にクライアントがテーブルをクエリし続けることを許可します。
MYSQL> テーブルをフラッシュします。
# アクティブ化されたインデックス ページをディスクに書き込みます。

mysqlhotcopy ツールのバックアップ

データベースまたはテーブルをバックアップする最も速い方法は、データベース ディレクトリが配置されているマシン上でのみ実行でき、MyISAM タイプのテーブルのみをバックアップできます。

このバックアップ方法を使用するには、バックアップするテーブル ファイルにアクセスできる必要があります。

$> mysqlhotcopy -u root -p dbname /path/to/new_directory;
#データベースをnew_directoryディレクトリにコピーします。

mysql コマンド インポート sql ファイル 復元

$> mysql -u root -p [dbname] < バックアップ.sql
# 実行する前に dbname データベースを作成する必要があります。backup.sql が mysqldump によって作成されたバックアップ ファイルである場合、実行に dbname は必要ありません。
MYSQL> ソースbackup.sql;
# ソース コマンドを実行する前にデータベースを選択する必要があります。

データベースディレクトリを直接コピーして復元する

注意: この方法では、元のデータベースと復元するデータベースのメジャー バージョン番号が一貫していることを確認する必要があり、MyISAM エンジンを持つテーブルにのみ適用されます。

  1. mysql サービスをシャットダウンします。
  2. バックアップしたファイルまたはディレクトリで mysql データ ディレクトリを上書きします。
  3. mysql サービスを開始します。
  4. Linux システムの場合、ファイルをコピーした後、ファイルのユーザーとグループを MySQL を実行しているユーザーとグループに変更する必要があります。

mysqlhotcopy 高速リカバリ

MySQL サービスを停止し、バックアップ データベース ファイルをデータが保存されている場所 (mysql のデータ フォルダー) にコピーし、MySQL サービスを再起動します (データベース ファイルの所有者を指定する必要がある場合があります)。

$> cp -R /usr/backup/test /usr/local/mysql/data
# 復元されたデータベースがすでに存在する場合、DROP ステートメントを使用して既存のデータベースを削除した後にのみ、復元を成功させることができます。データベース バージョンの互換性も確保する必要があります。

同じバージョンのデータベース間で移行する

$> mysqldump -h www.abc.com -uroot -p パスワード dbname | 
$>mysqldump -h www.bcd.com -uroot -p パスワード
# サーバー www.abc.com 上のデータベース dbname を、サーバー www.bcd.com 上の同じバージョンのデータベースに移行します。

異なるバージョンの MySQL データベース間の移行

元のデータベースをバックアップします。

元のデータベースをアンインストールします。

新しいデータベースをインストールします。

バックアップしたデータベース データを新しいデータベースに復元します。

データベース ユーザー アクセス情報には、mysql データベースのバックアップが必要です。

デフォルトの文字セットの問題。MySQL4.x はデフォルトの文字セットとして latin1 を使用し、mysql5.x はデフォルトの文字セットとして utf8 を使用します。中国語のデータがある場合は、デフォルトの文字セットを変更する必要があります。

異なるデータベース間の移行

MyODBC ツールは、MySQL と SQL Server 間の移行を実現します。

MySQL 移行ツールキット。

テーブルのエクスポートとインポート

SELECT ...... INTO OUTFILE はテキスト ファイルをエクスポートします。このメソッドはデータベース サーバーにのみエクスポートでき、エクスポート ファイルが既に存在していることはできません。

MYSQL> SELECT ...... INTO OUTFILE ファイル名 [オプション]
MYSQL> SELECT * FROM test.person INTO OUTFILE "C:\person0.txt";
# person テーブルのデータをテキスト ファイル person0.txt にインポートします。

mysqldump ファイルはテキスト ファイルをエクスポートします (INTO OUTFILE とは異なり、このメソッドのすべてのオプションを引用符で囲む必要はありません)

$> mysqldump -T パス -u ルート -p dbname [テーブル] [オプション]
# -T パラメータはテキスト ファイルをエクスポートすることを示します。パスはデータがエクスポートされるディレクトリです。
$> mysqldump -TC:\test person -u root -p
# テスト テーブル内の person テーブルをテキスト ファイルにエクスポートします。実行が成功すると、テストディレクトリに person.sql と person.txt の 2 つのファイルが作成されます。

テキストファイルをエクスポートするmysqlコマンド

MYSQL> mysql -u root -p --execute="SELECT * FROM person;" テスト > C:\person3.txt;
# テスト データベース内の person テーブル データを person3.txt テキスト ファイルにエクスポートします。 --vertical パラメータを使用すると、行を複数の行に分割できます。
MYSQL> mysql -u root -p --vartical --execute="SELECT * FROM person;" テスト > C:\person3.txt;
# --html はテーブルを html ファイルとしてエクスポートし、--xml はテーブルを xml ファイルとしてエクスポートします

LOAD DATA INFILEはテキストファイルをインポートします

MYSQL> LOAD DATA INFILE 'filename.txt' INTO TABLE tablename [OPTIONS] [IGNORE number LINES];
# [IGNORE number LINES] は行数を無視することを意味します MYSQL> LOAD DATA INFILE 'C:\person0.txt' INTO TABLE test.person;

mysqlimport テキストファイルのインポート

$> mysqlimport -u root -p dbname ファイル名.txt [OPSTONS]
# インポートされたテーブルの名前はファイル名によって決まります。データをインポートする前にテーブルが存在している必要があります。$> mysqlimport -uroot -p test C:\backup\person.txt
# テスト データベースの person テーブルにデータをインポートします。

mysqlbinlog を使用したデータの回復

$> mysqlbinlog [オプション] ファイル名 | mysql -u ユーザ -p パスワード
# ファイル名はバイナリログファイルです。
$> mysqlbinlog --stop-date="2013-03-30 15:27:47" D:\MySQL\log\binlog\binlog.000008 | mysql -u root -p パスワード
# ログ ファイル binlog.000008 に基づいて、2013-03-30 15:27:47 より前の操作にデータを復元します。

バイナリログを開始する

log-bin = パス/ファイル名 #ログファイルの保存ディレクトリとファイル名 expire_log_days = 10 #ログの自動削除時間 max_binlog_size = 100M #ログファイルの最大サイズ

バイナリログの表示

MYSQL> 'log_%' のような変数を表示します。
MYSQL> バイナリログを表示します。
$>mysqlbinlog ファイル名
# ファイル名はバイナリログファイル名です。

バイナリログの削除

MYSQL> RESET MASTER; #すべてのバイナリログを削除します MYSQL> PURGE {MASTER | BINARY} LOGS TO 'log_name'; #log_nameより小さいファイル番号のファイルを削除します MYSQL> PURGE {MASTER | BINARY} LOGS BEFORE 'date'; #指定した日付より前のファイルを削除します

バイナリログを一時的に停止します(MySQL サービスを再起動する必要はありません)

MYSQL> SET sql_log_bin = {0|1} #バイナリログを一時停止または開始します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MYSQLにデータをインポートするいくつかの方法
  • MySQL 4 データをインポートする方法
  • MySQLデータベースを最適化する6つの方法のまとめ
  • MySQLでデータベースを上書きおよびインポートするいくつかの方法の概要

<<:  Docker ベースの nginx ファイル サーバーを構築する方法と手順

>>:  jQuery+h5 で 9 マス抽選特殊効果を実現 (フロントエンドとバックエンドのコード)

推薦する

MycliはMySQLコマンドライン愛好家にとって必須のツールです

マイクリMyCLI は、自動補完と構文の強調表示を備えた MySQL、MariaDB、および Per...

Vueログイン機能の実装

目次前面に書かれたログインの概要ログインビジネスプロセスログインサービスの関連技術ポイントログイント...

JSはリクエストディスパッチャーを実装する

目次抽象化と再利用シリアルセグメントシリアル、セグメントパラレル要約するはじめに: JS は当然並列...

Vue3 がコンポーネント通信に mitt を使用する手順

目次1. インストール2. プロジェクトにインポートしてマウントする3. 使用Vue2.x はコンポ...

Vue ライフサイクルの紹介とフック関数の詳細な説明

目次Vueライフサイクルの紹介とフック機能VUEライフサイクルフックVue ライフサイクルの紹介作成...

Linuxでスクリーンショットを撮って編集するための最高のツール

メインのオペレーティング システムを Windows から Ubuntu に切り替えたとき、最初に考...

Canonical が Flutter で Linux デスクトップ アプリを有効化 (推奨)

Google の Flutter の目標は、どのプラットフォームを使用していても、ネイティブの速度...

HTML の基本的な使用法には、リンク、スタイルシート、span、div などが含まれます。

1. リンクハイパーテキスト リンクは HTML において非常に重要です。基本的な形式は次のとおりで...

MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

背景:最近、同社のプロジェクトは同時実行のプレッシャーに耐えられないようなので、最適化が差し迫ってい...

シンプルなカレンダー効果を実現する js

この記事では、シンプルなカレンダー効果を実現するためのjsの具体的なコードを参考までに共有します。具...

DockerでNginxサーバーを作成する方法

動作環境: MAC Docker バージョン: Docker version 17.12.0-ce,...

ルート権限なしでログインするためのDockerソリューション

docker コマンドを初めて使用する場合、権限の問題を確認するメッセージが表示されます。 unix...

jQueryはフェードインとフェードアウト効果を実現します

jQuery を使用してフェードインとフェードアウト効果を完成させる前に、まずいくつかのコードを理解...

ラベルタグの使用時に発生する問題の分析と解決策

最近何かをするときにラベル タグを使用しました。以前はラベル タグをほとんど使用していなかったため、...

WeChatアプレットのスクロールビューが左右連動効果を実現

WeChatアプレットはスクロールビューを使用して左右のリンクを実現します。参考までに、具体的な内容...