最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql數(shù)據(jù)庫主從同步的實(shí)現(xiàn)示例

 更新時間:2025年06月23日 09:43:48   作者:Mr_葉落飄霜  
本文主要介紹了Mysql數(shù)據(jù)庫主從同步的實(shí)現(xiàn)示例,包括配置文件設(shè)置、賬戶創(chuàng)建、同步命令及錯誤處理,具有一定的參考價值,感興趣的可以了解一下

MySQL數(shù)據(jù)庫的主從復(fù)制是一種常見的數(shù)據(jù)備份和高可用性解決方案。通過配置主從復(fù)制,可以實(shí)現(xiàn)將數(shù)據(jù)從一個MySQL服務(wù)器(主服務(wù)器)同步到另一個(從服務(wù)器)。

前言

mysql數(shù)據(jù)庫的主從同步設(shè)置需要修改主庫和從庫的配置文件,并執(zhí)行同步指令,步驟并不復(fù)雜。但是在部署過程中還是遇到一些問題,找了很久好像沒人遇到相同的問題,因此將部署流程與遇到的問題分享出來,希望遇到同樣問題時有參考依據(jù)。

1.主庫(主服務(wù)器)配置

1.1修改主庫配置文件,啟用二進(jìn)制日志

數(shù)據(jù)庫配置文件所在目錄:
CentOS7安裝mysql后,配置文件默認(rèn)路徑為:/etc/my.cnf
Windows安裝mysql后,配置文件默認(rèn)路徑為:C:\ProgramData\MySQL\MySQL Server 5.7
本次安裝的主服務(wù)器CentOS7中,因此需要進(jìn)入到/ect目錄下,修改my.cnf配置文件:

#進(jìn)入etc目錄下
cd /etc
#編輯mysql配置文件
vi my.cnf

在配置文件[mysqld]最后一行,添加以下內(nèi)容:

#mysql主庫配置
server_id = 88               #集群唯一標(biāo)識,主庫從庫不能重復(fù)(值為數(shù)據(jù)庫IP)
log_bin = mysql-bin          #開啟二進(jìn)制日志
expire_logs_days = 7         #日志有效期(天)

請?zhí)砑訄D片描述

內(nèi)容說明:#集群唯一標(biāo)識,主庫從庫不能重復(fù),建議值取數(shù)據(jù)庫IP,避免重復(fù)(該項必須配置)
server_id = 88
#開啟mysql二進(jìn)制日志(該項必須配置)
log_bin = mysql-bin
#設(shè)置同步日志有效期(天),到期自動清理,避免磁盤占用空間過大(該項建議配置)
expire_logs_days = 7

1.2重啟數(shù)據(jù)庫服務(wù)

Mysql數(shù)據(jù)庫修改my.cnf配置文件后,需要重啟數(shù)據(jù)庫才能使修改的配置文件生效:

systemctl restart mysqld

重啟數(shù)據(jù)庫后,可以查看數(shù)據(jù)庫的運(yùn)行狀態(tài),確保數(shù)據(jù)庫正常運(yùn)行(active):

systemctl status mysqld

在這里插入圖片描述

1.3創(chuàng)建遠(yuǎn)程連接賬戶

從庫同步主庫的數(shù)據(jù),那么從庫需要先連接到主庫。初始的root賬戶只能在主庫服務(wù)器中登錄,在從庫所在服務(wù)器中使用該賬戶是無法登錄的,因此需要創(chuàng)建一個遠(yuǎn)程連接的賬戶:
登錄數(shù)據(jù)庫:mysql -uroot -p數(shù)據(jù)庫密碼在Windows中直接通過命令行登錄到mysql,需要將mysql添加到環(huán)境變量。本次創(chuàng)建一個遠(yuǎn)程連接賬戶’slave’,密碼為’test’(可以根據(jù)自己需要創(chuàng)建不同的賬戶密碼),賦予賬戶只有復(fù)制權(quán)限:

方法一(分步執(zhí)行):

創(chuàng)建mysql賬戶:

CREATE USER 'slave'@'%' IDENTIFIED BY 'test';

%表示賬戶開通遠(yuǎn)程連接,允許所有IP通過該賬戶登錄數(shù)據(jù)庫。

授權(quán)該賬戶只有復(fù)制的權(quán)限:

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';

REPLICATION SLAVE 表示僅給該賬戶復(fù)制的權(quán)限,*.*表示可以該賬戶的權(quán)限對所有的數(shù)據(jù)庫和數(shù)據(jù)表都有效,可以復(fù)制所有數(shù)據(jù)庫和表,%表示所有IP都可以通過該賬戶連接到數(shù)據(jù)庫。

刷新權(quán)限:

flush privileges; 

方法二(合并執(zhí)行):

創(chuàng)建一個賬戶只有復(fù)制權(quán)限(slave),權(quán)限對所有數(shù)據(jù)庫和表生效(*.*),‘slave’賬號,密碼為’test’:

grant replication slave on *.* to 'slave'@'%' identified by 'test';

1.4查看master狀態(tài),記錄二進(jìn)制文件名(File)和位置(Position):

復(fù)制主機(jī)的數(shù)據(jù)庫,需要先查詢主機(jī)數(shù)據(jù)庫二進(jìn)制日志的文件名和文件所在位置的,命令如下:

SHOW MASTER STATUS;

在這里插入圖片描述

1.5停止主機(jī)數(shù)據(jù)庫的寫操作

注意:從機(jī)開始同步之前,主機(jī)不能再進(jìn)行寫操作,如果主機(jī)仍在進(jìn)行寫操作,會導(dǎo)致同步失敗,導(dǎo)致同步無法繼續(xù)執(zhí)行。因此,建議在執(zhí)行同步之前,先把所有連接到mysql數(shù)據(jù)庫的jar、tomcat、中間件、exe程序全部停止,停止程序往主機(jī)繼續(xù)寫入數(shù)據(jù),同步時確保數(shù)據(jù)的一致性。

2.從庫(從機(jī))配置

2.1修改從庫配置文件

本次從機(jī)安裝在Windows系統(tǒng)中,需要進(jìn)入mysql的配置文件目錄下,修改配置文件
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
{如果從機(jī)安裝在CentOS7下,則需要修改/etc/my.cnf配置文件,添加以下內(nèi)容}

在這里插入圖片描述

簡單的配置只需要需改從機(jī)的id即可完成。修改server-id,改成與主機(jī)不沖突的值(建議取從機(jī)的IP,避免沖突)。
進(jìn)階配置如下圖所示:

在這里插入圖片描述

#mysql從機(jī)配置
#從機(jī)唯一標(biāo)識,與主庫不能重復(fù)(值取IP地址)
server-id=66
#設(shè)置日志保存時長
expire_logs_days=7
#數(shù)據(jù)庫宕機(jī)后自動恢復(fù)日志,從庫建議開啟,有利于數(shù)據(jù)一致性
relay_log_recovery=1

2.2重啟從機(jī)Mysql服務(wù)

本次從機(jī)安裝在Windows系統(tǒng)中,安裝Mysql后會出現(xiàn)在系統(tǒng)服務(wù)中。修改配置文件后,需要重啟系統(tǒng)服務(wù)才能適用新的改動:

在這里插入圖片描述

如果從機(jī)安裝在CentOS7下,則通過命令重啟Mysql:

systemctl restart mysqld

2.3導(dǎo)入數(shù)據(jù)庫

注意:如果已停止所有程序?qū)?shù)據(jù)庫的寫入操作,則可以直接將數(shù)據(jù)庫全部同步過來,無需創(chuàng)建導(dǎo)入數(shù)據(jù)庫,此步驟可忽略進(jìn)入下一步。直接看下一個步驟:2.4開始主從同步。

由于本次同步時,未停止程序?qū)?shù)據(jù)庫寫入操作,導(dǎo)致在使用中的數(shù)據(jù)庫無法同步到從機(jī)中,因此需要手動導(dǎo)入數(shù)據(jù)庫。雖然設(shè)置了主從同步,但是如果主庫未停止寫入,從庫并不會將主機(jī)在使用中的數(shù)據(jù)庫直接同步復(fù)制到從機(jī)。因此必須先將主機(jī)的數(shù)據(jù)庫導(dǎo)出,再導(dǎo)入到從機(jī)的數(shù)據(jù)庫中。從機(jī)先創(chuàng)建數(shù)據(jù)庫,新創(chuàng)建的數(shù)據(jù)庫名字、字符集、排序規(guī)則必須和主庫原有的數(shù)據(jù)庫相同。然后再執(zhí)行下一步。

在這里插入圖片描述

數(shù)據(jù)庫創(chuàng)建好后,將主機(jī)中導(dǎo)出的數(shù)據(jù)庫導(dǎo)入到從機(jī)中:

在這里插入圖片描述

2.4開始主從同步

重啟Mysql后,可以設(shè)置從機(jī)的數(shù)據(jù)庫同步到主機(jī)。設(shè)置同步到的主機(jī)信息(連接的IP和賬戶),執(zhí)行從機(jī)執(zhí)行同步命令。

登錄從機(jī)數(shù)據(jù)庫:mysql -uroot -p數(shù)據(jù)庫密碼

登錄成功后,在從機(jī)數(shù)據(jù)庫命令行執(zhí)行以下指令,設(shè)置主機(jī)的連接參數(shù)。使從機(jī)可以連接到主機(jī):

