生产环境有一个MySQL的Master-Slave的复制。前一阵子机房网络升级,但是考虑到一般网络故障恢复之后,只需要start slave即可所以没
生产环境有一个MySQL的Master-Slave的复制。
前一阵子机房网络升级,但是考虑到一般网络故障恢复之后,只需要start slave即可
所以没有做任何的处理。
但是第二天上班的时候,在Slave数据库上输入命令,start slave 不能重新启动复制。
模拟环境如下
在Slave上启动复制,报错如下
复制过程出现主键重复了
最后,使用status查看,发现MySQL被重启过。
估计在割接过程中,莫名其妙的被人按了服务器的重启键吧。
但是MySQL复制针对这种情况,异常的脆弱,因为复制的信息都写在一个文件里,
考虑到性能的原因,这个写入并不是同步的。
也就是说在断电重启的瞬间,复制的情况并没有写入到文件中。
而再次启动之后,读取这个文件中记录的复制位置,肯定落后于实际执行的位置。
所以会发生主键重复的问题,因为这个记录实际已经执行过了。
解决这个问题有三种方式
1.设置sql_slave_skip_counter跳过Master发来的事件,直到正常的位置
启动之后,发现报错信息已经变了
他重复的主键已经从7940到了7946了,也就说通过一点一点的推进,是可以推进到正常的复制位置的。
但是工作量比较大,需要很有耐心和时间做这个事情。
2.设置slave_skip_errors
在my.cnf配置文件中设置slave_skip_errors=1062,跳过所有主键重复的错误。
但是这个参数设置之后,,需要重启服务。对于生产系统来说,没有实际意义。
3.设置slave_exec_mode
MySQL默认的slave执行方式是严格的。
类似主键重复的问题,会直接停止复制,等待人工介入。
slave_exec_mode是一个动态参数,如果设置为IDEMPOTENT可以自动忽略主键重复和没有找到记录的错误。
但是貌似只是在MySQL集群环境有效
异常断电和关机除了可能导致主键重复的错误之外,还可能导致中继日志损坏
针对这个问题,首先,找到master binlog执行的位置
位置
然后重新连接Master服务器,(需要先停止slave)
最后查看复制情况,已经正常。
这次的经验是,如果预计可能发生状况,比如这次网络割接,
可以先停止slave的服务器。因为我们的slave只是作为备份的一种方式,而不是用于读写分离。
或者干脆设置slave_skip_errors参数。
--------------------------------------分割线 --------------------------------------
Ubuntu 14.04下安装MySQL
《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF
Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL
Ubuntu 14.04下搭建MySQL主从服务器
Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群
Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb
--------------------------------------分割线 --------------------------------------
本文永久更新链接地址:

この記事では、DockerのMySQLメモリ使用量を最適化することを調査します。 監視手法(Docker統計、パフォーマンススキーマ、外部ツール)および構成戦略について説明します。 これらには、Dockerメモリの制限、スワッピング、およびcgroupsが含まれます

この記事では、MySQLの「共有ライブラリを開くことができない」エラーについて説明します。 この問題は、必要な共有ライブラリ(.so/.dllファイル)を見つけることができないMySQLの障害に起因しています。ソリューションには、システムのパッケージMを介してライブラリのインストールを確認することが含まれます。

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

この記事では、PHPMyAdminの有無にかかわらず、LinuxにMySQLを直接インストールするのとPodmanコンテナを使用します。 それは、各方法のインストール手順を詳述し、孤立、携帯性、再現性におけるポッドマンの利点を強調しますが、

この記事では、自己完結型のサーバーレスリレーショナルデータベースであるSQLiteの包括的な概要を説明します。 SQLiteの利点(シンプルさ、移植性、使いやすさ)と短所(同時性の制限、スケーラビリティの課題)を詳しく説明しています。 c

このガイドは、HomeBrewを使用してMacOSに複数のMySQLバージョンをインストールおよび管理することを示しています。 Homebrewを使用して設置を分離し、紛争を防ぐことを強調しています。 この記事では、インストール、開始/停止サービス、および最高のPRAを詳述しています

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
