欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql多主雙向和級(jí)聯(lián)復(fù)制

 更新時(shí)間:2022年01月26日 11:20:25   作者:啊歐丶  
這篇文章主要介紹了mysql多主雙向和級(jí)聯(lián)復(fù)制,架構(gòu)內(nèi)各個(gè)庫(kù)均同時(shí)開(kāi)啟binlog的master和slave,主主庫(kù)額外開(kāi)啟級(jí)聯(lián)復(fù)制開(kāi)關(guān),下面詳細(xì)內(nèi)容,需要的小伙伴可以參考一下

前言:

公司項(xiàng)目需求,要做一個(gè)內(nèi)網(wǎng)用的物品管理的web系統(tǒng),其中一個(gè)要求是要每個(gè)單位的本地PC在內(nèi)網(wǎng)離線狀態(tài)下(即無(wú)法訪問(wèn)總服務(wù)器)也能使用系統(tǒng)的服務(wù)。項(xiàng)目架構(gòu)設(shè)計(jì)的是在線狀態(tài)時(shí)訪問(wèn)總服務(wù)器,離線時(shí),用戶訪問(wèn)本地服務(wù)(是的,我們?cè)诿總€(gè)本地PC上也部署了服務(wù))。

注:
下級(jí)單位的本地PC能訪問(wèn)到總服務(wù)器時(shí),稱(chēng)為在線,反之稱(chēng)為離線

一.解讀

在離線狀態(tài)的切換,對(duì)于web服務(wù)來(lái)說(shuō)沒(méi)什么影響,畢竟代碼是一樣的,所以不管部署在哪都一樣。區(qū)別就是數(shù)據(jù)庫(kù)中的數(shù)據(jù)。這就要求我們的主庫(kù),以及每個(gè)本機(jī)PC上部署的從庫(kù),他們之間能實(shí)現(xiàn)數(shù)據(jù)的自主同步。

關(guān)于可能的沖突,我們已經(jīng)在業(yè)務(wù)層規(guī)避掉了。不同的單位,不會(huì)update相同的字段。不同的單位,不會(huì)在相同的表中insert。所以現(xiàn)在就只用關(guān)心mysql的自動(dòng)同步,以及離線重連的自動(dòng)續(xù)傳了。

二.web設(shè)計(jì)

1.web后端,我設(shè)置了讀寫(xiě)分離(只是為了裝一下,其實(shí)大可不必,畢竟內(nèi)網(wǎng)并發(fā)量不高)
2.在線時(shí),單位的訪問(wèn),均select本地mysql,update/insert/delete總服務(wù)器mysql
3.離線時(shí),單位的訪問(wèn),均在本地mysql
(這很好實(shí)現(xiàn),不同的域名地址,對(duì)應(yīng)不同的項(xiàng)目,項(xiàng)目?jī)?nèi)提前設(shè)定好數(shù)據(jù)庫(kù)router,由用戶自主決定訪問(wèn)哪個(gè)域名地址即可。實(shí)際上,如果斷網(wǎng)了,總服務(wù)器訪問(wèn)不通,他會(huì)自然而然的去訪問(wèn)本機(jī)服務(wù)的域名地址)

三.mysql設(shè)計(jì)

1.同步方式毋庸置疑用的是mysql自帶的binlog,mysql版本要選擇5.7及以上的版本
2.多主雙向:每個(gè)本機(jī)PC上的mysql,要與總服務(wù)器上的mysql保持雙主同步。
3.總服務(wù)器要開(kāi)啟級(jí)聯(lián)復(fù)制,將下級(jí)單位PC產(chǎn)生的binlog,同步給其他單位的PC。以便其他單位的PC在離線時(shí)可以使用這部分?jǐn)?shù)據(jù)

四、實(shí)操

1.mysql架構(gòu)圖(草稿)

2.配置

