目次
 2 .复制配置" > 2 .复制配置

MySQL主从复制(Master-Slave)

Jun 07, 2016 pm 02:55 PM
mysql コピー 概要

1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基

1 复制概述

    Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

   请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。

1.1 mysql支持的复制类型:

  (1)基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,会自动选着基于行的复制。    
  (2)基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持
  (3)混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

1.2 复制解决的问

    MySQL复制技术有以下一些特点:
    (1) 数据分布 (Data distribution )
    (2) 负载平衡(load balancing)
    (3) 备份(Backups) 
    (4) 高可用性和容错行 High availability and failover 

1.3 复制如何工作 

   整体上来说,复制有3个步骤:   

    (1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
    (2) slave将master的binary log events拷贝到它的中继日志(relay log);
    (3) slave重做中继日志中的事件,将改变反映它自己的数据。

wKiom1SOwveBlyTdAADpsdSzYhI977.jpg

 2 .复制配置

 有两台MySQL数据库服务器Master和slave,Master为主服务器,slave为从服务器,初始状态时,Master和slave中的数据信息相同,当Master中的数据发生变化时,slave也跟着发生相应的变化,使得master和slave的数据信息同步,达到备份的目的。

要点:

  负责在主、从服务器传输各种修改动作的媒介是主服务器的二进制变更日志,这个日志记载着需要传输给从服务器的各种修改动作。因此,主服务器必须激活二进制日志功能。从服务器必须具备足以让它连接主服务器并请求主服务器把二进制变更日志传输给它的权限。        

 一、安装MySQL

  说明:在两台MySQL服务器192.168.21.169和192.168.21.168上分别进行如下操作,安装MySQL 5.5.22

 二、配置MySQL主服务器(192.168.21.169)

mysql -u root -p            #进入MySQL控制台
create database AMT_DB;        #建立数据库AMT_DB
insert into mysql.user(Host,User,Password) values ('localhost','archermind',password('123456'));  
#创建用户archermind,建立MySQL主从数据库同步用户replication密码123456 
flush privileges;                   #刷新系统授权表
#授权用户replication只能从192.168.21.168这个IP访问主服务器192.168.21.169上面的数据库,并且只具有数据库备份的权限
grant replication slave  on *.* to 'replication'@'192.168.21.168' identified by '123456' with grant option;
ログイン後にコピー

三、把MySQL主服务器192.168.21.169中的数据库AMT_DB导入到MySQL从服务器192.168.21.168中
1、导出数据库AMT_DB

mysqldump -u root -p AMT_DB > /home/replication.sql   
#在MySQL主服务器进行操作,导出数据库AMT_DB到/home/replication.sql
ログイン後にコピー

备注:在导出之前可以先进入MySQL控制台执行下面命令

flush tables with read lock;    
#数据库只读锁定命令,防止导出数据库的时候有数据写入
unlock tables;                      #解除锁定
ログイン後にコピー


2、导入数据库到MySQL从服务器

mysql -u root -p          #进入从服务器MySQL控制台
create database AMT_DB;       #创建数据库
use AMT_DB              #进入数据库
source /home/replication.sql     #导入备份文件到数据库
mysql -u replication -h 192.168.21.169 -p   #测试在从服务器上登录到主服务器
ログイン後にコピー

四、配置MySQL主服务器的my.cnf文件

#vim /etc/my.cnf           #编辑配置文件,在[mysqld]部分添加下面内容   
 server-id=1           #设置服务器id,为1表示主服务器,注意:如果原来的配置文件中已经有这一行,就不用再添加了。    
 log_bin=mysql-bin      #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。    
 binlog-do-db=AMT_DB      #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行    
 binlog-ignore-db=mysql           #不同步mysql系统数据库
#service mysqld  restart          #重启MySQL
ログイン後にコピー
mysql -u root -p   #进入mysql控制台
show master status;  查看主服务器,出现以下类似信息
+------------------+----------+--------------+------------------+
|File                        |Position  | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |    7131    | AMT_DB    |mysql                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
ログイン後にコピー

注意:这里记住File的值:mysql-bin.000001和Position的值:7131,后面会用到。
五、配置MySQL从服务器的my.cnf文件

#vim /etc/my.cnf   #编辑配置文件,在[mysqld]部分添加下面内容
server-id=2   #配置文件中已经有一行server-id=1,修改其值为2,表示为从数据库
log-bin=mysql-bin  #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
replicate-do-db=AMT_DB   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
replicate-ignore-db=mysql   #不同步mysql系统数据库
:wq!    #保存退出
#service mysqld restart   #重启MySQL
ログイン後にコピー

注意:MySQL 5.1.7版本之后,已经不支持把master配置属性写入my.cnf配置文件中了,只需要把同步的数据库和要忽略的数据库写入即可。

mysql  -u root -p  #进入MySQL控制台
slave stop;   #停止slave同步进程
change master to master_host='192.168.21.169',master_user='replication',master_password='123456',master_log_file='mysql-bin.000001' ,master_log_pos=7131;    #执行同步语句
slave start;    #开启slave同步进程
SHOW SLAVE STATUS\G   #查看slave同步信息,出现以下内容
*************************** 1. row ***************************
               Slave_IO_State:Waiting for master to send event
                  Master_Host:192.168.21.169
                  Master_User:replication
                  Master_Port:3306
                Connect_Retry:60
              Master_Log_File:mysql-bin.000001
          Read_Master_Log_Pos:7131
               Relay_Log_File:MySQLSlave-relay-bin.000001
                Relay_Log_Pos:253
        Relay_Master_Log_File:mysql-bin.000001
             Slave_IO_Running:Yes
            Slave_SQL_Running:Yes
              Replicate_Do_DB:AMT_DB
          Replicate_Ignore_DB:mysql
           Replicate_Do_Table:
       Replicate_Ignore_Table:
1 row in set (0.00 sec)
ログイン後にコピー

注意查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

以上这两个参数的值为Yes,即说明配置成功!

六、测试MySQL主从服务器双机热备是否成功
1、进入MySQL主服务器

mysql -u root-p  #进入主服务器MySQL控制台
use AMT_DB   #进入数据库
CREATETABLE test ( id int not null primary key,name char(20));   #创建test
ログイン後にコピー

2、进入MySQL从服务器

mysql -u root-p  #进入MySQL控制台
use AMT_DB   #进入数据库
show  tables;  #查看AMT_DB表结构,会看到有一个新建的表test,表示数据库同步成功
ログイン後にコピー

至此,MySQL数据库配置主从服务器实现双机热备

 


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQLの役割:Webアプリケーションのデータベース MySQLの役割:Webアプリケーションのデータベース Apr 17, 2025 am 12:23 AM

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

Laravelは紹介例 Laravelは紹介例 Apr 18, 2025 pm 12:45 PM

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

MySQLおよびPHPMYADMIN:コア機能と関数 MySQLおよびPHPMYADMIN:コア機能と関数 Apr 22, 2025 am 12:12 AM

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

MySQL対その他のプログラミング言語:比較 MySQL対その他のプログラミング言語:比較 Apr 19, 2025 am 12:22 AM

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

データベース接続の解決問題:Minii/DBライブラリを使用する実用的なケース データベース接続の解決問題:Minii/DBライブラリを使用する実用的なケース Apr 18, 2025 am 07:09 AM

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

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

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

初心者向けのMySQL:データベース管理を開始します 初心者向けのMySQL:データベース管理を開始します Apr 18, 2025 am 12:10 AM

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

MySQLモードの問題を解決する問題:TheliamySQLModescheckerモジュールの使用経験 MySQLモードの問題を解決する問題:TheliamySQLModescheckerモジュールの使用経験 Apr 18, 2025 am 08:42 AM

Theliaを使用してeコマースWebサイトを開発するとき、私はトリッキーな問題に遭遇しました:MySQLモードが適切に設定されていないため、いくつかの機能が適切に機能しません。いくつかの調査の後、TheliamysQlModescheckerというモジュールを見つけました。これは、Theliaが必要とするMySQLパターンを自動的に修正できるため、問題を完全に解決できます。

See all articles