書き方のMysqlバイナリログの位置のマスターの際はmysqldumpをからスレーブ?

StackOverflow https://stackoverflow.com/questions/1522976

質問

私は現在実行中のmysqldumpを、Mysqlはスレーブのバックアップ当社のデータベースです。この現代美術館などのバックアップデータそのものが、僕が補足では、バイナリログの位置をマスターに対応するデータのmysqldumpを.

いることができるようになる米国の回復にスレーブ(または設定の新スレーブなどうしていくべきなのかについては別のmysqldumpをメインデータベースを掴むにバイナリログの位置を修正します。いかに生成されたデータのmysqldumpをを組み合わせることで、このバイナリログ情報を生成し、出来上がり...するresynced.

これまでに、自分の研究を頂いていくも非常に達成することができ、この目標がないのですがに自動化をワイヤーに引っ掛けて引っ張ってます。ここでの"almosts"私は明:

  • またmysqldumpを走らのデータベースを使うとき"--マスター-データ"パラメータとmysqldumpをログイン、マスタのバイナリの位置と一緒にダンプデータではないかと思いことでしょうがをしましたバイナリログからスレーブが、どうしよう、ちょっと失わせないアイテムを達成したい)
  • またこれ以外の自動、またログインは、スレーブのデータベースに、走り"STOP SLAVE SQL_THREAD;"に続いて"SHOW SLAVE STATUS;"(http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html).このなくなるわけではありませんいくせいいしていかなければ事前にお知らいたいback something upからsalve.
  • また500ドル/年にブローし、InnoDb hot backupプラグインと走り当mysqldumpsからのDBです。でいるお金にならないようにしたい追加している当社の主要DBます。

このようなも共通なんばね、ば誰かが利用スタックオーバーフロー?

役に立ちましたか?

解決

以下のシェルスクリプト実行されまcronまたは定期的に交換する変数に、必要に応じてデフォルトの記述のためのFreeBSD):

# MySQL executable location
mysql=/usr/local/bin/mysql

# MySQLDump location
mysqldump=/usr/local/bin/mysqldump

# MySQL Username and password
userpassword=" --user=<username> --password=<password>"

# MySQL dump options
dumpoptions=" --quick --add-drop-table --add-locks --extended-insert"

# Databases
databases="db1 db2 db3"

# Backup Directory
backupdir=/usr/backups

# Flush and Lock
mysql $userpassword -e 'STOP SLAVE SQL_THREAD;'

set `date +'%Y %m %d'`

# Binary Log Positions
masterlogfile=`$mysql $userpassword -e 'SHOW SLAVE STATUS \G' | grep '[^_]Master_Log_File'`
masterlogpos=`$mysql $userpassword -e 'SHOW SLAVE STATUS \G' | grep 'Read_Master_Log_Pos'`

# Write Binlog Info
echo $masterlogfile >> ${backupdir}/info-$1-$2-$3.txt
echo $masterlogpos >> ${backupdir}/info-$1-$2-$3.txt

# Dump all of our databases
echo "Dumping MySQL Databases"
for database in $databases
do
$mysqldump $userpassword $dumpoptions $database | gzip - > ${backupdir}/${database}-$1-$2-$3.sql.gz
done

# Unlock
$mysql $userpassword -e 'START SLAVE'

echo "Dump Complete!"

exit 0

他のヒント

がRossのスクリプトが軌道にの@joatisありがと言うのチェックイン前にスレーブのマスターログの位置にします。その理由は、読み込みロックませんの保全 Read_Master_Log_Pos この検索 SHOW SLAVE STATUS.

この場合、ログインMySQLのスレーブ起動します:

FLUSH TABLES WITH READ LOCK

SHOW SLAVE STATUS \G

注意 Read_Master_Log_Pos

数秒お待ちくだ再実行します:

SHOW SLAVE STATUS \G

すべる Read_Master_Log_Pos が変わりました。