一階段,先把所有庫(kù)的master功能啟動(dòng),同時(shí)在庫(kù)中創(chuàng)建訪問(wèn)賬號(hào)供其他庫(kù)使用:
主主庫(kù)(總服務(wù)器)
①在mysql安裝路徑下找到啟動(dòng)文件my.inimy.cnf,將如下信息放在啟動(dòng)文件的[mysqld]下:

log_bin=mysql-bin
binlog_format=MIXED
sync_binlog=1
expire_logs_days=7
binlog-do-db=equip_system
slave-skip-errors=all
master_info_repository=table
relay_log_info_repository=table
log-slave-updates=1

各參數(shù)的釋義:

log_bin=mysql-bin:配置為mysql-bin時(shí),mysql開(kāi)啟binlog功能
binlog_format=MIXED:binlog的記錄方式,MIXED為混合記錄方式
sync_binlog=1:

觸發(fā)binlog由緩存刷新到磁盤(pán)所需要提交的事務(wù)數(shù)量,默認(rèn)為0表示由磁盤(pán)文件系統(tǒng)控制,為1表示每提交一個(gè)事務(wù)即刷新一次(此時(shí)最安全,服務(wù)異常時(shí)丟失的事務(wù)最多只有1個(gè),但I(xiàn)O消耗最大,高并發(fā)下忌用),常見(jiàn)的DBA一般設(shè)置為100。本項(xiàng)目并發(fā)量低,可設(shè)置為1
expire_logs_days=7:binlog有效時(shí)長(zhǎng),設(shè)置為7表示binlog存在7天后刪除
binlog-do-db=equip_system:要同步的數(shù)據(jù)庫(kù)名
slave-skip-errors=all:表示同步出現(xiàn)異常時(shí)要跳過(guò)哪些異常,設(shè)置為all表示所有異常的同步都直接跳過(guò)不管。是否可以設(shè)置為all,要結(jié)合項(xiàng)目的具體業(yè)務(wù)。本項(xiàng)目可以。
master_info_repository=table:可選< table | file >,設(shè)置為table更穩(wěn)定,重啟服務(wù)時(shí)可以自動(dòng)續(xù)傳
relay_log_info_repository=table:可選< table | file >,設(shè)置為table更穩(wěn)定,重啟服務(wù)時(shí)可以自動(dòng)續(xù)傳
log-slave-updates=1:配置為1表示開(kāi)啟級(jí)聯(lián)復(fù)制
記得修改server-id,架構(gòu)內(nèi)互聯(lián)的mysql均不能相同

server-id=100

②重啟sql服務(wù)
③進(jìn)入mysql命令行,執(zhí)行以下命令

values為ON表示開(kāi)啟binlog成功

show variables like '%log_bin%';

有幾個(gè)從主庫(kù),就創(chuàng)建幾個(gè)賬號(hào),注意這個(gè)賬號(hào)密碼提前確定好記好,搞亂了就很頭大:

CREATE USER '被同步庫(kù)的賬號(hào)名'@'被同步庫(kù)的ip' IDENTIFIED BY '被同步庫(kù)賬號(hào)的密碼';?
GRANT REPLICATION SLAVE ON *.* TO '被同步庫(kù)的賬號(hào)名'@'被同步庫(kù)的ip';

刷新權(quán)限:

flush privileges;

查看master狀態(tài):

show master status;

返回結(jié)果:

這個(gè)形如"mysql-bin.000003"的值要記錄上,從主庫(kù)連接時(shí)要用
主主庫(kù)的一階段配置完成了

從主庫(kù):

①在mysql安裝路徑下找到啟動(dòng)文件my.ini或my.cnf,將如下信息放在啟動(dòng)文件的[mysqld]下:

log_bin=mysql-bin
binlog_format=MIXED
sync_binlog=1
expire_logs_days=7
binlog-do-db=equip_system
slave-skip-errors=all
master_info_repository=table
relay_log_info_repository=table

