ソースサーバーから_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をベースにしています)を実行しています。
実行中のデータベースをrsyncすることはできませんが、停止したと言ったので知っています。
Mysqldが実行されていない状態(またはスナップショットから)でrsyncを実行します。datadirからib_logfile *およびibdata *ファイルをrsyncする必要があります。その場合、DISCARD/IMPORT TABLESPACE
も必要ありません。
データベースをシャットダウンしないコピーの場合、xtrabackupがおそらく最も効率的なソリューションです。
ターゲットに既存のデータベースがある場合は、テーブル構造のメタデータを再作成するためにmysqldump --no-data dbname
をターゲットにインポートする必要がありますが、コピーする前にソースにFLUSH TABLE ... FOR EXPORT
が必要です。その後、それらはクリーンになり、ALTER TABLE ... IMPORT TABLESPACE
でインポートできます