バックアップが開始後の速やかなチェックしていまの状態では、ログの位置に収録したスクリプトが正確なものでなければならない。しかし、そのprefereableでの手続きを行ってください。http://dev.mysql.com/doc/refman/5.0/en/replication-solutions-backups-mysqldump.html

STOP SLAVE SQL_THREAD; の代わりに FLUSH TABLES WITH READ LOCK 期間中のリンクを表示しております。

が行われ、複製再 START SLAVE

また、ご希望の場合はバックアップをビングのための増分バックアップとしての安全性を測定することは有用なことを追記--フラッシュ-ログの$dumpoptions変数上記

い第二のオプションのようにしました。

またへい差動バックアップ用のmysqldumpを.当社が書面にスクリプトを選択したうデータベースのバックアップを実行されmysqldumpを.なを作成するスクリプトの手順に記載 http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_master-data およびこのサイトのコンからのcronジョブ?

  1. また、止まる"スレーブ"
  2. 実行SHOW SLAVE STATUS
  3. 店file_name,file_posに変数
  4. ダンプを再起動しません。

でも私の推測でき追加、変更"修士"をラインを作成で取得した場合に実行されますの復元/セットアップに新たなります。

使用Read_Master_Log_Posとしての位置から継続し、さらにいくつかのマスターできるということです終わる欠損データです。

のRead_Master_Log_Pos変数の位置のマスタのバイナリログファイルをスレーブIOスレッドです。

ここでの問題は、もは少量の時間の停止、スレーブSQLスレッドにretreivingのRead_Master_Log_PosのIOスレッドすることが見込まれますが、マスタからのデータはな適用のSQLスレッドを停止します。

この結果、Read_Master_Log_Posでさらに先に返されるデータは、mysqldumpを、ギャップのデータが輸入され、続けて別のスレーブ.

正しい値を使用は、スレーブはExec_Master_Log_Posの位置のマスタのバイナリログファイルをスレーブSQLスレッドの最後の処刑され、データが存在しない隙間にmysqldumpを、Exec_Master_Log_Pos.

用ロスのスクリプトの正しい使用することはできない。

# MySQL executable location
mysql=/usr/bin/mysql

# MySQLDump executable location
mysqldump=/usr/bin/mysqldump

# MySQL Username and password
userpassword=" --user=<username> --password=<password>"

# MySQL dump options
dumpoptions=" --quick --add-drop-table --add-locks --extended-insert"

# Databases to dump
databases="db1 db2 db3"

# Backup Directory
# You need to create this dir
backupdir=~/mysqldump


# Stop slave sql thread

echo -n "Stopping slave SQL_THREAD... "
mysql $userpassword -e 'STOP SLAVE SQL_THREAD;'
echo "Done."

set `date +'%Y %m %d'`

# Get Binary Log Positions

echo "Logging master status..."
masterlogfile=`$mysql $userpassword -e 'SHOW SLAVE STATUS \G' | grep '[^_]Master_Log_File'`
masterlogpos=`$mysql $userpassword -e 'SHOW SLAVE STATUS \G' | grep 'Exec_Master_Log_Pos'`

# Write log Info

echo $masterlogfile
echo $masterlogpos
echo $masterlogfile >> ${backupdir}/$1-$2-$3_info.txt
echo $masterlogpos >> ${backupdir}/$1-$2-$3_info.txt

# Dump the databases

echo "Dumping MySQL Databases..."
for database in $databases
do
echo -n "$database... "
$mysqldump $userpassword $dumpoptions $database | gzip - > ${backupdir}/$1-$2-$3_${database}.sql.gz
echo "Done."
done

# Start slave again

echo -n "Starting slave... "
$mysql $userpassword -e 'START SLAVE'
echo "Done."

echo "All complete!"

exit 0

mysqldumpを(5.6分というオプション--ダンプ-スレーブが実行した場合、スレーブのバイナリログのco-い換えれば、マスタのノードしたスレーブです。の意図のようなダンプはまさにそのものが記述する.

(私は遅い)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top