mysql資料庫雙機熱備份,SQL資料庫雙機熱備

本文目錄一覽:

mysql雙機熱備份

mysql從3.23.15版本以後提供資料庫複製功能。利用該功能可以實現兩個資料庫同步,主從模式,互相備份模式的功能。

mysql從3.23.15版本以後提供資料庫複製功能。利用該功能可以實現兩個資料庫同步,主從模式,互相備份模式的功能。

資料庫同步複製功能的設置都在mysql的設置文件中體現。mysql的配置文件(一般是my.cnf)

在unix環境下在/etc/mysql/my.cnf

或者在mysql用戶的home目錄下面的my.cnf。

window環境中,如果c:根目錄下有my.cnf文件則取該配置文件。當運行mysql的winmysqladmin.exe工具時候,該工具會把c:根目錄下的my.cnf

命名為mycnf.bak。並在winnt目錄下創建my.ini。mysql伺服器啟動時候會讀該配置文件。所以可以把my.cnf中的內容拷貝到my.ini文件中,用my.ini文件作為mysql伺服器的配置文件。

設置方法:

設置範例環境:

操作系統:window2000

professional

mysql:4.0.4-beta-max-nt-log

A

ip:10.10.10.22

B

ip:10.10.10.53

A:設置

1.增加一個用戶最為同步的用戶帳號:

GRANT

FILE

ON

*.*

TO

backup@”10.10.10.53”

IDENTIFIED

BY

『1234』

2.增加一個資料庫作為同步資料庫:

create

database

backup

B:設置

1.增加一個用戶最為同步的用戶帳號:

GRANT

FILE

ON

*.*

TO

backup@”10.10.10.22”

IDENTIFIED

BY

『1234』

2.增加一個資料庫作為同步資料庫:

create

database

backup

主從模式:A-B

A為master

修改A

mysql的my.ini文件。在mysqld配置項中加入下面配置:

server-id=1

log-bin

#設置需要記錄log

可以設置log-bin=c:mysqlbakmysqllog

設置日誌文件的目錄,

#其中mysqllog是日誌文件的名稱,mysql將建立不同擴展名,文件名為mysqllog的幾個日誌文件。

binlog-do-db=backup

#指定需要日誌的資料庫

重起資料庫服務。

用show

master

status

命令看日誌情況。

B為slave

修改B

mysql的my.ini文件。在mysqld配置項中加入下面配置:

server-id=2

master-host=10.10.10.22

master-user=backup

#同步用戶帳號

master-password=1234

master-port=3306

master-connect-retry=60

預設重試間隔60秒

replicate-do-db=backup

告訴slave只做backup資料庫的更新

重起資料庫

用show

slave

status看同步配置情況。

注意:由於設置了slave的配置信息,mysql在資料庫目錄下生成master.info

所以如有要修改相關slave的配置要先刪除該文件。否則修改的配置不能生效。

雙機互備模式。

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

在A的配置文件中

mysqld

配置項加入以下設置:

master-host=10.10.10.53

master-user=backup

master-password=1234

replicate-do-db=backup

master-connect-retry=10

在B的配置文件中

mysqld

配置項加入以下設置:

log-bin=c:mysqllogmysqllog

binlog-do-db=backup

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

start

重起AB機器,則可以實現雙向的熱備。

測試:

向B批量插入大數據量表AA(1872000)條

A資料庫每秒鐘可以更新2500條數據。

查看mysql是否為雙機

mysql雙機熱備實現原理分析,在本文經過深思熟慮和多次用不同的方式實測試後。最後在這篇文章中,用一個小例子來完成mysql雙機熱備的實現。

Mysql資料庫沒有增量備份的機制,當數據量太大的時候備份是一個很大的問題。還好mysql資料庫提供了一種主從備份的機制,其實就是把主資料庫的所有的數據同時寫到備份的資料庫中。實現mysql資料庫的熱備份。

