當前位置:首頁 » 操作系統 » 雙機資料庫

雙機資料庫

發布時間: 2022-11-15 10:37:46

1. 怎樣實現Mysql資料庫雙機熱備份 MySQL

1.mysql資料庫沒有增量備份的機制,當數據量太大的時候備份是一個很大的問題。還好mysql資料庫提供了一種主從備份的機制,其實就是把主資料庫的所有的數據同時寫到備份資料庫中。實現mysql資料庫的熱備份。
2.要想實現雙機的熱備首先要了解主從資料庫伺服器的版本的需求。要實現熱備mysql的版本都要高於3.2,還有一個基本的原則就是作為從資料庫的資料庫版本可以高於主伺服器資料庫的版本,但是不可以低於主伺服器的資料庫版本。

2. windows資料庫雙機HA起不來

windows資料庫雙機HA起不來解決方案:
將壞的這台伺服器重新安裝原來一樣的操作系統,共享磁碟使用U盤代替,保證盤符一致,將資料庫(oracle)重新安裝一遍,並進行調試,與原來一樣!配置完成後,將U盤移除,將該伺服器添加到故障轉移群集中!

3. 怎樣實現MySQL資料庫雙機熱備份

1、MySQL資料庫沒有增量備份的機制,當數據量太大的時候備份是一個很大的問題。還好MySQL資料庫提供了一種主從備份的機制,其實就是把主資料庫的所有的數據同時寫到備份資料庫中。實現MySQL資料庫的熱備份。
2、要想實現雙機的熱備首先要了解主從資料庫伺服器的版本的需求。要實現熱備MySQL的版本都要高於3.2,還有一個基本的原則就是作為從資料庫的資料庫版本可以高於主伺服器資料庫的版本,但是不可以低於主伺服器的資料庫版本。
3、設置主資料庫伺服器:
a.首先查看主伺服器的版本是否是支持熱備的版本。然後查看my.cnf(類Unix)或者my.ini(Windows)中MySQLd配置塊的配置有沒有log-bin(記錄資料庫更改日誌),因為MySQL的復制機制是基於日誌的復制機制,所以主伺服器一定要支持更改日誌才行。然後設置要寫入日誌的資料庫或者不要寫入日誌的資料庫。這樣只有您感興趣的資料庫的更改才寫入到資料庫的日誌中。
server-id=1 //資料庫的id這個應該默認是1就不用改動 log-bin=log_name //日誌文件的名稱, //這里可以制定日誌到別的目錄 如果沒有設置則默認主機名的一個日誌名稱 binlog-do-db=db_name //記錄日誌的資料庫 binlog-ignore-db=db_name //不記錄日誌的資料庫
以上的如果有多個資料庫用","分割開
然後設置同步資料庫的用戶賬號
MySQL> GRANT REPLICATION SLAVE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
4.0.2以前的版本, 因為不支持REPLICATION 要使用下面的語句來實現這個功能
MySQL> GRANT FILE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
設置好主伺服器的配置文件後重新啟動資料庫
b.鎖定現有的資料庫並備份現在的數據
鎖定資料庫
MySQL> FLUSH TABLES WITH READ LOCK;
備份資料庫有兩種辦法一種是直接進入到MySQL的data目錄然後打包你需要備份資料庫的文件夾,第二種是使用MySQLmp的方式來備份資料庫但是要加上"--master-data " 這個參數,建議使用第一種方法來備份資料庫
c.查看主伺服器的狀態
MySQL> show master status\G; +---------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------+----------+--------------+------------------+ | MySQL-bin.003 | 73 | test | manual,MySQL | +---------------+----------+--------------+------------------+
記錄File 和 Position 項目的值,以後要用的。
d.然後把資料庫的鎖定打開
MySQL> UNLOCK TABLES;
4、設置從伺服器
a.首先設置資料庫的配置文件
server-id=n //設置資料庫id默認主伺服器是1 //可以隨便設置但是如果有多台從伺服器則不能重復。 master-host=db-master.mycompany.com //主伺服器的IP地址或者域名 master-port=3306 //主資料庫的埠號 master-user=pertinax //同步資料庫的用戶 master-password=freitag //同步資料庫的密碼 master-connect-retry=60 //如果從伺服器發現主伺服器斷掉,重新連接的時間差 report-host=db-slave.mycompany.com //報告錯誤的伺服器
b.把從主資料庫伺服器備份出來的資料庫導入到從伺服器中
c.然後啟動從資料庫伺服器,如果啟動的時候沒有加上"--skip-slave-start"這個參數則進入到MySQL中
MySQL> slave stop; //停止slave的服務
d.設置主伺服器的各種參數
MySQL> CHANGE MASTER TO -> MASTER_HOST='master_host_name', //主伺服器的IP地址 -> MASTER_USER='replication_user_name', //同步資料庫的用戶 -> MASTER_PASSWORD='replication_password', //同步資料庫的密碼 -> MASTER_LOG_FILE='recorded_log_file_name', //主伺服器二進制日誌的文件名(前面要求記住的參數) -> MASTER_LOG_POS=recorded_log_position; //日誌文件的開始位置(前面要求記住的參數)
e.啟動同步資料庫的線程
MySQL> slave start;
查看資料庫的同步情況吧。如果能夠成功同步那就恭喜了!
查看主從伺服器的狀態
MySQL> SHOW PROCESSLIST\G //可以查看MySQL的進程看看是否有監聽的進程
如果日誌太大清除日誌的步驟如下:
1>.鎖定主資料庫
MySQL> FLUSH TABLES WITH READ LOCK;
2>.停掉從資料庫的slave
MySQL> slave stop;
3>.查看主資料庫的日誌文件名和日誌文件的position
show master status; +---------------+----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +---------------+----------+--------------+------------------+ | louis-bin.001 | 79 | | MySQL | +---------------+----------+--------------+------------------+
4>.解開主資料庫的鎖
MySQL> unlock tables;
5>.更新從資料庫中主資料庫的信息
MySQL> CHANGE MASTER TO -> MASTER_HOST='master_host_name', //主伺服器的IP地址 -> MASTER_USER='replication_user_name', //同步資料庫的用戶 -> MASTER_PASSWORD='replication_password', //同步資料庫的密碼 -> MASTER_LOG_FILE='recorded_log_file_name', //主伺服器二進制日誌的文件名(前面要求記住的參數) -> MASTER_LOG_POS=recorded_log_position; //日誌文件的開始位置(前面要求記住的參數)
6>.啟動從資料庫的slave
MySQL> slave start;