以上參數(shù)和主主庫(kù)是一樣的,區(qū)別在于從主庫(kù)不需要開(kāi)啟級(jí)聯(lián)復(fù)制。記得修改server-id
后邊過(guò)程和主主庫(kù)的配置是一樣的,畢竟都是開(kāi)啟master功能的,這里就不贅述了。把產(chǎn)出的形如"mysql-bin.000003"的值記錄下來(lái)就好了

一階段各個(gè)庫(kù)的master功能配置完成

二階段,配置各個(gè)庫(kù)的slave功能,即將其與要同步的庫(kù)建立連接

從主庫(kù)只需跟主主庫(kù)建立連接即可
在mysql命令行中執(zhí)行以下命令:

設(shè)置連接master的參數(shù):

CHANGE MASTER TO MASTER_HOST='要同步的對(duì)方庫(kù)的ip', MASTER_PORT=對(duì)方庫(kù)的端口號(hào), MASTER_USER='對(duì)方庫(kù)為你創(chuàng)建的賬號(hào)名', MASTER_PASSWORD='對(duì)方庫(kù)為你創(chuàng)建的密碼',MASTER_LOG_FILE='對(duì)方庫(kù)master狀態(tài)產(chǎn)出的File的值';

啟動(dòng)slave建立連接:

start slave;

查看連接狀態(tài):

show slave status\G

返回結(jié)果:

兩個(gè)Running都為Yes時(shí),表示連接成功了。不成功請(qǐng)自行查閱資料debug。我這里是對(duì)方庫(kù)沒(méi)開(kāi)。
其余從主庫(kù)操作一樣,都是設(shè)置連接參數(shù)、啟動(dòng)slave建立連接、查看連接狀態(tài)

主主庫(kù):

主主庫(kù)流程同樣是設(shè)置連接參數(shù)、啟動(dòng)slave建立連接、查看連接狀態(tài)。不同點(diǎn)在于要設(shè)置多個(gè)master連接參數(shù),所以設(shè)置連接參數(shù)的命令有一個(gè)小的變化,要多一個(gè)通道channel的設(shè)置,命令如下:
配置與從主庫(kù)2的連接參數(shù)

CHANGE MASTER TO MASTER_HOST='從主庫(kù)1的ip', MASTER_PORT='從主庫(kù)1的端口號(hào)', MASTER_USER='從主庫(kù)1為你創(chuàng)建的賬號(hào)名', MASTER_PASSWORD='從主庫(kù)1為你創(chuàng)建的密碼',MASTER_LOG_FILE='從主庫(kù)1的master狀態(tài)的File值'for channel '1';

配置與從主庫(kù)2的連接參數(shù):

CHANGE MASTER TO MASTER_HOST='從主庫(kù)2的ip', MASTER_PORT='從主庫(kù)2的端口號(hào)', MASTER_USER='從主庫(kù)2為你創(chuàng)建的賬號(hào)名', MASTER_PASSWORD='從主庫(kù)2為你創(chuàng)建的密碼',MASTER_LOG_FILE='從主庫(kù)2的master狀態(tài)的File值'for channel '2';

有幾個(gè)配幾個(gè):

...

啟動(dòng)slave:

start slave;

查看slave狀態(tài):

show slave status\G

返回結(jié)果有多個(gè)status,依次查看,依次核對(duì)即可。

結(jié)語(yǔ):
該架構(gòu)具有高可用強(qiáng)穩(wěn)定的特性:具有多主一從,一主多從,雙主架構(gòu)的所有優(yōu)勢(shì):1.上方多增加一個(gè)主主庫(kù)2,形成雙機(jī)熱備提高容災(zāi)能力;2.增加大量從主庫(kù),進(jìn)行讀寫(xiě)分離,提高高并發(fā)下的性能;3.內(nèi)網(wǎng)離線產(chǎn)生的數(shù)據(jù)在切換至在線狀態(tài)時(shí)自動(dòng)同步至所有其他庫(kù);

