實現兩個MySQL資料庫之間的主從同步_資料庫技術
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