4. 建雙機熱備,需要買2套資料庫嗎如果不需要是怎麼實現的

只需要買一套。資料庫注冊檢測機制:資料庫會在網路中檢測,若有效授權號只有一個在網路中存在運行,那就是允許的,如果同時有兩套資料庫使用同一個授權號運行,那就不行。雙機熱備下資料庫服務始終只在邏輯主機上運行,備機上服務是停止的,故網路中只會有一個有效授權號被資料庫廠商檢測到,所以是不需要買兩套的。
謝謝,求分

5. 雙機資料庫伺服器自動重啟

訪問虛擬ip就好了。例如兩台機器ip為:192.0.0.1;192.0.0.2;對外虛擬ip:192.0.0.10。將webconfig的資料庫連接ip修改為192.0.0.10。

6. 搭建雙機資料庫時,兩台機器的uid和gid如圖所示,操作文檔如下圖所示,這會存在什麼問題,該怎麼修改呢

雙機熱備模式下,SQL2000資料庫分離,附加,置疑,單用戶解除的方法
首先,在任何操作之前,必須要備份資料庫(重要)
一、分離資料庫
1、點擊「程序》Microsoft SQL Server》企業管理》」,打開企業管理器
2、展開伺服器組,然後展開伺服器,選中要分離的資料庫
3、點擊滑鼠右鍵「所有任務》分離資料庫」,出現如下窗口
4、點擊確定,該選定的資料庫就被分離。
5.分離後,把原資料庫裡面.MDF(主數據文件).LDF(事務日誌文件) 這兩個文件復制到目標盤下,例:D盤下
注意事項,只有「使用本資料庫的連接」數為0時,該資料庫才能分離。所以分離資料庫時盡量斷開所有對要分離資料庫操作的連接,如果還有連接資料庫的程序,會出現資料庫的連接狀態窗口,顯示正在連接此資料庫的機器以及名稱,點擊清除按鈕將從伺服器強制斷開現有的連接。
二、附加資料庫
1、在附加資料庫之前,首先要移動資料庫文件
在附加資料庫之前,您必須將與資料庫關聯的 .MDF(主數據文件).LDF(事務日誌文件) 這兩個文件復制到目標硬碟下,或是同一伺服器的不同硬碟目錄下。這兩個文件一般位於C:\Program Files\Microsoft SQL Server\MSSQL\Data目錄下。
2、點擊「程序》Microsoft SQL Server》企業管理》」,打開企業管理器
3、展開伺服器組,然後展開伺服器
4、右擊"資料庫",然後選擇「所有任務》附加資料庫」,彈出窗口

5、輸入要附加的資料庫的MDF名稱。如果不確定文件位於何處,單擊瀏覽("...")搜索。若要確保指定的 MDF 文件正確,請單擊"驗證"。在"附加為"框內,輸入資料庫的名稱。資料庫名稱不能與任何現有資料庫名稱相同。指定資料庫的所有者

6、單擊"確定"按鈕。新附加的資料庫的資料庫節點即創建在"資料庫"文件夾中
重啟雙機
1.此時資料庫分離,附加完成,必須重啟一次雙機
修復置疑
1,雙機重啟後,資料庫置疑

下面所有修復置疑的語法,在沒有特別提到時,默認資料庫都請選擇(Master)資料庫)
2,修復置疑(必須在SQL的查詢分析器中才能進行數據修復置疑工作)
A、 打開查詢分析器,當數據置疑之後在查詢分析器中是看不到置疑的資料庫名稱的,所以進入查詢分析器之後,所選資料庫默認(Master)資料庫即可。(復制下面置疑語法到查詢分析器中執行。
--修復資料庫置疑的語法
SP_configure 'allow update',1
go
RECONFIGURE WITH OVERRIDE
go
update sysdatabases
set status=-32768
where name='zmsoftpos_cs'--資料庫名稱
go
dbcc rebuild_log('zmsoftpos_cs','D:\zmsoftpos_cs_log')--重新建立日誌
Go
update sysdatabases
set status=26
where name='zmsoftpos_cs'
Go
Sp_configure 'allow update',0
Go
Reconfigure with override
GO
備註:其中所有的「zmsoftpos_cs」是置疑的資料庫名稱,請根據客戶實際的置疑資料庫進行更改名稱,其他的內容不變
B、 拷入置疑語法之後,請按F5執行,如果顯示框內顯示的內容如下表示置疑修復成功

C、 置疑修復成功之後,再到如上圖的master下拉框架內就可以選擇所修復的置疑資料庫了,此時置疑是修復成功了,但是並不代表此資料庫就沒有問題了,請暫時不要進軟體,我們還需要檢查資料庫有沒有問題。
3,檢查修復置疑好的資料庫是否正常
D、 打開查詢分析器選中修復好的資料庫名稱,輸入「dbcc checkdb」語法,再按F5執行,根據資料庫的大小執行需要的時間不確定,請耐心等待,執行完之後在顯示框內就會顯示一些相關內容如下圖:

A:如上圖所示,把顯示框拖到最下面,如果「CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤」即表示此資料庫已經好了,不用再修復了,客戶即可進入軟體進行操作了。
備註:(以下的語法就不用再執行了)
修復資料庫只限於DBO使用,執行以下命令(解除單用戶模式)
Sp_dboption 'zmsoftpos_cs','single User', 'False'
B:如果執行「dbcc checkdb」後顯示框內顯示了很多紅色的記錄,那麼表示這個資料庫的有些表還有錯誤需要修復

2, 修復過程如下:(修復過程中語法內的資料庫名稱都根據客戶使用的資料庫進行更改)
A、 首先退出所有的客戶端軟體與企業管理器,只打開查詢分析器,默認資料庫「Master」,拷入如下語法執行:
sp_dboption 'zmsoftpos_cs','single user','true'
備註:其中的資料庫名稱根據客戶使用的資料庫進行更改。此語法是把資料庫設置為「單用戶模式」
B、 設置為單用戶模式之後,拷入如下語法進行多次執行
dbcc checkdb(zmsoftpos_cs,REPAIR_REBUILD)
備註:資料庫名稱根據客戶使用的資料庫進行更改。此語法可以多次執行,也需要多次執行,每執行完一次拖到顯示框內的最後面如果「發現的是0個分配錯誤與O個一致性錯誤」就不用再修復了,只需執行下面語法即可
Sp_dboption 'zmsoftpos_cs','single User', 'False',
備註:下面的語法也不需執行了。
如果執行多次之後:「CHECKDB 發現了 N個分配錯誤和 N個一致性錯誤」不會再次減少時,表示此語法修復不成功,需要進行下面的修復過程。
C、 再把下面語法拷進入,進行多次執行:
dbcc checkdb ('zmsoftpos_cs',REPAIR_allow_data_loss)
備註:此語法的執行與上面「 B 」點中執行的語法過程一樣,執行到此步驟百分之九十以上的資料庫都是可以修復的。如果執行到最後分配錯誤與一致性錯誤還不減少,那麼執行下面的」D」操作
D、 拷入如下語法執行:
exec sp_MSforeachtable 'dbcc dbreindex(''?'')'
備註:執行此語法時,此時的「 Master 」資料庫名稱一定要選擇修復的資料庫名稱,執行才會生效。執行完成之後,再使用「 dbcc checkdb 」語法再檢查一次,如果是「發現的是0個分配錯誤與O個一致性錯誤」表示修復成功,如果是:「CHECKDB 發現了 N個分配錯誤和 N個一致性錯誤」
表示此資料庫壞得很歷害,使用此方法已不能修復成功了。必面使用其他方法了。最後不管修復成不成功都要使用下面的語法結尾:
Sp_dboption 'zmsoftpos_cs','single User', 'False'
備註:把之前的單用戶模塊解除掉
3, 在上面的修復過程中不能解決的問題,再使用BCP命令語法進行修復
例:以超市版本為例,超市版本的資料庫名稱為:zmsoftpos_cs
A、打開帳套管理新建一個相同的帳套,資料庫名稱就會是zmsoftpos_cs_01的帳套名稱,新建好之後,一定要使用後台登錄進去一次,再退出後台。
B、打開查詢分析器,選擇好帳套資料庫「zmsoftpos_cs」把下面的語法拷進入按F5執行:
select 'if EXISTS(SELECT * FROM zmsoftpos_cs_01..sysobjects WHERE name = ' + char(39) + name + char(39) + ')'+char(13)+ 'delete from zmsoftpos_cs_01..'+name from zmsoftpos_cs..sysobjects where type='U'and name not in ('system_sheet_setup','system_mode_file','system_image') order by name
執行完成之後在下面的顯示框架內就會出現如下語法:

使用滑鼠左擊一下圖片中紅色圓圈內的按鈕,就會選中下面的語法,然後再到紅色圓圈內的按鈕上點滑鼠右鍵,點擊另存為,就會出現如下對話:

其中的保存類型一定要先選擇所有文件,然後再到文件名處,填寫好如圖片中輸入的名稱,然後點保存!
C、以上的語法另存為之後,再拷入以下的語法執行:
select 'bcp zmsoftpos_cs..'+name+' out f:\data\'+name+'.txt -c -S127.0.0.1 -Usa_ -P422426362227001' from zmsoftpos_cs..sysobjects where xtype='U'
and name not in ('system_sheet_setup','system_mode_file','system_image') order by name
備註:以上的語法中有一個文件存放路徑,「f:\data\」此路徑根據實際的情況創建,然後更改過來,再執行。執行之後,按照上面的方法,點擊另存為如下圖:

其中的保存類型也要先選擇所有文件,然後再到文件名中填入如圖上的名稱:導出數據.bat文件名,然後再點保存,保存的路徑一定要是上面語法中設置中文件夾的路徑。
D、此時再選擇超市版本的zmsoftpos_cs_01的帳套名稱,然後在左上角的文件中打開找到之前保存的「刪除數據.sql」的文件,把其中的
」delete from」全部替換成「truncate table」,然後再按F5執行。
E、把D點的語法執行完成之後,還是選擇zmsoftpos_cs.01帳套再執行以下的語法:
select 'bcp zmsoftpos_cs_01..'+name+' in f:\data\'+name+'.txt -c -S127.0.0.1 -Usa_ -P422426362227001'
from zmsoftpos_cs..sysobjects where xtype='U' and name not in ('system_sheet_setup','system_mode_file','system_image') order by name
其中的路徑f:\data\一定要與「 C 」點中的路徑一致。按F5執行之後,按照C點的步驟,把顯示框內的語法另存為「導入數據.bat」的文件名,保存到語法的路徑文件夾內。
F、以上的步驟操作完成之後,打開以上語法存放的徑路,先雙擊導出數據文件,雙擊之後就會出現如下對話框架:

此界面表示,正在從原帳套裡面把數據導出來,請您靜心等待,導出完成之後此界面會自動關閉的。
等待完成之後,再雙擊」導入數據.bat」文件,也會出現如上的界面。也請您靜心等待,導出完成之後界面也會自動關閉。
G、以上的步驟都完成之後,請把zmsoftpos_cs_01的帳套,備份一次,然後把zmsoftpos_cs與zmsoftpos_cs_01兩個帳套都刪掉,然後新建超市版本的帳套,把恢復備份的zmsoftpos_cs_01文件,此時您的資料庫修復的工作就大功告成了。。

7. 怎樣實現MySQL資料庫雙機熱備份 MySQL數據同步

還好MySQL資料庫提供了一種主從備份的機制,其實就是把主資料庫的所有的數據同時寫到備份資料庫中。實現MySQL資料庫的熱備份。 2、要想實現雙機的熱備首先要了解主從資料庫伺服器的版本的需求。要實現熱備MySQL的版本都要高於3.2,還有一個基本的原則就是作為從資料庫的資料庫版本可以高於主伺服器資料庫的版本,但是不可以低於主伺服器的資料庫版本。 3、設置主資料庫伺服器: a.首先查看主伺服器的版本是否是支持熱備的版本。然後查看my.cnf(類Unix)或者my.ini(Windows)中MySQLd配置塊的配置有沒有log-bin(記錄資料庫更改日誌),因為MySQL的復制機制是基於日誌的復制機制,所以主伺服器一定要支持更改日誌才行。然後設置要寫入日誌的資料庫或者不要寫入日誌的資料庫。這樣只有您感興趣的資料庫的更改才寫入到資料庫的日誌中。 server-id=1 //資料庫的id這個應該默認是1就不用改動 log-bin=log_name //日誌文件的名稱, //這里可以制定日誌到別的目錄 如果沒有設置則默認主機名的一個日誌名稱 binlog-do-db=db_name //記錄日誌的資料庫 binlog-ignore-db=db_name //不記錄日誌的資料庫以上的如果有多個資料庫用","分割開 然後設置同步資料庫的用戶賬號 MySQL> GRANT REPLICATION SLAVE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';4.0.2以前的版本, 因為不支持REPLICATION 要使用下面的語句來實現這個功能 MySQL> GRANT FILE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';設置好主伺服器的配置文件後重新啟動資料庫 b.鎖定現有的資料庫並備份現在的數據 鎖定資料庫 MySQL> FLUSH TABLES WITH READ LOCK;備份資料庫有兩種辦法一種是直接進入到MySQL的data目錄然後打包你需要備份資料庫的文件夾,第二種是使用MySQLmp的方式來備份資料庫但是要加上"--master-data " 這個參數,建議使用第一種方法來備份資料庫

8. 雙機熱備是資料庫的自身功能嗎

.1)什麼是雙機熱備?
為了確保資料庫產品的穩定性,很多資料庫擁有雙機熱備功能,按工作中的切換方式可分為:主-備方式(Active-Standby方式)和雙主機方式(Active-Active方式),主-備方式即指的是一台伺服器處於某種業務的激活狀態(即Active狀態),另一台伺服器處於該業務的備用狀態(即Standby狀態)。而雙主機方式即指兩種不同業務分別在兩台伺服器上互為主備狀態(即Active-Standby和Standby-Active狀態)。
.2)實現方案
組成雙機熱備的方案主要的三種方式分別為:基於共享存儲(磁碟陣列)的方式,全冗餘方式和復制方式。
(a)基於共享存儲(磁碟陣列)的方式
共享存儲方式主要通過磁碟陣列提供切換後,對數據完整性和連續性的保障。用戶數據一般會放在磁碟陣列上,當主機宕機後,備機繼續從磁碟陣列上取得原有數據。
(b)全冗餘方式
全冗餘方式就是雙機雙存儲,基於單台存儲的傳統雙機熱備方式,確實存在存儲單點故障的情況,為實現存儲冗餘,存儲高可用也已經越來越多的被用戶接受。我們從理解上可以看出,雙機熱備最早是為解決伺服器的計劃性停機與非計劃性宕機的解決方案,但是我們無法實現存儲的計劃性停機與非計劃性宕機帶來的伺服器停機,而存儲作為雙機熱備中唯一存儲數據的設備,它一旦發生故障往往會造成雙機熱備系統全面崩潰。
(c)復制方式
這種方式主要利用數據的同步方式,保證主備伺服器的數據一致性