要想實現雙機的熱備,首先要了解主從資料庫伺服器的版本的需求。要實現熱備mysql的版本都高於3.2。還有一個基本的原則就是作為從資料庫的數據版本可以高於主伺服器資料庫的版本,但是不可以低於主伺服器的資料庫版本。

當然要實現mysql雙機熱備,除了mysql本身自帶的REPLICATION功能可以實現外,也可以用Heartbeat這個開源軟體來實現。不過本文主要還是講如何用mysql自帶的REPLICATION來實現mysql雙機熱備的功能。

1. 準備伺服器

由於Mysql不同版本之間的(二進位日誌)binlog格式可能會不太一樣,因此最好的搭配組合是主(Master)伺服器的Mysql版本和從(Slave)伺服器版本相同或者更低,主伺服器的版本肯定不能高於從伺服器版本。

本次我用於測試的兩台伺服器版本都是Mysql-5.5.17。

2. Mysql 建立主-從伺服器雙機熱備配置步驟

2.1環境描述

A伺服器(主伺服器Master):59.151.15.36

B伺服器(從伺服器Slave):218.206.70.146

主從伺服器的Mysql版本皆為5.5.17

Linux環境下

將主伺服器需要同步的資料庫內容進行備份一份,上傳到從伺服器上,保證始初時兩伺服器中資料庫內容一致。

不過這裡說明下,由於我是利用Mysql在安裝後就有的資料庫test進行測試的,所以兩台伺服器裡面是沒有建立表的,只不分別在test裡面建立了同樣的一張空表tb_mobile;

Sql語句如下:

mysql create table tb_mobile( mobile VARCHAR(20) comment’手機號碼’, time timestamp DEFAULT now() comment’時間’ );

2.2 主伺服器Master配置

2.2.1 創建同步用戶

進入mysql操作界面,在主伺服器上為從伺服器建立一個連接帳戶,該帳戶必須授予REPLICATION SLAVE許可權。因為從mysql版本3.2以後就可以通過REPLICATION對其進行雙機熱備的功能操作。

操作指令如下:

mysql grant replication slave on *.* to ‘replicate’@’218.206.70.146’ identified by ‘123456’;

mysql flush privileges;

創建好同步連接帳戶後,我們可以通過在從伺服器(Slave)上用replicat帳戶對主伺服器(Master)資料庫進行訪問下,看下是否能連接成功。

在從伺服器(Slave)上輸入如下指令:

[root@YD146 ~]# mysql -h59.151.15.36 -ureplicate -p123456

如果出現下面的結果,則表示能登錄成功,說明可以對這兩台伺服器進行雙機熱備進行操作。

2.2.2 修改mysql配置文件

如果上面的準備工作做好,那邊我們就可以進行對mysql配置文件進行修改了,首先找到mysql配置所有在目錄,一般在安裝好mysql服務後,都會將配置文件複製一一份出來放到/ect目錄下面,並且配置文件命名為:my.cnf。即配置文件準確目錄為/etc/my.cnf

(Linux下用rpm包安裝的MySQL是不會安裝/etc/my.cnf文件的,

至於為什麼沒有這個文件而MySQL卻也能正常啟動和作用,在點有兩個說法,

第一種說法,my.cnf只是MySQL啟動時的一個參數文件,可以沒有它,這時MySQL會用內置的默認參數啟動,

第二種說法,MySQL在啟動時自動使用/usr/share/mysql目錄下的my-medium.cnf文件,這種說法僅限於rpm包安裝的MySQL,

解決方法,只需要複製一個/usr/share/mysql目錄下的my-medium.cnf文件到/etc目錄,並改名為my.cnf即可。)

找到配置文件my.cnf打開後,在[mysqld]下修改即可:

[mysqld]

server-id = 1

log-bin=mysql-bin //其中這兩行是本來就有的,可以不用動,添加下面兩行即可

binlog-do-db = test

binlog-ignore-db = mysql

2.2.3 重啟mysql服務

修改完配置文件後,保存後,重啟一下mysql服務,如果成功則沒問題。

