関連する学習の推奨事項: 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复制代码
# 设置文件大小,单位是字节,下面换算是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 サイトの他の関連記事を参照してください。