ホームページ >データベース >mysql チュートリアル >オンライン データベースが誤って削除されたという悲しい話
関連する学習の推奨事項: mysql チュートリアル
最近の学校シーズンのため、弊社は大学関連の業務も行っているため、とても忙しく記事を書く時間があまりありませんが、人は一度忙しすぎると、忙しさの中でミスをしてしまいがちです。私に関して言えば、つい数日前、いや、私の友人が数日前にオンラインデータベースを操作していたところ、データベースの削除を実行されそうになって逃走しました。
事前に注意してください: 彼は実際には私の友人であり、私ではありません。それは本当に私の友人であり、私ではありません。それは本当に私の友人であり、私ではありません。ただし、説明の便宜上、以下では「私の友人」を「私」と呼びます。
いくつかのテーブル構造を比較してみたところ、このライブラリと他のライブラリのテーブル構造が大きく異なっていたため、この環境では使用されていないのではないかと思い、直接比較してみました。これらのテーブルの上書き操作が行われたのですが、たまたまこれらのテーブルが学生の財布に関係していたので、夕方10時頃、会社の第一線のスタッフがなぜ財布の中のお金が0になったのかをグループで報告しました。 . これを見た瞬間、私は怖くておしっこをしてしまい、逃げるべきか迷いました。
幸いなことに、私はいくつかのデータベース回復計画を見てきており、それらについてはまだ少し知っています。
データを回復するために binlog ログを使用します。binlog を使用するには、まず binlog ログが有効になっていることを確認する必要があります。コマンドを使用して表示できます。
show variables like 'log_%';复制代码
ON 状態になっていることがわかり、電源が入っていることがわかります。OFF 状態の場合は、 .cnf [mysqld]
構成を追加した後、mysql サービスを再起動して有効にします。
# my.cnf文件 [mysqld] log-bin=mysql-bin server-id=1复制代码
binlog 日を開いた後、コマンドを通じて binlog ログのステータスを確認できることを確認してください。
# 查看binlog日志的目录show master status;复制代码
# 查看binlog日志内容show binlog events IN 'mysql-bin.000002';复制代码
# 进入存储binlog日志的文件木了,可以通过这条命令查看详情 mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002;复制代码
# 将binlog日志转为txt导出 mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002 > sql.txt复制代码
データを復元する場合binlog ログから、コマンド ラインの回復が一般的に使用されます。または、binlog ログをコピーし、binlog 読み取りツールを使用してそれを .sql ファイルに変換し、使用する必要があるすべての SQL をコピーして再実行する方法です。 . ここでの主な焦点は、コマンド ラインの回復方法です。
コマンドラインリカバリは主にbinlogログを確認し、復元する開始点と終了点を確認し、復元するコマンドを入力することで行われます。または、ミスをした時間を推定し、一定期間内にデータを回復します。
# 通过起始点和结束点恢复 mysqlbinlog --start-position="582" --stop-position="9414" mysql-bin.000002 | mysql -uroot -proot;复制代码
# 通过起始时间和结束时间来恢复,传入的时间可以是一个yyyy-MM-dd HH:mm:ss 的时间格式,也可以是一个时间戳 mysqlbinlog --start-datetime="2020-9-1 8:25:04" --stop-datetime="2020-9-1 20:00:00" mysql-bin.000002 | mysql -uroot -proot复制代码##ご覧のとおり、回復コマンドを入力した後、データベースをクリアしました。データが戻ってきました。 4. 問題binlog ログはデータを回復できますが、問題もあり、binlog ログが増加し続けると自動的に削除され、その結果、ファイルの一部が削除されてしまいます。データは復元できません。 ただし、binlog ログのサイズと保存時間は mysql で設定できます。ただし、問題が発生しないように毎日バックアップを作成することをお勧めします。
# 设置文件大小,单位是字节,下面换算是100Mset global max_binlog_size=104857600; # 设置文件保存天数,下面是保存7天,默认值为0,表示"没有自动删除"set global expire_logs_days = 7;复制代码
对于线上环境来说,做好每日备份和binlog一起用才是王道。线上一般都是部署在linux上的,所以这里就简单列一下linux的定时备份方法。
yum install crontabs复制代码
/var/spool/cron/root 此文件为crontab定时任务,可通过crontab -e
或者直接修改此文件修改.
crontab -l
查看定时任务.
touch xxx.sh
mysqldump -uroot -p"密码" 数据库名 > /mysql/person_`date +%Y%m%d`.sql复制代码
chmod 777 xxx.sh
crontab -e
每天凌晨2点执行 00 2 * * * /xxx.sh复制代码
完结!
想了解更多编程学习,敬请关注php培训栏目!
以上がオンライン データベースが誤って削除されたという悲しい話の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。