2.2.4 查看主伺服器狀態

進入mysql服務後,可通過指令查看Master狀態,輸入如下指令:

注意看裡面的參數,特別前面兩個File和Position,在從伺服器(Slave)配置主從關係會有用到的。

註:這裡使用了鎖表,目的是為了產生環境中不讓進新的數據,好讓從伺服器定位同步位置,初次同步完成後,記得解鎖。

2.3 從伺服器Slave配置

2.3.1修改配置文件

因為這裡面是以主-從方式實現mysql雙機熱備的,所以在從伺服器就不用在建立同步帳戶了,直接打開配置文件my.cnf進行修改即可,道理還是同修改主伺服器上的一樣,只不過需要修改的參數不一樣而已。如下:

[mysqld]

server-id = 2

log-bin=mysql-bin

replicate-do-db = test

replicate-ignore-db = mysql,information_schema,performance_schema

2.3.2重啟mysql服務

修改完配置文件後,保存後,重啟一下mysql服務,如果成功則沒問題。

2.3.3用change mster 語句指定同步位置

這步是最關鍵的一步了,在進入mysql操作界面後,輸入如下指令:

mysqlstop slave; //先停步slave服務線程,這個是很重要的,如果不這樣做會造成以下操作不成功。

mysqlchange master to

master_host=’59.151.15.36′,master_user=’replicate’,master_password=’123456′,

master_log_file=’ mysql-bin.000016 ‘,master_log_pos=107;

註:master_log_file, master_log_pos由主伺服器(Master)查出的狀態值中確定。也就是剛剛叫注意的。master_log_file對應File, master_log_pos對應Position。Mysql 5.x以上版本已經不支持在配置文件中指定主伺服器相關選項。

遇到的問題,如果按上面步驟之後還出現如下情況:

則要重新設置slave。指令如下

mysqlstop slave;

mysqlreset slave;

之後停止slave線程重新開始。成功後,則可以開啟slave線程了。

mysqlstart slave;

2.3.4查看從伺服器(Slave)狀態

用如下指令進行查看

mysql show slave status\G;

查看下面兩項值均為Yes,即表示設置從伺服器成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

2.4 測試同步

之前開始已經說過了在資料庫test只有一個表tb_mobile沒有數據,我們可以先查看下兩伺服器的資料庫是否有數據:

Master:59.151.15.36

Slave:218.206.70.146

好了,現在可以在Master伺服器中插入數據看下是否能同步。

Master:59.151.15.36

Slave:218.206.70.146

可以從上面兩個截圖上看出,在Master伺服器上進行插入的數據在Slave伺服器可以查到,這就表示雙機熱備配置成功了。

3. Mysql 建立主-主伺服器雙機熱備配置步驟

伺服器還是用回現在這兩台伺服器

3.1創建同步用戶

同時在主從伺服器建立一個連接帳戶,該帳戶必須授予REPLIATION SLAVE許可權。這裡因為伺服器A和伺服器B互為主從,所以都要分別建立一個同步用戶。

伺服器A:

mysql grant replication slave on *.* to ‘replicate’@’218.206.70.146’ identified by ‘123456’;

mysql flush privileges;

伺服器B:

mysql grant replication slave on *.* to ‘replicate’@’59.151.15.36’ identified by ‘123456’;

mysql flush privileges;

3.2修改配置文件my.cnf

伺服器A

[mysqld]

server-id = 1

log-bin=mysql-bin

binlog-do-db = test

binlog-ignore-db = mysql

#主-主形式需要多添加的部分

log-slave-updates

sync_binlog = 1

auto_increment_offset = 1

auto_increment_increment = 2

replicate-do-db = test

replicate-ignore-db = mysql,information_schema

伺服器B:

[mysqld]

server-id = 2

log-bin=mysql-bin

master-slave need

replicate-do-db = test

replicate-ignore-db = mysql,information_schema,performance_schema

#主-主形式需要多添加的部分

binlog-do-db = test

