天天看點

MySQL主主同步

環境介紹:

CentOS-6.7  64位

Master1:Blog-MySQL-1  192.168.133.128

Master2:Blog-MySQL-2  192.168.133.132

MySQL 版本 5.5.33 二進制包安裝

檢查兩台機器的實驗環境是否符合要求。并保證可以正常登陸 mysql

以其中一台截圖為例:

hostname

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

mysql –V

cat /etc/redhat-release      

uname -a     

<a href="http://s3.51cto.com/wyfs02/M02/8D/01/wKiom1iBeeOw5uiWAABDwAuTXAE082.png" target="_blank"></a>

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

以上算是雙主環境搭建的準備工作吧,接下來編輯 Master 1 的 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/M02/8C/FE/wKioL1iBeeTAy1X5AAAPWN4XHa4900.png" target="_blank"></a>

Master 1 的  my.cnf 檔案中的 [mysqld] 中添加以下字段

vim /etc/my.cnf

server-id  = 1

log-bin = mysql-bin

auto_increment_increment = 2

auto_increment_offset     = 1

log-slave-updates

expire_logs_days = 7

skip-name-resolve

lower_case_table_names=1

<a href="http://s3.51cto.com/wyfs02/M00/8D/01/wKiom1iBeeWS3WdUAAATmm5OA9Y045.png" target="_blank"></a>

以上參數

auto_increment_increment = 2           #自增ID的間隔,如 1 3 5 間隔為 2

auto_increment_offset     = 1                #ID的初始位置

修改配置檔案需要重新開機 Master 1 的資料庫

/etc/init.d/mysqld restart     

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

登入 Master 1 的 mysql

mysql -uroot -p123456     

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

在 Master 1 上建立同步到 Master 2 上的賬号

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

flush privileges; 

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

檢查剛才剛才的操作

select user,host from mysql.user;

show grants for yuci@'%';

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

繼續操作 Master1 鎖表,檢視 binlog 檔案及 pos 位置節點

flush table with read lock;

show master status;      

<a href="http://s3.51cto.com/wyfs02/M02/8D/01/wKiom1iBeerzsXWDAAAiWPfwwg0179.png" target="_blank"></a>

新打開一個視窗,将 Master 1 的資料庫檔案導出,通過 scp 指令傳遞給 Master 2 上

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

scp test.sql [email protected]:/root

yes

<a href="http://s3.51cto.com/wyfs02/M00/8C/FE/wKioL1iBeeriJtqXAABHXTm-Nb4052.png" target="_blank"></a>

解表 Master 1

unlock tables;

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

登陸到 Master 2 上,現将剛才的資料庫 test.sql 導入

mysql -uroot -p123456 &lt; test.sql

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

編輯 Master 2 的 my.cnf 檔案,跟上面的操作一樣,隻需要注意的是 server-id 和 offset

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

<a href="http://s3.51cto.com/wyfs02/M01/8D/01/wKiom1iBee2zzwUrAAAPiIwEIfs698.png" target="_blank"></a>

server-id       = 2

auto_increment_offset    = 2

lower_case_table_names=1     

<a href="http://s3.51cto.com/wyfs02/M02/8D/01/wKiom1iBee6jCKe3AABF4enSpjI322.png" target="_blank"></a>

修改配置檔案後别忘重新開機 mysql

/etc/init.d/mysqld restart

<a href="http://s3.51cto.com/wyfs02/M00/8D/01/wKiom1iBee6yrT08AAANw7gTt68291.png" target="_blank"></a>

登陸 Master 2 的 mysql 資料庫

 mysql -uroot –p123456

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=332;

<a href="http://s3.51cto.com/wyfs02/M00/8C/FE/wKioL1iBee-x4rJcAABg79t-Aes449.png" target="_blank"></a>

檢視兩個IO SQL連個線程是否連接配接成功

start slave;

show slave status\G

<a href="http://s3.51cto.com/wyfs02/M01/8D/01/wKiom1iBefCyPpcSAABFlrQkO2s185.png" target="_blank"></a>

在 Master 2 上建立一個用于同步到 Master 1 的賬号,重新整理并檢查

其實就是兩台 mysql 分别建立兩個賬号,賬号不能重複

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

flush privileges;

select user,host from mysql.user;     

show grants for yuci@'%';

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

檢視 Master 2 的 binlog 檔案和 pos 号

show master status;

<a href="http://s3.51cto.com/wyfs02/M02/8D/01/wKiom1iBefLzn7VHAAAWG4JmlKs458.png" target="_blank"></a>

傳回 Master 1 上,設定賬号同步參數

輸入時注意每個參數,别把它和之前的賬号,使用者名,密碼搞反了

MASTER_HOST='192.168.133.132',

MASTER_USER='yuci1',

MASTER_LOG_FILE='mysql-bin.000002',

MASTER_LOG_POS=333;

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

在 Master 1 上啟動 slave,并檢視

<a href="http://s3.51cto.com/wyfs02/M00/8D/01/wKiom1iBefayeKKlAABIqHTGI_0514.png" target="_blank"></a>

到此為止,雙主的環境就算是搭建完成了,接下來測試一下。

先在 Master 1 上建立資料庫 yucitest1

create database yucitest1;

show databases;     

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

在 Master 2 上檢視所有資料庫,可以看到剛才建立的 yucitest1 ,将其删除,建立 yucitest2 資料庫

show databases;

drop database yucitest1;     

create database yucitest2;

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

傳回 Master 1 看到 yucitest2 ,環境搭建成功

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

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