mysql數據庫本地同步的簡單介紹

本文目錄一覽:

如何對MySQL數據庫中的數據實時同步?

具體操作:

1、在分析型數據庫上創建目標表,數據更新類型為實時寫入,字段名稱和MySQL中的建議均相同;

2、在阿里雲數據傳輸的控制台上創建數據訂閱通道,並記錄這個通道的ID;

3、 配置dts-ads-writer/app.conf文件,配置方式如下:所有配置均保存在app.conf中,運行前請保證配置正確;修改配置後,請重啟writer,基本配置:

注意事項:

1、RDS for MySQL表和分析型數據庫中表的主鍵定義必須完全一致;如果不一致會出現數據不一致問題。如果需要調整RDS/分析型數據庫表的主鍵,建議先停止writer進程;

2、一個插件進程中分析型數據庫db只能是一個,由adsJdbcUrl指定;

3、一個插件進程只能對應一個數據訂閱通道;如果更新通道中的訂閱對象時,需要重啟進程。

本地MySQL數據庫怎麼與遠程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 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

positiion: 198

Binlog_Do_DB: test,test

Binlog_Ignore_DB:

1 row in set (0.08 sec)

3.2.2 配置B 為slave

1、增加一個數據庫作為同步數據庫:

create databbse 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.119

Master_User: backup

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysqld-bin.000001

Read_Master_Log_Pos: 98

Relay_Log_File: mysqld-relay-bin.000003

Relay_Log_Pos: 236

Relay_Master_Log_File: mysqld-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: test,test

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 98

Relay_Log_Space: 236

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

1 row in set (0.01 sec)

3.2.3 驗證配置

分別使用insert, delete , update在A主機進行增刪改查數據庫;查看B主機的數據庫是否與A主機一致;若一致,則配

置成功。

3.3雙機互備模式

如果在A主機加入slave設置,在B主機加入master設置,則可以做B-A的同步。

1、在A主機的配置文件中 mysqld配置項加入以下設置:

master-host=10.10.8.112

master-user=backup

master-password=1234

replicate-do-db=test

master-connect-retry=10

2、在B的配置文件中 mysqld配置項加入以下設置:

log-bin

binlog-do-db=test

注意:當有錯誤產生時,*.err日誌文件同步的線程退出,當糾正錯誤後,要讓同步機制進行工作,運行slave

start。

重起A、B機器,則可以實現雙向的熱備份。

總之,成功完成以上配置後,在主服務器A的test庫里添加數據或刪除數據,在從服務器B的test庫里馬上也能

看到相應的變更。兩台服務器的同步操作可以說是瞬間完成的。

本地一個軟件的mysql數據庫怎麼和php網站上mysql數據庫同步起來?

方法一:手工維護,一個數據庫有改動,立即備份,導入到另一個數據庫,保證二者數據一致。這個比較麻煩。

方法二: 修改兩個系統的數據庫更新部分代碼,不論是哪個系統的數據庫發生改變,同時寫入兩個數據庫。(建議)

方法三:在數據庫裡面需要同步的數據表上面添加相應的觸發器及存儲過程,寫入數據到另外數據庫。(建議)

有2個Mysql數據庫,一個本地,一個線上,需要同步兩個數據庫的數據。 但是數據表的結構不一樣,怎麼同步

1。表結構相同的表,且在同一數據庫(如,table1,table2)

Sql :insert into table1 select * from table2 (完全複製)

insert into table1 select distinct * from table2(不複製重複紀錄)

insert into table1 select top 5 * from table2 (前五條紀錄)

2。 不在同一數據庫中(如,db1 table1,db2 table2)

sql: insert into db1..table1 select * from db2..table2 (完全複製)

insert into db1..table1 select distinct * from db2table2(不複製重複紀錄)

insert into tdb1..able1 select top 5 * from db2table2 (前五條紀錄)

如何對MySQL數據庫中的數據進行實時同步

前提條件

您需要在您RDS for MySQL所在的雲賬號下開通阿里雲數據傳輸服務。並 點擊此處

下載dts-ads-writer插件到您的一台服務器上並解壓(需要該服務器可以訪問互聯網,建議使用阿里雲ECS以最大限度保障可用性)。服務器上需要有Java

6或以上的運行環境(JRE/JDK)。

操作步驟

1. 在分析型數據庫上創建目標表,數據更新類型為實時寫入,字段名稱和MySQL中的建議均相同;

2. 在阿里雲數據傳輸的控制台上創建數據訂閱通道,並記錄這個通道的ID;

(見: ),

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形式給出,可以進行監控

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/230311.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-10 18:15
下一篇 2024-12-10 18:15

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的“畫筆”在窗口中繪製…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28

發表回復

登錄後才能評論