到此這篇關(guān)于mysql多主雙向和級(jí)聯(lián)復(fù)制的文章就介紹到這了,更多相關(guān)mysql多主雙向+級(jí)聯(lián)復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用RPM包安裝MySQL 5.7.18的教程

    使用RPM包安裝MySQL 5.7.18的教程

    這篇文章主要介紹了使用RPM包安裝MySQL 5.7.18的教程,需要的朋友可以參考下
    2017-04-04
  • MySQL Workbench基本用法超詳細(xì)教程

    MySQL Workbench基本用法超詳細(xì)教程

    本文詳細(xì)講解了MySQL Workbench基本用法,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • MySQL游標(biāo)的使用方式

    MySQL游標(biāo)的使用方式

    這篇文章主要介紹了MySQL游標(biāo)的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MYSQL中DML與DDL常用語(yǔ)句小結(jié)

    MYSQL中DML與DDL常用語(yǔ)句小結(jié)

    DML是一類(lèi)用于查詢(xún)和操作數(shù)據(jù)的 SQL 語(yǔ)句,DDL是一類(lèi)用于定義和管理數(shù)據(jù)庫(kù)結(jié)構(gòu)及對(duì)象的 SQL 語(yǔ)句,本文為大家整理了一些DML與DDL的常用語(yǔ)句,希望對(duì)大家有所幫助
    2023-12-12
  • Mac os 解決無(wú)法使用localhost連接mysql問(wèn)題

    Mac os 解決無(wú)法使用localhost連接mysql問(wèn)題

    今天在mac上搭建好了php的環(huán)境,把先前在window、linux下運(yùn)行良好的程序放在mac上,居然出現(xiàn)訪問(wèn)不了數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)連接的host用的是localhost,可以確認(rèn)數(shù)據(jù)庫(kù)配置是正確的,下面特為大家分享下
    2014-05-05
  • MYSQL插入處理重復(fù)鍵值的幾種方法

    MYSQL插入處理重復(fù)鍵值的幾種方法

    當(dāng)unique列在一個(gè)UNIQUE鍵上插入包含重復(fù)值的記錄時(shí),默認(rèn)insert的時(shí)候會(huì)報(bào)1062錯(cuò)誤,MYSQL有三種不同的處理方法,下面我們分別介紹。
    2012-09-09
  • 基于MySQL Master Slave同步配置的操作詳解

    基于MySQL Master Slave同步配置的操作詳解

    本篇文章是對(duì)MySQL Master Slave 同步配置進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL COUNT函數(shù)的使用與優(yōu)化

    MySQL COUNT函數(shù)的使用與優(yōu)化

    優(yōu)化COUNT函數(shù)的查詢(xún)?cè)?MySQL 中最容易被誤解的話題中能夠排進(jìn)前10名,我們可以在網(wǎng)上搜索了解更多關(guān)于 COUNT 優(yōu)化的誤解信息。在進(jìn)行優(yōu)化前,理解 COUNT 到底做了什么很重要。
    2021-05-05
  • mysql生成指定位數(shù)的隨機(jī)數(shù)及批量生成隨機(jī)數(shù)的方法

    mysql生成指定位數(shù)的隨機(jī)數(shù)及批量生成隨機(jī)數(shù)的方法

    這篇文章主要介紹了mysql生成指定位數(shù)的隨機(jī)數(shù)及批量生成隨機(jī)數(shù)的方法,文中給大家介紹了常用mysql函數(shù),需要的朋友可以參考下
    2018-09-09
  • SQL觸發(fā)器定義與使用

    SQL觸發(fā)器定義與使用

    SQL的觸發(fā)器和存儲(chǔ)過(guò)程一樣,都是嵌入到SQL中的一段程序,是SQL中管理數(shù)據(jù)的有力工具,本文給大家詳細(xì)介紹SQL觸發(fā)器的定義語(yǔ)法知識(shí),感興趣的朋友一起看看吧
    2023-01-01

最新評(píng)論