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

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

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

前言:

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

注:
下級單位的本地PC能訪問到總服務(wù)器時,稱為在線,反之稱為離線

一.解讀

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

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

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

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

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

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

四、實(shí)操

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

2.配置

一階段,先把所有庫的master功能啟動,同時在庫中創(chuàng)建訪問賬號供其他庫使用:
主主庫(總服務(wù)器)
①在mysql安裝路徑下找到啟動文件my.inimy.cnf,將如下信息放在啟動文件的[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時,mysql開啟binlog功能
binlog_format=MIXED:binlog的記錄方式,MIXED為混合記錄方式
sync_binlog=1:

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

server-id=100

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

values為ON表示開啟binlog成功

show variables like '%log_bin%';

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

CREATE USER '被同步庫的賬號名'@'被同步庫的ip' IDENTIFIED BY '被同步庫賬號的密碼';?
GRANT REPLICATION SLAVE ON *.* TO '被同步庫的賬號名'@'被同步庫的ip';

刷新權(quán)限:

flush privileges;

查看master狀態(tài):

show master status;

返回結(jié)果:

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

從主庫:

①在mysql安裝路徑下找到啟動文件my.ini或my.cnf,將如下信息放在啟動文件的[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ù)和主主庫是一樣的,區(qū)別在于從主庫不需要開啟級聯(lián)復(fù)制。記得修改server-id
后邊過程和主主庫的配置是一樣的,畢竟都是開啟master功能的,這里就不贅述了。把產(chǎn)出的形如"mysql-bin.000003"的值記錄下來就好了

一階段各個庫的master功能配置完成

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

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

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

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

啟動slave建立連接:

start slave;

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

show slave status\G

返回結(jié)果:

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

主主庫:

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

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

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

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

有幾個配幾個:

...

啟動slave:

start slave;

查看slave狀態(tài):

show slave status\G

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

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

到此這篇關(guān)于mysql多主雙向和級聯(lián)復(fù)制的文章就介紹到這了,更多相關(guān)mysql多主雙向+級聯(lián)復(fù)制內(nèi)容請搜索腳本之家以前的文章或繼續(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基本用法,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • MySQL游標(biāo)的使用方式

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

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

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

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

    Mac os 解決無法使用localhost連接mysql問題

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

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

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

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

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

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

    優(yōu)化COUNT函數(shù)的查詢在 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ā)器和存儲過程一樣,都是嵌入到SQL中的一段程序,是SQL中管理數(shù)據(jù)的有力工具,本文給大家詳細(xì)介紹SQL觸發(fā)器的定義語法知識,感興趣的朋友一起看看吧
    2023-01-01

最新評論