binlog-ignore-db = mysql

log-slave-updates

sync_binlog = 1

auto_increment_offset = 2

auto_increment_increment = 2

3.3分別重啟A伺服器和B伺服器上的mysql服務

重啟伺服器方式和上面的一樣,這裡就不做講解了。

3.4分別查A伺服器和B伺服器作為主伺服器的狀態

伺服器A:

伺服器B:

3.5分別在A伺服器和B伺服器上用change master to 指定同步位置

伺服器A:

mysqlchange master to

master_host=’218.206.70.146′,master_user=’replicate’,master_password=’123456′,

master_log_file=’ mysql-bin.000011 ‘,master_log_pos=497;

伺服器B:

mysqlchange master to

master_host=’59.151.15.36′,master_user=’replicate’,master_password=’123456′,

master_log_file=’ mysql-bin.000016 ‘,master_log_pos=107;

3.6 分別在A和B伺服器上重啟從服務線程

mysqlstart slave;

3.7 分別在A和B伺服器上查看從伺服器狀態

mysqlshow slave status\G;

查看下面兩項值均為Yes,即表示設置從伺服器成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

3.8 測試主-主同步例子

測試伺服器A:

在伺服器A上插入一條語句如下圖所示:

之後在伺服器B上查看是否同步如下圖所示:

測試伺服器B:

在伺服器B上插入一條語句如下圖所示:

然後在從伺服器A上查看是否有同步數據如下圖所示:

最後從結果可以看出主-主形式的雙機熱備是能成功實現的。

4. 配置參數說明

Server-id

ID值唯一的標識了複製群集中的主從伺服器,因此它們必須各不相同。Master_id必須為1到232-1之間的一個正整數值,slave_id值必須為2到232-1之間的一個正整數值。

Log-bin

表示打開binlog,打開該選項才可以通過I/O寫到Slave的relay-log,也是可以進行replication的前提。

Binlog-do-db

表示需要記錄二進位日誌的資料庫。如果有多個數據可以用逗號分隔,或者使用多個binlog-do-dg選項。

Binglog-ingore-db

表示不需要記錄二進位日誌的資料庫,如果有多個資料庫可用逗號分隔,或者使用多binglog-ignore-db選項。

Replicate-do-db

表示需要同步的資料庫,如果有多個數據可用逗號分隔,或者使用多個replicate-do-db選項。

Replicate-ignore-db

表示不需要同步的資料庫,如果有多個資料庫可用逗號分隔,或者使用多個replicate-ignore-db選項。

Master-connect-retry

master-connect-retry=n表示從伺服器與主伺服器的連接沒有成功,則等待n秒(s)後再進行管理方式(默認設置是60s)。如果從伺服器存在mater.info文件,它將忽略些選項。

Log-slave-updates

配置從庫上的更新操作是否寫入二進位文件,如果這台從庫,還要做其他從庫的主庫,那麼就需要打這個參數,以便從庫的從庫能夠進行日誌同步。

Slave-skip-errors

在複製過程,由於各種原因導致binglo中的sql出錯,默認情況下,從庫會停止複製,要用戶介入。可以設置slave-skip-errors來定義錯誤號,如果複製過程中遇到的錯誤是定義的錯誤號,便可以路過。如果從庫是用來做備份,設置這個參數會存在數據不一致,不要使用。如果是分擔主庫的查詢壓力,可以考慮。

Sync_binlog=1 Or N

Sync_binlog的默認值是0,這種模式下,MySQL不會同步到磁碟中去。這樣的話,Mysql依賴操作系統來刷新二進位日誌binary log,就像操作系統刷新其他文件的機制一樣。因此如果操作系統或機器(不僅僅是Mysql伺服器)崩潰,有可能binlog中最後的語句丟失了。要想防止這種情況,可以使用sync_binlog全局變數,使binlog在每N次binlog寫入後與硬碟同步。當sync_binlog變數設置為1是最安全的,因為在crash崩潰的情況下,你的二進位日誌binary log只有可能丟失最多一個語句或者一個事務。但是,這也是最慢的一種方式(除非磁碟有使用帶蓄電池後備電源的緩存cache,使得同步到磁碟的操作非常快)。

