1、環境mysql
192.168.1.1 MysqlAsql
192.168.1.2 MysqlB數據庫
二,安裝配置bash
1.安裝mysql省略,MysqlA和MysqlB版本保持一致就能夠了!服務器
2.配置mysqlide
1)在兩臺機器上給對方受權rest
MysqlAserver
GRANT all privileges ON *.* TO root@192.168.1.2 IDENTIFIED BY '123456'; flush privileges;
MysqlB
ci
GRANT all privileges ON *.* TO root@192.168.1.1 IDENTIFIED BY '123456'; flush privileges;
2)配置主配置文件rem
在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)
到此驗證完畢.