mysql過濾復(fù)制思路詳解
mysql過濾復(fù)制

兩種思路:
- 主庫的binlog上實現(xiàn)(不推薦,盡量保證主庫binlog完整)
- 從庫的sql線程上實現(xiàn)
所以主從過濾復(fù)制盡量不用,要用的也僅僅在從庫上使用,因為要盡可能保證binlog的完整性
主庫上實現(xiàn)
在Master 端為保證二進制日志的完整, 不使用二進制日志過濾。
主庫配置參數(shù):
#配置文件中添加 binlog-do-db=db_name #定義白名單,僅將制定數(shù)據(jù)庫的相關(guān)操作記入二進制日志。如果主數(shù)據(jù)庫崩潰,那么僅僅之恢復(fù)指定數(shù)據(jù)庫的內(nèi)容,不建議在主服務(wù)器端使用,這樣導(dǎo)致日志不完整。 binlog-ignore-db=db_name #定義黑名單, 定義ignore 的庫上發(fā)生的寫操作將不會記錄到二進制日志中
從庫上實現(xiàn)
可以下載配置文件中
REPLICATE_DO_DB = (db_list) #過濾復(fù)制哪些庫 REPLICATE_IGNORE_DB = (db_list) #不復(fù)制哪些庫 REPLICATE_DO_TABLE = (tbl_list) #過濾表 REPLICATE_IGNORE_TABLE = (tbl_list) #忽略過濾表 REPLICATE_WILD_DO_TABLE = (wild_tbl_list) #根據(jù)正則匹配過濾表 REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list) #根據(jù)正則匹配忽略過濾這些表 REPLICATE_REWRITE_DB = (db_pair_list) #將源數(shù)據(jù)庫的db1發(fā)生的語句重寫到從庫的db2 CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB = ((db1, db2));
語法:
官網(wǎng)語法參考:https://dev.mysql.com/doc/refman/5.7/en/change-replication-filter.html
CHANGE REPLICATION FILTER filter[, filter][, ...]
filter: {
REPLICATE_DO_DB = (db_list)
| REPLICATE_IGNORE_DB = (db_list)
| REPLICATE_DO_TABLE = (tbl_list)
| REPLICATE_IGNORE_TABLE = (tbl_list)
| REPLICATE_WILD_DO_TABLE = (wild_tbl_list)
| REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list)
| REPLICATE_REWRITE_DB = (db_pair_list)
}
#從庫實現(xiàn)過濾復(fù)制 stop slave sql_thread; change replication filter replicate_do_db=(db); start slave sql_thread; #取消過濾復(fù)制 stop slave sql_thread; change replication filter replicate_do_db=(); start slave sql_thread;
一些問題
主庫刪除某個表,從庫沒有這個表,導(dǎo)致從庫sql線程關(guān)閉
或者主從正常,從庫不小心刪除某個表,主庫隨后再刪除這個表,從庫又會去刪除這個不存在的表,報錯,導(dǎo)致sql線程退出
解決方法:跳過這一步操作
解決方案:從庫sql線程跳過誤操作的步驟 stop slave sql_thread; #找到Executed_Gtid_Set執(zhí)行到19 set gtid_next='94fc1fbe-b7a0-11eb-b0a0-000c2969aba1:20'; 將gtid分配給下一個事務(wù) begin;commit; set gtid_next=automatic; 系統(tǒng)自動分配gtid start slave sql_thread;
到此這篇關(guān)于mysql過濾復(fù)制思路詳解的文章就介紹到這了,更多相關(guān)mysql過濾復(fù)制 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL 到底是如何做到多版本并發(fā)的
- MySQL 外鍵(FOREIGN KEY)用法案例詳解
- MySQL如何利用存儲過程快速生成100萬條數(shù)據(jù)詳解
- Python接口自動化淺析pymysql數(shù)據(jù)庫操作流程
- MySQL事務(wù)控制流與ACID特性
- Mysql使用存儲過程快速添加百萬數(shù)據(jù)的示例代碼
- MySQL去除重疊時間求時間差和的實現(xiàn)
- Mysql數(shù)據(jù)庫中datetime、bigint、timestamp來表示時間選擇,誰來存儲時間效率最高
- MySQL的全局鎖和表級鎖的具體使用
- 基于Redo Log和Undo Log的MySQL崩潰恢復(fù)解析
相關(guān)文章
Mysql刪除幾億條數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)的方法實現(xiàn)
在MySQL中刪除一個大表中的數(shù)據(jù)時,需要特別注意操作的性能和對系統(tǒng)的影響,本文主要介紹了Mysql刪除幾億條數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)的方法實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2025-03-03
MySQL InnoDB和MyISAM數(shù)據(jù)引擎的差別分析
InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,各有優(yōu)缺點,視具體應(yīng)用而定?;镜牟顒e為:MyISAM類型不支持事務(wù)處理等高級處理,而InnoDB類型支持2011-05-05
MySQL學(xué)習(xí)筆記5:修改表(alter table)
我們在創(chuàng)建表的過程中難免會考慮不周,因此后期會修改表修改表需要用到alter table修改表語句,接下來詳細(xì)介紹,需要的朋友可以參考下2013-01-01

