MySQL主從復(fù)制是一種常見的數(shù)據(jù)庫架構(gòu),它可以提高數(shù)據(jù)庫的可用性和性能。主從復(fù)制基于MySQL復(fù)制機制,它將更新操作從主數(shù)據(jù)庫同步到從數(shù)據(jù)庫。在這種方式下,主數(shù)據(jù)庫負(fù)責(zé)寫入操作,從數(shù)據(jù)庫則負(fù)責(zé)讀取操作。
主庫配置:
[mysqld]
# 開啟二進制日志
log-bin=mysql-bin
# 設(shè)置服務(wù)器ID 具體值自定(一般1~4294967295),每個從服務(wù)器的ID都必須不同
server-id=1
# 需要復(fù)制哪個庫 必須指定,多個庫以逗號分隔
binlog-do-db=test1, test2
# 需要排除同步的庫,此處排除了mysql庫和information_schema庫
binlog-ignore-db=mysql, information_schema
從庫配置:
[mysqld]
# 設(shè)置服務(wù)器ID 具體值自定,必須不同于其它服務(wù)器的ID
server-id=2
# 還原主庫數(shù)據(jù)
mysql>stop slave;
mysql>reset slave;
# 需要復(fù)制哪個庫,必須與主庫保持一致
replicate-do-db=test1, test2
# 配置從庫連主庫
mysql>change master to
->master_host='192.168.1.101', -- 主數(shù)據(jù)庫的地址
->master_port=3306, -- 主數(shù)據(jù)庫的端口號
->master_user='slave_user', -- 從數(shù)據(jù)庫連接主數(shù)據(jù)庫的用戶名
->master_password='slave_pwd', -- 從數(shù)據(jù)庫連接主數(shù)據(jù)庫的密碼
->master_log_file='mysql-bin.0001', -- 主數(shù)據(jù)庫當(dāng)前的二進制日志文件名
->master_log_pos=107; -- 主數(shù)據(jù)庫當(dāng)前二進制日志的位置
mysql>start slave;
主從復(fù)制可以提高系統(tǒng)的可用性和性能,不過還是需要注意一些細節(jié)問題。比如必須保證主庫和從庫的數(shù)據(jù)一致(在復(fù)制的過程中);當(dāng)主庫出現(xiàn)故障時,需要切換到從庫來防止服務(wù)停止;針對高并發(fā)的情況時,一定要注意主從同步延遲的問題;還有就是如果需要在從庫上執(zhí)行寫入操作,那么需要先在主庫上執(zhí)行,否則會引起主從復(fù)制的異常。