MySQL主從同步是在多個(gè)MySQL實(shí)例之間復(fù)制數(shù)據(jù)的過程。主庫(kù)將其更新操作記錄在二進(jìn)制日志文件(Binary log)中,從庫(kù)通過讀取主庫(kù)的二進(jìn)制日志并將其應(yīng)用于自己的數(shù)據(jù)庫(kù),從而復(fù)制主數(shù)據(jù)庫(kù)更新的過程。在MySQL主從同步中,可以指定需要同步的表,以減少同步壓力并加快同步速度。
在主庫(kù)中,需要確保開啟二進(jìn)制日志記錄,以便從庫(kù)可以讀取主庫(kù)的更新操作并進(jìn)行同步。可以在my.cnf文件中設(shè)置如下參數(shù): log_bin=mysql-bin binlog_format=row 需要注意的是,binlog_format的參數(shù)設(shè)置如下: 1. Row:會(huì)記錄每一行受到什么樣的修改操作,可用來還原修改前的數(shù)據(jù)表。 2. Statement:記錄的是修改數(shù)據(jù)的SQL語(yǔ)句,可以方便地追蹤修改歷史,但無法記錄所有的修改操作。 3. Mixed:結(jié)合了Row和Statement的優(yōu)點(diǎn),記錄可以使用Row記錄的操作,對(duì)于未經(jīng)Bi-Map映射預(yù)測(cè)為無謂的操作,采用Statement記錄,即混合模式。 在從庫(kù)中,需要設(shè)置server_id參數(shù),以便與同步的主庫(kù)進(jìn)行區(qū)分。可以在my.cnf文件中設(shè)置如下參數(shù): server_id=2 需要注意的是,server_id在不同從庫(kù)之間必須唯一,否則會(huì)導(dǎo)致同步失敗。 在主庫(kù)中,在需要同步的表的前綴加上replicate-do-table參數(shù),以便從庫(kù)僅同步這些表。可以在my.cnf文件中設(shè)置如下參數(shù): replicate-do-table=db_name.table_name_prefix 需要注意的是,replicate-do-table僅僅意味著僅僅要同步table_name_prefix的表結(jié)構(gòu),不代表僅僅同步相關(guān)表的數(shù)據(jù),更多的關(guān)于主從復(fù)制的知識(shí)可以查看MySQL官方文檔。