mysql主主同步

shy丶gril發表於2016-05-25
原創作品,允許轉載,轉載時請務必以超連結形式標明文章 原始出處 、作者資訊和本宣告。否則將追究法律責任。http://navyaijm.blog.51cto.com/4647068/809417

A伺服器:

host 192.168.1.101

port 3306

B伺服器:

host 192.168.1.102

port 3306

 



1,授權使用者:

A伺服器
mysql>grant replication slave,file on *.* to `repl9`@`192.168.1.102` identified by `1234569`;

Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

B伺服器

mysql>grant replication slave,file on *.* to `repl8`@`192.168.1.101` identified by `1234568`;

Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

 

2,配置檔案

A伺服器

log-bin=mysql-bin

server-id   = 1

binlog-do-db=test

binlog-ignore-db=mysql

replicate-do-db=test

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

sync_binlog=1

auto_increment_increment=2

auto_increment_offset=1

master-host     =   192.168.1.102

master-user     =   repl8

master-password =   1234568

master-port     = 3306

 

B伺服器

 

log-bin=mysql-bin

server-id   = 2

binlog-do-db=test

binlog-ignore-db=mysql

replicate-do-db=test

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

sync_binlog=1

auto_increment_increment=2

auto_increment_offset = 2

master-host     =   192.168.1.101

master-user     =   repl9

master-password =   1234569

master-port     = 3306                                                                    

 

 

啟動伺服器就ok了

 

 

————————————————–

Q: 當在另一臺機器上登入MySQL時出現如下錯誤:

 

ERROR 2003 (HY000): Can`t connect to MySQL server on `x.x.x.x` (111)

 

A: 原因是MySQL考慮到安全因素,預設配置只讓從本地登入

 

開啟 /etc/mysql/my.cnf 檔案,找到 bind-address = 127.0.0.1 修改為 bind-address = 0.0.0.0

 

重啟mysql : sudo /etc/init.d/mysql restart

 

 

========================================

101 增加,102不同步   ?????????

mysql -h192.168.1.102 -urepl8 -p1234568        ok

 

102 增加,101 同步

mysql -h192.168.1.101 -urepl9 -p1234569       ok

 

比較兩組的show slave statusG;

102

 

           Slave_IO_Running: No

          Slave_SQL_Running: Yes

            Replicate_Do_DB: test

        Replicate_Ignore_DB: mysql

 

 

sudo /etc/init.d/mysql restart

sudo service mysql restart   以後就變成:lave_IO_Running: YES

 

 

 

出現的問題(多主自增長ID重複)

 

解決方法:

我們只要保證兩臺伺服器上插入的自增長資料不同就可以了

如:A查奇數ID,B插偶數ID,當然如果伺服器多的話,你可以定義演算法,只要不同就可以了

 

在這裡我們在A,B上加入引數,以實現奇偶插入

 

A:my.ini上加入引數

 

auto_increment_offset = 1

auto_increment_increment = 2

這樣A的auto_increment欄位產生的數值是:1, 3, 5, 7, …等奇數ID了

 

B:my.ini上加入引數

 

auto_increment_offset = 2

auto_increment_increment = 2

這樣B的auto_increment欄位產生的數值是:2, 4, 6, 8, …等偶數ID了

 

可 以看出,你的auto_increment欄位在不同的伺服器之間絕對不會重複,所以Master-Master結構就沒有任何問題了。當然,你還可以使 用3臺,4臺,或者N臺伺服器,只要保證auto_increment_increment = N 再設定一下auto_increment_offset為適當的初始值就可以了,那樣,我們的MySQL可以同時有幾十臺主伺服器,而不會出現自增長ID 重複。

 

在這裡我們說的是2臺MYSQL伺服器,你也可以擴充套件到多臺,實現方法類似

A -> B -> C-> D ->A

這樣一個環形的備份結構就形成了,最後可要記住 自增長ID(主鍵)要設計好哦,否則會出錯的

本文出自 “屌絲運維男” 部落格,請務必保留此出處http://navyaijm.blog.51cto.com/4647068/809417


相關文章