MySQL主从库的同步机制
MySQL主从库的同步 我们设置一个主库(Master),和一个从库(Slave或Secondary)。从库从主库复制数据内容,目的为灾难备份、读写分离等。 本文主要讲同步机制,至于如何设置MySQL的主库、从库及同步,网上内容很多了,看官只要Google一下“MySQL 主从库 设置”
MySQL主从库的同步
我们设置一个主库(Master),和一个从库(Slave或Secondary)。从库从主库复制数据内容,目的为灾难备份、读写分离等。
本文主要讲同步机制,至于如何设置MySQL的主库、从库及同步,网上内容很多了,看官只要Google一下“MySQL 主从库 设置”就有了。这里略了。
主从库同步的的基本原理
主库开启binary log,开启后每一次操作更新、修改、删除等都会记录在案,所以从库的同步过程其实就是获得这些过程,然后将现场还原,就达到了数据同步的目的。
旧同步实现机制
为什么讲旧的同步的实现,因为按着开发过程,旧的实现其实就是一个最简原理的表现,虽然考虑不全,都大体方向是对的,所以讲旧的是为了讲新的。
- Slave开启一个线程,该线程向Master请求从上次同步位置以后的binlog。然后,等待Master返回binlog后,将binlog记录的事件执行一次,并记录该次同步到哪个位置了。
- Master也很简单,开启一个线程,等待Slave的请求,接到请求后,有了上次同步位置offset,就查询offset后的binlog,返回给Slave。
OK,任务完成了,确实是完成了,只是Slave的线程做的事情有点多,既要请求binlog,又要执行,于是Slave和Master的延时其实是蛮大的,也因为这个蛮大的延时,使得假如在这个延时其间如果Master大量变化后崩溃了,而这些binlogs没来得及同步到Slave,这些变化数据就找不回来了。所以,MySQL开发团队认识到这个问题后,就进行一个改进。
新同步实现机制
原理还是跟旧同步机制一样,只是做了一个改进。这个改进大部分做线程开发的人都懂,把Slave的线程分成两个线程,一个做binlogs的同步(我们称为IO线程),一个做还原现场的工作(我们称为SQL线程)。如此,Master端的binlogs能以最小的延时,同步到Slave,而Slave这边的现场还原工作就可以慢慢来了,反正binlogs是源材料,即使Master崩溃也丢了binlogs,也可以从Slave里取回去还原。
写在最后
就是这么简单,理解这个实现机制有什么好处?就是方便理解配置MySQL的主库和从库的时候一些配置项以及对MySQL的同步出现问题的时候,知道该往哪个方向去找答案。
但是,不得不说一下,然后新机制貌似解决了同步问题,但是实际上没有,延时还是存在的,只是小了非常多,想想都知道,Slave的IO线程在两次请求之间是有时间距离的,所以这个时间距离内,Master还是有可能变化后崩溃而丢失那部分变化。
所以,事实上要完全避免这个问题,只能用MySQL Cluster(数据库集群)。这是一个大的问题,我们另辟章节来讲。
( 完 )
版权所有:老白经 转载请保留来源信息。 >

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

SublimeText3 中国語版
中国語版、とても使いやすい

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

小さなアプリケーションを開発する際には、軽量データベース操作ライブラリをすばやく統合する必要性という厄介な問題に遭遇しました。複数のライブラリを試した後、私はそれらがあまりにも多くの機能を持っているか、あまり互換性がないかのどちらかであることがわかりました。最終的に、私は問題を完全に解決したYii2に基づいた単純化されたバージョンであるMinii/DBを見つけました。

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA
