Mysql主主同步-配置資料同步

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

Mysql主主同步資料

 

一、環境

192.168.1.1  MysqlA

192.168.1.2    MysqlB

二,安裝配置

1.安裝mysql省略,MysqlA和MysqlB版本保持一致就可以了!

2.配置mysql

1)在兩臺機器上給對方授權

MysqlA

GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backmysql@192.168.1.2 IDENTIFIED BY `ICE02FREE03`;

MysqlB

GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backmysql@192.168.1.1 IDENTIFIED BY `ICE02FREE03`;

flush privileges;

2)配置主配置檔案

在MysqlA上

[mysqld]

server-id = 10

log-bin = mysql-bin

log-slave-updates

auto-increment-increment = 2

auto-increment-offset = 1

#要同步的庫名

replicate-do-db = test

在MysqlB上

[mysqld]

server-id = 20

log-bin = mysql-bin

log-slave-updates

auto-increment-increment = 2

auto-increment-offset = 2

#要同步的庫名

replicate-do-db = test

注:二庫都只有server-id不同和auto-increment-offset不同:

    auto-increment-offset是用來設定資料庫中自動增長的起點的,回為這兩能伺服器都設定了一次自動增長值2,所以它們的起點必須得不同,這樣才能避免兩臺伺服器資料同步時出現主鍵衝突

    replicate-do-db 指定同步的資料庫,我們只在兩臺伺服器間同步test資料庫

另:auto-increment-increment的值應設為整個結構中伺服器的總數,本案例用到兩臺伺服器,所以值設為2

配置完成後,重啟兩臺資料庫

service mysqld restart

3)同步兩臺資料庫

首先先在兩臺資料庫上建立要同步的資料庫

create database test;

分別在兩臺資料庫中,執行下命令,檢視potion,以及binlog。

MysqlA上面執行

mysql> show master status;

+——————+———-+————–+——————+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000001 |   157485 |              |                  |

+——————+———-+————–+——————+

1 row in set (0.00 sec)

MysqlB上面執行

mysql> show master status;

+——————+———-+————–+——————+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000001 |    10465 |              |                  |

+——————+———-+————–+——————+

1 row in set (0.00 sec)



##在 MysqlA 上

stop slave;

CHANGE MASTER TO master_host=`192.168.1.2`, master_user=`backmysql`, master_password=`ICE02FREE03`, MASTER_LOG_FILE=`mysql-bin.000001`, MASTER_LOG_POS=10465;

start slave;

##在 MysqlB 上

stop slave;

CHANGE MASTER TO master_host=`192.168.1.1`, master_user=`backmysql`, master_password=`ICE02FREE03`, MASTER_LOG_FILE=`mysql-bin.000001`, MASTER_LOG_POS=157485;

start slave;

##分別檢視兩臺資料庫的slave狀態。

mysql> show slave statusG;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

##都為yes就ok了

4)驗證mysql主主

###好了現在我們來驗證吧

在MysqlA的mysqldb資料庫中建立表

create table test (name varchar(15) not null,city varchar(15) not null,birth date not null);

在MysqlB的mysqldb資料庫中能夠檢視到該表

mysql> show tables;

+—————-+

| Tables_in_test |

+—————-+

| test           |

+—————-+

1 row in set (0.00 sec)

在MysqlB中向表test插入資料

insert into test values (“lequ”,”shanghai”,”2012-10-10″);

在MysqlA中檢視錶test

mysql> select * from test;

+——+———-+————+

| name | city     | birth      |

+——+———-+————+

| lequ | shanghai | 2012-10-10 |

+——+———-+————+

1 row in set (0.00 sec)

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


相關文章