Ⅰ 請教Mysql怎樣實現雙向同步
實現兩個Mysql資料庫之間同步同步原理:
MySQL 為了實現replication 必須打開bin-log 項,也是打開二進制的MySQL 日誌記錄選項。MySQL 的bin log 二
進制日誌,可以記錄所有影響到資料庫表中存儲記錄內容的sql 操作,如insert / update / delete 操作,而不記錄
select 這樣的操作。因此,我們可以通過二進制日誌把某一時間段內丟失的數據可以恢復到資料庫中(如果二進制日
志中記錄的日誌項,包涵資料庫表中所有數據,那麼, 就可以恢復本地資料庫的全部數據了)。 而這個二進制日誌,
如果用作遠程資料庫恢復,那就是replication 了。這就是使用replication 而不用sync 的原因。這也是為什麼要設
置bin-log = 這個選項的原因。
在同步過程中,最重要的同步參照物,就是同步使用那一個二進制日誌文件,從那一條記錄開始同步。下面就介紹
下怎樣實現兩個Mysql資料庫之間的主從同步。
一、 概述
MySQL從3.23.15版本以後提供資料庫復制(replication)功能,利用該功能可以實現兩個資料庫同步、主從模式、
互相備份模式的功能。本文檔主要闡述了如何在linux系統中利用mysql的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 databbse 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資料庫中的數據進行實時同步
前提條件
您需要在您RDS for MySQL所在的雲賬號下開通阿里雲數據傳輸服務。並 點擊此處
下載dts-ads-writer插件到您的一台伺服器上並解壓(需要該伺服器可以訪問互聯網,建議使用阿里雲ECS以最大限度保障可用性)。伺服器上需要有Java
6或以上的運行環境(JRE/JDK)。
操作步驟
1. 在分析型資料庫上創建目標表,數據更新類型為實時寫入,欄位名稱和MySQL中的建議均相同;
2. 在阿里雲數據傳輸的控制台上創建數據訂閱通道,並記錄這個通道的ID;
(見: https://help.aliyun.com/document_detail/dts/Getting-Started/data-subscription.html),
3. 配置dts-ads-writer/app.conf文件,配置方式如下:
所有配置均保存在app.conf中,運行前請保證配置正確;修改配置後,請重啟writer
基本配置:
{
"dtsAccessId": "", // 擁有數據訂閱通道的雲賬號的accessId, 必須配置
"dtsAccessKey": "", // 擁有數據訂閱通道的雲賬號的accessKey, 必須配置
"dtsTunnelId": "", // 數據訂閱通道的id, 必須配置; 注意是id,不是通道名稱
"adsUserName": "", // 訪問您的分析型資料庫的用戶名(accessId), 必須配置
"adsPassword": "", // 訪問您的分析型資料庫的密碼(accessKey), 必須配置
"adsJdbcUrl": "", // 訪問分析型資料庫的jdbc連接串, 必須配置(格式jdbc:mysql://ip:port/dbname)
"tables": [
{
"source": {
"primaryKeys": [""] // 主鍵定義, 必須配置; 注意RDS和分析型資料庫中的主鍵定義必須一致
"db": "", // 源頭RDS的db名稱, 必須配置
"table": "", // 源頭RDS的table名稱, 必須配置
"skipColumns": ["col1"] // 可選,若在此配置了RDS表某列名,則該列不會同步
},
"target": {
"table": "" // 分析型資料庫表的table名稱, 必須配置
},
"columnMapping": {
"": "" // rds表和ads表的列對應關系:key為rds的列名, value為分析型資料庫的列名,選填,不填則按照列名一一對應
}
}
]
}
tables節點的配置示例,
表示rds_db庫下的rds_table表對應ads_table表,並且rds_table表的col1列對應ads_table表的col1_ads列,
rds_table表的col2列對應ads_table表的col2_ads列
"tables": [
{
"source": {
"primaryKeys": [
"col1",
"col2"
],
"db": "rds_db",
"table": "rds_table"
},
"target": {
"table": "ads_table"
},
"columnMapping": {
"col1": "col1_ads",
"col2": "col2_ads"
}
}
]
注意事項:
1)RDS for MySQL表和分析型資料庫中表的主鍵定義必須完全一致;如果不一致會出現數據不一致問題。如果需要調整RDS/分析型資料庫表的主鍵,建議先停止writer進程;
2)一個插件進程中分析型資料庫db只能是一個,由adsJdbcUrl指定;
3)一個插件進程只能對應一個數據訂閱通道;如果更新通道中的訂閱對象時,需要重啟進程
4)RDS for MySQL中DDL操作不做同步處理;
5)更新app.conf需要重啟插件進程才能生效;
6)如果工具出現bug或某種其它原因需要重新同步歷史數據,只能回溯最近24小時的數據(在阿里雲數據傳輸的控制台中修改消費位點);
7)插件的最大同步性能與運行插件的伺服器的互聯網帶寬和磁碟IOPS成正比。
4. 運行dts-ads-writer/bin/startup.sh(sh bin/startup.sh);
5. 配置監控程序監控進程存活和日誌中的常見錯誤碼。
logs目錄下的日誌中的異常信息均以ErrorCode=XXXX ErrorMessage=XXXX形式給出,可以進行監控
Ⅲ mysql 多個庫怎麼實時同步
實現兩個Mysql資料庫之間同步同步原理:
MySQL 為了實現replication 必須打開bin-log 項,也是打開二進制的MySQL 日誌記錄選項。MySQL 的bin log 二
進制日誌,可以記錄所有影響到資料庫表中存儲記錄內容的sql 操作,如insert / update / delete 操作,而不記錄
select 這樣的操作。因此,我們可以通過二進制日誌把某一時間段內丟失的數據可以恢復到資料庫中(如果二進制日
志中記錄的日誌項,包涵資料庫表中所有數據,那麼, 就可以恢復本地資料庫的全部數據了)。 而這個二進制日誌,
如果用作遠程資料庫恢復,那就是replication 了。這就是使用replication 而不用sync 的原因。這也是為什麼要設
Ⅳ mysql資料庫表數據同步有幾種方法
這一需求在不同機器上的,
1,通過replication
(master-slaves)實現了這兩張表的復制功能,
2,mysql的版本是5.1.54,基於記錄的復制(Row-Based
Replication)。
3,但是在備庫調用存儲過程時出了問題,這個存儲過程中使用了UUID_short()函數,在存儲過程這個函數不能產生新值。
Ⅳ 如何同步兩個mysql資料庫中所有的表
用資料庫快照就能實現啊.
Oracle快照原理及實現總結
Oracle資料庫的快照是一個表,它包含有對一個本地或遠程資料庫上一個或多個表或視圖的查詢的結果。對於中大型資料庫,業務資料庫里所有的數據同步到另外一個處理伺服器上最佳的選擇還是使用SnapShot方式,即快照的方式。
由於工作需要,今天需要將業務資料庫里所有的數據同步到另外一個處理伺服器上。在做方案的時候,想了很多方法,當然最快的辦法還是使用物理熱備的方式。
但是我個人認為如果對於中大型資料庫(我們的資料庫有300G左右)最佳的選擇還是使用SnapShot方式,即快照的方式。
Oracle資料庫的快照是一個表,它包含有對一個本地或遠程資料庫上一個或多個表或視圖的查詢的結果。也就是說快照根本的原理就是將本地或遠程資料庫上的一個查詢結果保存在一個表中。
以下是我建立的Snapshot,目的是從業務資料庫上將數據Copy到處理資料庫上,是不同的兩個伺服器之間對數據。
第一步:在處理伺服器上的Oracle終端,建立database link,業務資料庫伺服器SID為TEST
create database link TEST_DBLINK.US.ORACLE.COM
connect to AMICOS identified by AMICOS
using 'test';
第二步:在業務資料庫上對應的表建立快照日誌
Create snapshot log on A_Table;
第三步:建立Snapshot 快照名稱為:Test_SnapShot
Create snapshot Test_SnapShot
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24
as select * from A_Table@TEST_DBLINK
說明:REFRESH是刷新方法
刷新方式有:COMPLETE和FAST兩種,而START WITH是說明開始執行的時間。
Next是下次執行的時間
而AS以後是構成快照的查詢方法。
相關的方法:
更改快照
ALTER SNAPSHOT Test_SnapShot
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/2;
手動刷新快照 在命令界面執行:
EXEC DBMS_SNAPSHOT.REFRESH('Test_SnapShot ','C');
第一個參數是要刷新的快照名
第二個參數是刷新的方式,F----FAST, C---COMPLETE
查看快照最後刷新的日期
SELECT NAME,LAST_REFRESH
FROM ALL_SNAPSHOT_REFRESH_TIMES;
最後非常的方案:
1:為需要做Snapshot的表建立Snapshot日誌
create snapshot log on t1 with rowid; 這里使用ROWID建立日記的參數
2:採用Fast的方式建立快照,使用rowid做為參考參數
create snapshot fb_test_b refresh fast with rowid start with sysdate next sysdate+1/1440 as select * from fb_test_b@my_dblink;
最好能按照rowid來建立快照。要不然就必須要為表建立Primary Key。
Ⅵ 如何在 MySQL 資料庫之間同步數據表
如何在 MySQL 資料庫之間同步數據表
insert into table table1 select *from table2 where 條件 即可把table2中符合條件的語句同步到table 1中
Ⅶ 如何對MySQL資料庫中的數據進行實時同步
具體操作:
1、在分析型資料庫上創建目標表,數據更新類型為實時寫入,欄位名稱和MySQL中的建議均相同;
2、在阿里雲數據傳輸的控制台上創建數據訂閱通道,並記錄這個通道的ID;
注意事項:
1、RDS for MySQL表和分析型資料庫中表的主鍵定義必須完全一致;如果不一致會出現數據不一致問題。如果需要調整RDS/分析型資料庫表的主鍵,建議先停止writer進程;
2、一個插件進程中分析型資料庫db只能是一個,由adsJdbcUrl指定;
3、一個插件進程只能對應一個數據訂閱通道;如果更新通道中的訂閱對象時,需要重啟進程。
Ⅷ 跨國同步Mysql資料庫可行嗎
如果不考慮網速和數據量的話,可以。你懂得。
Ⅸ 如何配置兩個MySQL資料庫之間的主從同步功能
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。
增加一個用戶同步使用的帳號:
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的許可權才可以。
增加一個資料庫作為同步資料庫:create
database
test;
創建一個表結構:create
table
mytest
(username
varchar(20),password
varchar(20));
修改配置文件:修改A的/etc/my.cnf文件。
在my.cnf配置項中加入下面配置:
server-id
=
1
#Server標識
log-bin
binlog-do-db=test
#指定需要日誌的資料庫
重起資料庫服務:
service
mysqld
restart
查看server-id:
show
variable
like
『server_id』。
Ⅹ 如何配置兩個MySQL資料庫之間的主從同步功能
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。
增加一個用戶同步使用的帳號:
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的許可權才可以。
增加一個資料庫作為同步資料庫:create database test;
創建一個表結構:create table mytest (username varchar(20),password varchar(20));
修改配置文件:修改A的/etc/my.cnf文件。