1. 程式人生 > >實現兩個MySQL資料庫之間的主從同步_資料庫技術

實現兩個MySQL資料庫之間的主從同步_資料庫技術

www.syncnavigator.cn

SyncNavigator 資料酷同步工具 做資料同步時所支援的資料庫型別:

支援sqlserver 2000-2014所有版本,全相容,和MYsql 4.x 、MYsql 5.x 、MYsql 6.x版本。

來源資料庫和目標資料庫可以版本不同,比如:來源資料庫是sqlserver 2012  目標資料庫是mysql 5.5 ,都是可以的, SyncNavigator 支援跨資料庫版本,無縫傳輸資料。

只需要能連線上資料庫, SyncNavigator 可以安裝在第三方電腦上,來源資料庫和目標資料庫電腦上可以不用安裝程式。

設定好資料庫連線地址,點選測試連線,能臉上來源資料庫和目標資料庫, SyncNavigator 就能進行高效資料傳輸服務

一、    概述
MySQL從3.23.15版本以後提供資料庫複製(replication)功能,利用該功能可以實現兩個資料庫同步、主從模式、互相備份模式的功能
二、    環境
作業系統:Linux 2.6.23.1-42.fc8 # SMP(不安裝XEN)
Mysql版本:5.0.45-4.fc8
裝置環境:PC(或者虛擬機器)兩臺
三、    配置
資料庫同步複製功能的設定都在MySQL的配置檔案中體現,MySQL的配置檔案(一般是my.cnf):在本環境下為/etc/my.cnf。
3.1 設定環境:
 IP的設定:
A主機 IP:10.10.0.119
      Mask:255.255.0.0
B主機 IP:10.10.8.112
      Mask:255.255.0.0
在IP設定完成以後,需要確定兩主機的防火牆確實已經關閉。可以使用命令service iptables status檢視防火牆狀態。如果防火牆狀態為仍在執行。使用service iptables stop來停用防火牆。如果想啟動關閉防火牆,可以使用setup命令來禁用或定製。
最終以兩臺主機可以相互ping通為佳。
3.2 配置A主(master) B從(slave)模式
3.2.1 配置A 為master
   1、增加一個使用者同步使用的帳號:
  GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
賦予10.10.8.112也就是Slave機器有File許可權,只賦予Slave機器有File許可權還不行,還要給它REPLICATION SLAVE的許可權才可以。
2、增加一個數據庫作為同步資料庫:
create database test;
3、建立一個表結構:
      create table mytest (username varchar(20),password varchar(20));
4、修改配置檔案:
            修改A的/etc/my.cnf檔案,在my.cnf配置項中加入下面配置:
server-id = 1      #Server標識
log-bin
binlog-do-db=test  #指定需要日誌的資料庫
            
5、重起資料庫服務:
 service mysqld restart
 檢視server-id:
 show variable like ‘server_id’;
例項:
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id    | 1    |
+---------------+-------+
1 row in set (0.00 sec)
 
6、用show master status/G命令看日誌情況。
      正常為:
mysql> show master status/G
*************************** 1. row ***************************
File: mysqld-bin.000002
Position: 198
Binlog_Do_DB: test,test
Binlog_Ignore_DB:
1 row in set (0.08 sec)
3.2.2 配置B 為slave
1、增加一個數據庫作為同步資料庫:
create database test;
2、建立一個表結構:
create table mytest (username varchar(20),password varchar(20));
3、修改配置檔案:
            修改B的/etc/my.cnf檔案,在my.cnf配置項中加入下面配置:
server-id=2
master-host=10.10. 0.119
master-user=backup    #同步使用者帳號
master-password=1234
master-port=3306
master-connect-retry=60 #預設重試間隔60秒
replicate-do-db=test    #告訴slave只做backup資料庫的更新
            
5、重起資料庫服務:
 service mysqld restart
 檢視server-id:
 show variables like ‘server_id’;
例項:
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id    | 2    |
+---------------+-------+
1 row in set (0.00 sec)
 
6、用show slave status/G命令看日誌情況。
      正常為:
mysql> show slave status/G
*************************** 1. row ***************************
            Slave_IO_State: Waiting for master to send event
                Master_Host: 10.10.0.11