天天看點

MySQL-5.5.33主從複制

搭建主從同步需要在兩個電腦上分别安裝 MySQL ,我這裡安裝的是 CentOS6.7 64位,MySQL-5.5.33。

兩台的操作是一樣的,要求能夠登陸 mysql 資料庫即可。

主從位址如下:

master:192.168.133.128

slave:192.168.133.132

ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -d: -f2

<a href="http://s3.51cto.com/wyfs02/M00/8C/F4/wKiom1h_JY3QHnrVAABP5TaEGP0898.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/8C/F0/wKioL1h_JY7wKjBgAABQC57CR1w828.png" target="_blank"></a>

環境介紹:

cat  /etc/redhat-release

uname -a     

<a href="http://s3.51cto.com/wyfs02/M02/8C/F0/wKioL1h_JZDhcDAIAAAcRpSWV08248.png" target="_blank"></a>

配置主庫的 my.cnf 檔案,為了友善操作過濾掉開頭是 #,$  的行

cat /etc/my.cnf | grep -v ^# | grep -v ^$ &gt; tmp.log

cat tmp.log &gt; /etc/my.cnf

<a href="http://s3.51cto.com/wyfs02/M00/8C/F4/wKiom1h_JZCDvcZxAAAOmOAegIQ872.png" target="_blank"></a>

編輯 /etc/my.cnf 檔案

server-id       = 1          

log-bin=mysql-bin    

#max_binlog_size=500M

#binlog-do-db=test

#binlog-ignore-db=test1

skip-name-resolve

lower_case_table_names=1

<a href="http://s3.51cto.com/wyfs02/M00/8C/F0/wKioL1h_JZGxWWPiAAA0WOBDAz0149.png" target="_blank"></a>

以上參數介紹:

server-id       = 1  #表示伺服器ID,可以自定義,在主從中是唯一的且必須為數字

log-bin=mysql-bin      #表示啟用mysql二進制日志,必須要啟動,否則主從不會生效

#max_binlog_size=500M   #表示每個binlog檔案最大500M,但一條記錄不會寫在兩個日志中,是以日志有時會超500M

#binlog-do-db=test    #表示要同步的資料庫名字,如果是多個資料庫,在多加一行就可以

#binlog-ignore-db=test1   #表示不需要同步的資料庫名字,如果是多個資料庫,在多加一行就可以

skip-name-resolve      #忽略主機名的方式通路

lower_case_table_names=1     #忽略資料庫表名大小寫  

如果将 binlog-do-db=test ,binlog-ignore-db=test1   不寫或是注釋則表示為同步所有資料庫,我這裡就是同步所有資料庫     

修改過 my.cnf 檔案後需要重新開機 mysql 服務

/etc/init.d/mysqld restart

<a href="http://s3.51cto.com/wyfs02/M01/8C/F0/wKioL1h_JZLxhbPjAAAMcd4B6gM963.png" target="_blank"></a>

登陸主庫,并建立一個賬号并授權,專門用于主從同步

建立賬号之後别忘記重新整理權限

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

flush privileges;     

<a href="http://s3.51cto.com/wyfs02/M02/8C/F4/wKiom1h_JZKDAwC0AAAY0aPxldI649.png" target="_blank"></a>

檢查自己剛才的操作

select user,host from mysql.user;

show grants for yuci@'%';

<a href="http://s3.51cto.com/wyfs02/M02/8C/F0/wKioL1h_JZPRQt-SAABcPcMU-zk146.png" target="_blank"></a>

進行鎖表,鎖表後将隻能讀取不能建立或插入任何資訊

flush table with read lock;

<a href="http://s3.51cto.com/wyfs02/M00/8C/F0/wKioL1h_JZSTypgFAAAJpaRHexY766.png" target="_blank"></a>

檢視 binlog 的檔案名以及 pos 位置節點

show master status;     

<a href="http://s3.51cto.com/wyfs02/M00/8C/F4/wKiom1h_JZXT-ar4AAAW4dAcw1g936.png" target="_blank"></a>

在從庫上用剛才建立的使用者登陸主庫,測試兩台資料庫是否連接配接通常