9. 查看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'@餲.206.70.146' identified by �'

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操作界面後,輸入如下指令:

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

mysql>change master to

>master_host=ཷ.151.15.36',master_user='replicate',master_password=�',

> 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。指令如下

mysql>stop slave;

mysql>reset slave;

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

mysql>start slave;

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

用如下指令進行查看

mysql> show slave statusG;查看下面兩項值均為Yes,即表示設置從伺服器成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

2.4 測試同步

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

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

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

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

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

3.1創建同步用戶

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

伺服器A:

mysql> grant replication slave on *.* to 'replicate'@餲.206.70.146' identified by �'

mysql> flush privileges;

伺服器B:

mysql> grant replication slave on *.* to 'replicate'@ཷ.151.15.36' identified by �'

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:

mysql>change master to

>master_host=餲.206.70.146',master_user='replicate',master_password=�',

> master_log_file=' mysql-bin.000011 ',master_log_pos=497;

伺服器B:

mysql>change master to

>master_host=ཷ.151.15.36',master_user='replicate',master_password=�',

> master_log_file=' mysql-bin.000016 ',master_log_pos=107;

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

mysql>start slave;

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

mysql>show slave statusG;

查看下面兩項值均為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的值被忽略。例如:表內已有一些數據,就會用現在已有的最大自增值做為初始值。

熱點內容
刪除sqlserver服務 發布:2024-05-18 16:47:06 瀏覽:323
密碼盒的密碼是多少錢 發布:2024-05-18 16:43:52 瀏覽:95
linux哪個c語言編譯器好用 發布:2024-05-18 16:30:03 瀏覽:469
搜狐視頻無法緩存 發布:2024-05-18 16:30:03 瀏覽:310
小鳥雲伺服器值不值得買 發布:2024-05-18 16:30:01 瀏覽:899
durbin演算法 發布:2024-05-18 16:29:57 瀏覽:556
qq郵箱訪問受限 發布:2024-05-18 16:23:27 瀏覽:473
電信光纖上傳限制 發布:2024-05-18 16:08:05 瀏覽:911
sql中的limit 發布:2024-05-18 16:05:57 瀏覽:896
啟動ug時伺服器無響應是怎麼回事 發布:2024-05-18 15:48:24 瀏覽:372