change master to master_host='主機(jī)IP',master_user='數(shù)據(jù)庫賬戶',master_password='數(shù)據(jù)庫密碼',master_log_file='數(shù)據(jù)庫二進(jìn)制文件',master_log_pos=文件位置參數(shù);

從機(jī)連接到主機(jī)后,開始同步,從機(jī)復(fù)制主機(jī)的二進(jìn)制日志:

start slave;

在這里插入圖片描述

2.5查看從機(jī)狀態(tài)

注意:從機(jī)開始同步之前,主機(jī)不能再進(jìn)行寫操作,如果主機(jī)仍在進(jìn)行寫操作,會導(dǎo)致同步失敗,Slave_SQL_Running欄顯示為NO,Last_Error會重復(fù)出現(xiàn)報錯,導(dǎo)致同步無法繼續(xù)執(zhí)行。

#查看從機(jī)狀態(tài)
show slave status;

如果在數(shù)據(jù)庫命令行中執(zhí)行該命令,回顯的信息是沒有分行的,行顯示的數(shù)據(jù)錯亂,可以通過增加“\G”分行展示從機(jī)狀態(tài):

#分行查看從機(jī)狀態(tài)
show slave status\G;

如果從機(jī)的狀態(tài)如下圖所示,則說明同步是成功的:

在這里插入圖片描述

2.6同步報錯解決辦法一

注意:從機(jī)開始同步之前,主機(jī)不能再進(jìn)行寫操作。如果主機(jī)仍在進(jìn)行寫操作,會導(dǎo)致同步失敗,Slave_SQL_Running欄顯示為NO,Last_Error會重復(fù)出現(xiàn)報錯代碼1032,導(dǎo)致同步無法繼續(xù)執(zhí)行。

在這里插入圖片描述

那么怎么停止主機(jī)的寫操作呢?停止主機(jī)的寫操作,一定要在主機(jī)上停止所有的連接到數(shù)據(jù)庫的程序和中間件,讓程序不再往數(shù)據(jù)庫中寫入數(shù)據(jù)即可。

主機(jī)中往數(shù)據(jù)庫寫的操作停止后,從機(jī)再重新執(zhí)行同步操作:

start slave;

2.7同步報錯解決辦法二

查閱了許多資料,大佬們的做法是這樣的,從機(jī)登錄數(shù)據(jù)庫后執(zhí)行以下命令:

 #sql_slave_skip_counter =1表示跳過1步錯誤,后面的數(shù)字可變,出現(xiàn)多少個報錯則把數(shù)字改成這個數(shù)量可以跳過報錯繼續(xù)同步
stop slave;
set global sql_slave_skip_counter =1;  
start slave;

但是我按照大佬們的操作,還是沒解決問題。如果錯誤比較多,或者中途還是會出現(xiàn)報錯,導(dǎo)致無法完成主從同步,那么建議修改從機(jī)的數(shù)據(jù)庫配置文件,跳過所有1032代碼的錯誤:

在這里插入圖片描述

在配置文件中[mysqld]添加以下內(nèi)容:

#該方法用于跳過所有1032錯誤
slave-skip-errors=1032

如果想跳過其他的錯誤代碼,可以把slave-skip-errors后面的代碼替換為出現(xiàn)的錯誤代碼。更粗暴的是,可以跳過所有的錯誤代碼:

#該方法用于跳過所有錯誤代碼
slave-skip-errors=all

修改配置文件之后,重新啟動mysql數(shù)據(jù)庫。

重啟數(shù)據(jù)庫之后,從機(jī)中重新執(zhí)行主從同步命令:

start slave;

3.同步測試

在主機(jī)中新建數(shù)據(jù)庫,在數(shù)據(jù)庫中添加數(shù)據(jù)表,查看從庫中是否將主庫修改的內(nèi)容同步過來:

在這里插入圖片描述

主機(jī)新增了“ibms_ksy”數(shù)據(jù)庫,同時導(dǎo)入了數(shù)據(jù)庫報表。我們查看從機(jī)是否同步了新增的數(shù)據(jù)庫:

在這里插入圖片描述

可以看到,從機(jī)同步了主機(jī)新增的數(shù)據(jù)庫,并將主庫中的數(shù)據(jù)表也同步了過來。

