Mysql主主同步配置

一、環境

192.168.1.1  MysqlA

192.168.1.2    MysqlB


二,安裝配置

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

2.配置mysql


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

MysqlA

GRANT all privileges ON *.* TO [email protected] IDENTIFIED BY '123456';
flush privileges;

MysqlB

GRANT all privileges ON *.* TO [email protected] IDENTIFIED BY '123456';
flush privileges;


2)配置主配置文件


在MysqlA上

[mysqld]
server-id = 1
log-bin = mysql-bin
log-slave-updates
auto-increment-increment = 2
auto-increment-offset = 1
#要同步的庫名
#replicate-do-db = test
#忽略mysql數據庫的同步
replicate-ignore-db=mysql
#replicate-ignore-db=test


在MysqlB上

[mysqld]
server-id = 2
log-bin = mysql-bin
log-slave-updates
auto-increment-increment = 2
auto-increment-offset = 2
#要同步的庫名
#replicate-do-db = test
#忽略mysql數據庫的同步
replicate-ignore-db=mysql
#replicate-ignore-db=test


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

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

   replicate-do-db 指定同步的數據庫,我們只在兩臺服務器間同步test數據庫

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


配置完成後,重啓兩臺數據庫

service mysqld restart

/etc/init.d/mysql restart


3)同步兩臺數據庫


分別在兩臺數據庫中,執行下命令,查看potion,以及binlog。

MysqlA上面執行


mysql> show master status;

       +------------------+----------+--------------+------------------+

       | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

       +------------------+----------+--------------+------------------+

       | mysql-bin.000001 |   107|              |                  |

       +------------------+----------+--------------+------------------+

       1 row in set (0.00 sec)


MysqlB上面執行

mysql> show master status;

       +------------------+----------+--------------+------------------+

       | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

       +------------------+----------+--------------+------------------+

       | mysql-bin.000001 |    107 |              |                  |

       +------------------+----------+--------------+------------------+

       1 row in set (0.00 sec)


##在 MysqlA 上

#stop slave;
CHANGE MASTER TO master_host='192.168.1.2', master_user='root', master_password='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
start slave;

##在 MysqlB 上

stop slave;
CHANGE MASTER TO master_host='192.168.1.1', master_user='root', master_password='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
start slave;


##分別查看兩臺數據庫的slave狀態。


mysql> show slave status\G;


結果:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes


都爲yes就說明已經配置成功了


4)驗證mysql主主

在MysqlA的mysqldb數據庫中

create database test;
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 ("aa","bb","2012-05-16");
mysql> select * from test;

   +------+----------+------------+

   | name | city     | birth      |

   +------+----------+------------+

   | aa   | bb       | 2012-05-16 |

   +------+----------+------------+

   1 row in set (0.00 sec)


到此驗證完畢.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章