即使sync_binlog設置為1,出現崩潰時,也有可能表內容和binlog內容之間存在不一致性。如果使用InnoDB表,Mysql伺服器處理COMMIT語句,它將整個事務寫入binlog並將事務提交到InnoDB中。如果在兩次操作之間出現崩潰,重啟時,事務被InnoDB回滾,但仍然存在binlog中。可以用-innodb-safe-binlog選項來增加InnoDB表內容和binlog之間的一致性。(注釋:在Mysql 5.1版本中不需要-innodb-safe-binlog;由於引入了XA事務支持,該選項作廢了),該選項可以提供更大程度的安全,使每個事務的binlog(sync_binlog=1)和(默認情況為真)InnoDB日誌與硬碟同步,該選項的效果是崩潰後重啟時,在滾回事務後,Mysql伺服器從binlog剪切回滾的InnoDB事務。這樣可以確保binlog反饋InnoDB表的確切數據等,並使從伺服器保持與主伺服器保持同步(不接收回滾的語句)。

Auto_increment_offset和Auto_increment_increment

Auto_increment_increment和auto_increment_offset用於主-主伺服器(master-to-master)複製,並可以用來控制AUTO_INCREMENT列的操作。兩個變數均可以設置為全局或局部變數,並且假定每個值都可以為1到65,535之間的整數值。將其中一個變數設置為0會使該變數為1。

這兩個變數影響AUTO_INCREMENT列的方式:auto_increment_increment控制列中的值的增量值,auto_increment_offset確定AUTO_INCREMENT列值的起點。

如果auto_increment_offset的值大於auto_increment_increment的值,則auto_increment_offset的值被忽略。例如:表內已有一些數據,就會用現在已有的最大自增值做為初始值。

linux下用mysql-5.5.17如何實現雙機熱備

雙機熱備說明現成資料很多;我簡單說下步驟:

主機為A,從機為B

A的操作,

用root賬戶登錄,mysql -u root -p密碼

create database wangxh; 創建同步資料庫

grant all privileges on wangxh.* to ‘tom’@’B的ip’ identified by ‘密碼’; //添加用於B機同步的賬號tom

grant replication slave on *.* to ‘tom’@’B的ip’; //這個許可權需要額外加

flush privileges; 刷新許可權表,不然tom用戶的許可權無效

關閉mysql服務

編輯my.cnf,在[mysqld]下加上

server-id=1,//主機id,可以任意數字,一般都為1

log-bin=mysql-bin.index //生成的bin-log文件名,可以在mysql數據文件夾下找到

binlog_format=row //默認是STATEMENT,建議用row

binlog-do-db=wangxh –允許被複制的庫名,可以設置多個,用「,」分開

B的操作,

用root賬戶登錄,mysql -u root -p密碼

create database wangxh; 創建同步資料庫

編輯my.cnf,在[mysqld]下加上

server-id=2 //只要不和A的server-id重複即可

master-host=A的ip

master-user=tom

master-password=tom的密碼

replicate-do-db=back;複製的資料庫;

最後保存文件,然後重啟AB機器的mysql

登錄B的mysql執行,start slave

查看slave狀態,

show slave status;

mysql雙機熱備+heartbeat心跳如何實現A掛掉後,B接管所有服務,A啟用後同步數據移交許可權這是哪種配置模式

很明顯是熱備,雙機熱備。不過你們老闆心也大,雙機熱備看起來簡單,但是真正要做成穩定、商用不是那麼容易的,需要大量的基礎用戶數據範圍,熱備軟體的機制和策略才有實用性,兄弟,慢慢受苦吧

本地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資料庫之間的主從同步功能?

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』。

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

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

相關推薦

  • 如何修改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

發表回復

登錄後才能評論