天天看點

MySQL 主從複制

MySQL主從複制原理:

     MySQL 主從同步,其實是一個異步複制的過程,要實作複制,首先需要在 master 上開     啟 bin-log 日志功能,整個過程需要開啟 3 個線程,Master 開啟 IO 線程,slave 開啟   IO 和 SQL 線程。

  過程:

    1)伺服器執行slave start ,從伺服器上 IO 線程會通過授權的使用者連接配接上 master ,     并請求   master 從指定的檔案和位置之後發送 bin-log 日志内容。

    2)Master 伺服器接收到來自 slave 的 IO 線程的請求後,master伺服器上的 IO 程序根據   slave 伺服器發送的指定 bin-log 日志之後的内容,然後傳回在給 slave 端的 IO 線程(傳回的信   息中除了 bin-log 日志内容外,還有本次傳回日志内容後在master 伺服器端的新的bin-log 檔案名   以及在bin-log中的下一個指定更新位置)

   3)Slave 的 IO 線程接收到資訊後,将接收到的日志内容依次添加到 slave 的 relay-log 文   件的最末端,并交讀取到的 master 端的 bin-log 的檔案名和位置記錄到 master-info 檔案中以便   在下一次讀取的時候能夠清楚的告訴 master “我需要從某個 bin-log 的哪個位置開始往後的日志   内容,請發給我”

    4)slave 的sql 線程檢測到 relay-log 中新增加了内容後,會馬上解析 relay-log 的内容成   為在 master 端真實執行時候的那些可執行的内容,并在自身執行。

配置過程:

    yum -y install mysql mysql-deve mysql-server mysql-libs

  MASTER:

     修改 /etc/my.cnf 内容為下:

[mysqld] 

 datadir=/data/sqldata

 socket=/var/lib/mysql/mysql.sock 

 user=mysql

 # Disabling symbolic-links is recommended toprevent assorted security risks 

 symbolic-links=0

 log-bin=mysql-bin 

 server-id = 1

 auto_increment_offset=1   

 auto_increment_increment=2

 [mysqld_safe] 

 log-error=/var/log/mysqld.log 

 pid-file=/var/run/mysqld/mysqld.pid  

 replicate-do-db =all

  建立mysql資料目錄:

    mkdir -p /data/sqldata

    chown -R mysql.mysql /data/sqldata

  啟動 mysql 

    /etc/init.d/mysqld restart

  SLAVE:

然後修改slaveMysql資料庫my.cnf配置檔案内容如下:

datadir=/data/mysql 

socket=/var/lib/mysql/mysql.sock 

user=mysql

#Disabling symbolic-links is recommended to prevent assorted security risks 

symbolic-links=0

log-bin=mysql-bin

server-id= 2

auto_increment_offset=2

auto_increment_increment=2

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

  在 master 資料庫上設定權限:

    >grant replication slave on *.* to 'tongby'@'%' identified by 123456;

  >show master status;

<a href="http://s3.51cto.com/wyfs02/M02/71/55/wKioL1XL_F_DCyqzAAEt8oEzMUQ833.jpg" target="_blank"></a>

  在 slave 資料庫上設定

    &gt;change master to master_host='主IP',master_user='tongbu',master_password='123456',master_log_file='mysql-bin.000007',master_log_pos=250;

<a href="http://s3.51cto.com/wyfs02/M01/71/55/wKioL1XL_MDgQRwcAAGJedVILb8762.jpg" target="_blank"></a>

測試:

    在主上建立資料庫,然後檢視從,如果同步過來,說明主從搭建成功

本文轉自 菜鳥的征程 51CTO部落格,原文連結:http://blog.51cto.com/songqinglong/1684258

上一篇: LAP + MySQL