環境介紹:
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 ^$ > tmp.log
cat tmp.log > /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 > /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 < 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 > /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