mysql -uyuci -p123456 -h192.168.133.128     

<a href="http://s3.51cto.com/wyfs02/M01/8C/F4/wKiom1h_JZbjGoYBAABE4L2B-wE555.png" target="_blank"></a>

新開一個遠端界面,連接配接主庫并将導出資料庫。(保證之前的 mysql 登陸界面不要退出)    

在将新導出的 test.sql 檔案通過 scp 傳給從庫

mysqldump -uroot -p123456 --events -A -B &gt; /root/test.sql

scp test.sql [email protected]:/root

yes

<a href="http://s3.51cto.com/wyfs02/M02/8C/F4/wKiom1h_JZbzD8y4AABDFkM--tU933.png" target="_blank"></a>

回到主庫,解鎖

unlock tables;

在從庫上将剛才的 test.sql 檔案導入到資料庫

mysql -uroot -p123456 &lt; /root/test.sql        

<a href="http://s3.51cto.com/wyfs02/M00/8C/F4/wKiom1h_JaHwWLVGAAAIGajkEp0594.png" target="_blank"></a>

編輯從庫上 my.cnf 檔案,将 server-id 修改為 2

vim /etc/my.cnf

server-id       = 2       

<a href="http://s3.51cto.com/wyfs02/M00/8C/F4/wKiom1h_JaHCMkbmAAAHlSpyq3U182.png" target="_blank"></a>

修改了 my.cnf 檔案,需要重新開機 mysql

/etc/init.d/mysqld restart       

<a href="http://s3.51cto.com/wyfs02/M00/8C/F0/wKioL1h_JaWiVJZ9AAAMXGZu0m0685.png" target="_blank"></a>

登陸 mysql 配置從庫的同步參數

CHANGE MASTER TO

MASTER_HOST='192.168.133.128',

MASTER_PORT=3306,

MASTER_USER='yuci',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=107;

<a href="http://s3.51cto.com/wyfs02/M01/8C/F0/wKioL1h_JabTQcHaAABkEmbVFvI213.png" target="_blank"></a>

以上參數配置

MASTER_HOST='192.168.133.128',            #表示主庫的IP

MASTER_PORT=3306,          #表示主庫的端口

MASTER_USER='yuci',        #表示主庫上允許同步的使用者

MASTER_PASSWORD='123456',     #表示同步使用者的密碼

MASTER_LOG_FILE='mysql-bin.000001',         #表示從哪個binlog檔案開始同步

MASTER_LOG_POS=107;       #表示從binglong檔案的哪個pos節點位置開始同步

在從庫上執行 start slave 操作,IO連接配接

start slave;     

<a href="http://s3.51cto.com/wyfs02/M02/8C/F0/wKioL1h_JaaigAoJAAAIMmmNPqg190.png" target="_blank"></a>

檢視目前的狀态,關鍵有以下幾個内容

show slave status\G;

<a href="http://s3.51cto.com/wyfs02/M00/8C/F0/wKioL1h_JaeBdZPwAAA67xcffn0194.png" target="_blank"></a>

關鍵檢視以下參數

Slave_IO_State: Waiting for master to send event

Slave_IO_Running: Yes           #主從之間的網絡

Slave_SQL_Running: Yes        #主從之間的資料

Seconds_Behind_Master: 0     #從庫落後主庫的秒數

在主庫中建立一個資料庫,測試主從是否同步

create database haha;     

<a href="http://s3.51cto.com/wyfs02/M01/8C/F4/wKiom1h_Jafyv-zPAAAIZawT7Ak373.png" target="_blank"></a>

在主庫中檢視

show databases;

<a href="http://s3.51cto.com/wyfs02/M02/8C/F4/wKiom1h_JaiwsQNjAAAWWL6GALE201.png" target="_blank"></a>

在從庫中檢視,主從同步成功

show databases;     

<a href="http://s3.51cto.com/wyfs02/M00/8C/F4/wKiom1h_JajzGoV_AAAVSZ36gao207.png" target="_blank"></a>

zhao

本文轉自   mlwzby   51CTO部落格,原文連結:http://blog.51cto.com/aby028/1892939