包含mysql同步數據庫表的詞條

本文目錄一覽:

如何同步兩個mysql數據庫中所有的表

用數據庫快照就能實現啊.

Oracle快照原理及實現總結

Oracle數據庫的快照是一個表,它包含有對一個本地或遠程數據庫上一個或多個表或視圖的查詢的結果。對於中大型數據庫,業務數據庫里所有的數據同步到另外一個處理服務器上最佳的選擇還是使用SnapShot方式,即快照的方式。

由於工作需要,今天需要將業務數據庫里所有的數據同步到另外一個處理服務器上。在做方案的時候,想了很多方法,當然最快的辦法還是使用物理熱備的方式。

但是我個人認為如果對於中大型數據庫(我們的數據庫有300G左右)最佳的選擇還是使用SnapShot方式,即快照的方式。

Oracle數據庫的快照是一個表,它包含有對一個本地或遠程數據庫上一個或多個表或視圖的查詢的結果。也就是說快照根本的原理就是將本地或遠程數據庫上的一個查詢結果保存在一個表中。

以下是我建立的Snapshot,目的是從業務數據庫上將數據Copy到處理數據庫上,是不同的兩個服務器之間對數據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 數據庫之間同步數據表

方案如下:

如果A與B之間有網絡互通,哪怕就是每天或每周的限時互通,那麼就可以用MySQL同步機制(MySQL Replication )實現,方便快捷,有數據庫來保證數據的一致性。 把B配置成A的slave機器,聯機一次就同步一次,自動同步,或手動start slave。

如何對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數據庫表數據同步有幾種方法

這一需求在不同機器上的,

1,通過replication

(master-slaves)實現了這兩張表的複製功能,

2,mysql的版本是5.1.54,基於記錄的複製(Row-Based

Replication)。

3,但是在備庫調用存儲過程時出了問題,這個存儲過程中使用了UUID_short()函數,在存儲過程這個函數不能產生新值。

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OEBA的頭像OEBA
上一篇 2024-10-14 18:42
下一篇 2024-10-14 18:42

相關推薦

  • 如何修改mysql的端口號

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

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

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

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

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

    編程 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
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28

發表回復

登錄後才能評論