web-dev-qa-db-ja.com

innodbテーブルの転送

ソースサーバーから_Lost connection to MySQL server during query when dumping_を実行するときに_mysqldump -u root -p --compress --max_allowed-packet=1G --net-buffer-length=32704 --single-transaction largedb> /home/backup/largedb.sql.gz_を保持し続ける30 GBのinnoDB専用データベースがあります

ネットの読み取りと書き込みのタイムアウトを_31536000_で_my.cnf_に設定しています。これを超えると、接続が失われる理由に関する他の情報を見つけることができません。

ですから、mysqlをオフにして、それらをrsyncすることにしました。 1GB未満のテーブルの場合、これは完全に機能しました。最初にデータベースとテーブル構造体を作成し、次に_ALTER TABLE {table} DISCARD TABLESPACE_を実行して.frmファイルと.ibdファイルをデータベースフォルダーに移動し、次に_ALTER TABLE {table} IMPORT TABLESPACE_を実行してメイン以外のすべてのテーブルを修正しました。

メインテーブルは30GBで、テーブルスペースをインポートすると、Error in query (1034): Incorrect key file for table 'main'; try to repair itと表示されます。_error.log_に追加情報はありません。私はググっていて、このエラーが表示された場合はそれがinnoDBであると示唆されているようです。その場合、tmpdirのディスク領域が不足している可能性があります。私のtmpdirは_/tmp_で、400GBの空き容量があります。

テーブルのANALYZEは

_InnoDB: Tablespace has been discarded for table 'main'
InnoDB: Trying to get the free space for table `db`.`main` but its tablespace has been discarded or the .ibd file is missing. Setting the free space to zero. (errno: 11 - Resource temporarily unavailable)
Trying to get the free space for table `db`.`main` but its tablespace has been discarded or the .ibd file is missing. Setting the free space to zero. (errno: 11 - Resource temporarily unavailable)
Operation failed
_

テーブル結果のチェック

_db.main: InnoDB: Tablespace has been discarded for table 'main'
db.main: Tablespace has been discarded for table 'main'
db.main: Corrupt
_

誰かがmysqldumpに接続が失われるのを防ぐ手助けをしてもらえますか、またはどのようにしてinnoDBテーブルを修復できますか?テーブルをMyISAMに変換してrsyncします

Percona Mysql 8(mysql 8をベースにしています)を実行しています。

1
ParoX

実行中のデータベースをrsyncすることはできませんが、停止したと言ったので知っています。

Mysqldが実行されていない状態(またはスナップショットから)でrsyncを実行します。datadirからib_logfile *およびibdata *ファイルをrsyncする必要があります。その場合、DISCARD/IMPORT TABLESPACEも必要ありません。

データベースをシャットダウンしないコピーの場合、xtrabackupがおそらく最も効率的なソリューションです。

ターゲットに既存のデータベースがある場合は、テーブル構造のメタデータを再作成するためにmysqldump --no-data dbnameをターゲットにインポートする必要がありますが、コピーする前にソースにFLUSH TABLE ... FOR EXPORTが必要です。その後、それらはクリーンになり、ALTER TABLE ... IMPORT TABLESPACEでインポートできます

0
Gordan Bobic