到此這篇關(guān)于Mysql數(shù)據(jù)庫主從同步的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Mysql 主從同步內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Explain命令在優(yōu)化查詢中的實(shí)際應(yīng)用

    Explain命令在優(yōu)化查詢中的實(shí)際應(yīng)用

    在MySQL中,EXPLAIN命令是一種非常重要的查詢優(yōu)化工具,它可以幫助我們分析SQL查詢語句的執(zhí)行計劃,以及如何優(yōu)化它們。本文介紹了Explain命令在優(yōu)化查詢中的實(shí)際應(yīng)用,感興趣的小伙伴可以參考閱讀
    2023-04-04
  • mysql sharding(碎片)介紹

    mysql sharding(碎片)介紹

    這篇文章主要介紹了mysql sharding(碎片)介紹,本文講解了Sharding的應(yīng)用場景一般都哪些、Sharding與數(shù)據(jù)庫分區(qū)(Partition)的區(qū)別等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • linux下mysql數(shù)據(jù)庫單向同步配置方法分享

    linux下mysql數(shù)據(jù)庫單向同步配置方法分享

    mysql數(shù)據(jù)庫單向同步又叫做主從復(fù)制,是通過二進(jìn)制日志文件完成的,注意:mysql 數(shù)據(jù)庫的版本,兩個數(shù)據(jù)庫版本要相同
    2012-06-06
  • MySQL 鎖的完整分類與詳解

    MySQL 鎖的完整分類與詳解

    MySQL中的鎖可以從鎖粒度、鎖類型、鎖狀態(tài)三個維度劃分,下面按 “粒度 + 類型” 的邏輯體系,逐一說明所有核心鎖的定義、作用和使用場景,對mysql鎖分類相關(guān)知識感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • MySQL的增刪查改語句用法示例總結(jié)

    MySQL的增刪查改語句用法示例總結(jié)

    這篇文章主要介紹了MySQL的增刪查改語句用法示例總結(jié),是對MySQL學(xué)習(xí)的基本知識點(diǎn)的一個歸納,需要的朋友可以參考下
    2015-05-05
  • MySQL數(shù)據(jù)庫中內(nèi)置函數(shù)的使用全解析

    MySQL數(shù)據(jù)庫中內(nèi)置函數(shù)的使用全解析

    大家在寫 SQL 時,經(jīng)常會遇到處理日期,拼接字符串等場景,如果手寫邏輯又麻煩又容易錯,其實(shí) MySQL 早就給我們準(zhǔn)備好了內(nèi)置函數(shù),直接調(diào)用就能搞定大部分需求,下面小編就和大家系統(tǒng)講解一下吧
    2026-05-05
  • Linux中安裝MySql 5.7.21的詳細(xì)操作步驟

    Linux中安裝MySql 5.7.21的詳細(xì)操作步驟

    這篇文章主要給大家介紹了關(guān)于在Linux中安裝MySql 5.7.21的詳細(xì)操作步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • mysql雙機(jī)熱備實(shí)現(xiàn)方案【可測試】

    mysql雙機(jī)熱備實(shí)現(xiàn)方案【可測試】

    雙機(jī)熱備從廣義上講,就是對于重要的服務(wù),使用兩臺服務(wù)器,互相備份,共同執(zhí)行同一服務(wù)。這篇文章主要介紹了mysql雙機(jī)熱備實(shí)現(xiàn)方案,需要的朋友可以參考下
    2019-10-10
  • MySql分庫分表深度指南之從策略到落地

    MySql分庫分表深度指南之從策略到落地

    文章介紹了MySQL分庫分表的策略及實(shí)施方法,包括分片鍵設(shè)計、中間件選型(如ShardingSphere、Mycat),以及如何處理跨分片查詢和數(shù)據(jù)遷移,通過案例和最佳實(shí)踐,文章展示了如何解決高并發(fā)、大數(shù)據(jù)量下的查詢和事務(wù)問題,實(shí)現(xiàn)數(shù)據(jù)自治和高可用,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • mysql高可用之MHA用法及說明

    mysql高可用之MHA用法及說明

    MHA是MySQL高可用解決方案,實(shí)現(xiàn)0-30秒故障切換及數(shù)據(jù)一致性,Atlas是360讀寫分離中間件,提升查詢效率,兩者均用于數(shù)據(jù)庫高可用架構(gòu)優(yōu)化,MHA側(cè)重故障恢復(fù),Atlas側(cè)重負(fù)載均衡與讀寫分離
    2025-09-09

最新評論

喜德县| 平陆县| 凤翔县| 延川县| 集贤县| 洛阳市| 芮城县| 沙坪坝区| 平陆县| 宝鸡市| 吉林省| 灵山县| 志丹县| 衡东县| 庆城县| 诸暨市| 新田县| 高要市| 唐河县| 辽阳市| 乌鲁木齐县| 玉林市| 彭水| 思茅市| 延津县| 遵化市| 当涂县| 开化县| 新昌县| 虹口区| 新丰县| 博罗县| 田林县| 平顺县| 石台县| 隆回县| 苗栗市| 八宿县| 曲阳县| 汶上县| 深泽县|