一、規(guī)劃
提:需要準(zhǔn)備四臺服務(wù)器,每臺服務(wù)器上安裝了 mysql8 數(shù)據(jù)庫。
規(guī)劃:從 1 復(fù)制 主1 ,從 2 復(fù)制 主 2,主 1 復(fù)制 主 2,主 2 復(fù)制主 1,也就是 主 1 和主 2 互為主從。主1主2互為主從,是為了以下情景,主1掛了,主2自動升級為主數(shù)據(jù)庫,當(dāng)主1恢復(fù)后,主1則變成次主數(shù)據(jù)庫。
舉個案例:1、在主1創(chuàng)建了一個數(shù)據(jù)庫,從1自動“復(fù)制”主1生成數(shù)據(jù)庫,
? ? ? ? ? ? ? ? ? 2、因?yàn)橹?也是主1 的從數(shù)據(jù)庫,所以主2也“復(fù)制”主1生成數(shù)據(jù)庫,
? ? ? ? ? ? ? ? ? 3、主2有了數(shù)據(jù)庫,從2自動“復(fù)制”主2生成數(shù)據(jù)庫;
最后,四臺服務(wù)器數(shù)據(jù)庫都創(chuàng)建了數(shù)據(jù)庫。
二、修改 mysql 配置
主1? ?my.cnf? 添加如下配置
# bin log 日志
log-bin=/var/lib/mysql/binlog
# 服務(wù)id
server-id=1
#主從復(fù)制忽略的數(shù)據(jù)庫
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#開啟主從復(fù)制的數(shù)據(jù)庫
binlog-do-db=mydb2
# bin log 日志格式
#STATEMENT:記錄主庫執(zhí)行的SQL復(fù)制到從庫; 調(diào)用時間函數(shù)時會導(dǎo)致主從數(shù)據(jù)不一致
#ROW:記錄主庫每一行的變化;效率低
#MIXED:修復(fù)一些主從數(shù)據(jù)不一致情況;本地變量調(diào)用還會存在問題;@@hostname
binlog_format=statement
#二進(jìn)制日志自動刪除/過期的天數(shù)。默認(rèn)值為0,表示不自動刪除
expire_logs_days=7
#跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤
slave_skip_errors=1062
#在作為從數(shù)據(jù)庫時候,有寫入操作也要更新二進(jìn)制日志文件
log-slave-updates
#標(biāo)識自增長字段每次遞增的量,也就是步長
auto-increment-increment=2
#表示自增長從哪個數(shù)開始
auto-increment-offset=1
主 2 ?my.cnf ?添加如下配置
# bin log 日志
log-bin=/var/lib/mysql/binlog
# # 服務(wù)id
server-id=3
# #主從復(fù)制忽略的數(shù)據(jù)庫
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
# #開啟主從復(fù)制的數(shù)據(jù)庫
binlog-do-db=mydb2
# # bin log 日志格式
# #STATEMENT:記錄主庫執(zhí)行的SQL復(fù)制到從庫; 調(diào)用時間函數(shù)時會導(dǎo)致主從數(shù)據(jù)不一致
# #ROW:記錄主庫每一行的變化;效率低
# #MIXED:修復(fù)一些主從數(shù)據(jù)不一致情況;本地變量調(diào)用還會存在問題;@@hostname
binlog_format=statement
# #二進(jìn)制日志自動刪除/過期的天數(shù)。默認(rèn)值為0,表示不自動刪除
expire_logs_days=7
# #跳過主從復(fù)制中遇到的所有錯誤或指定類型的錯誤
slave_skip_errors=1062
# #在作為從數(shù)據(jù)庫時候,有寫入操作也要更新二進(jìn)制日志文件
log-slave-updates
# #標(biāo)識自增長字段每次遞增的量,也就是步長
auto-increment-increment=2
# #表示自增長從哪個數(shù)開始
auto-increment-offset=2
主1主2配置的不同地方在:server-id ?和 auto-increment-offset?
?
從1 my.cnf 添加如下配置
# 服務(wù)id
server-id=2
# #啟用中繼日志
relay-log=mysql-relay
# 服務(wù)id
server-id=2
# #啟用中繼日志
relay-log=mysql-relay
從2 my.cnf 添加如下配置
# 服務(wù)id
server-id=4
# #啟用中繼日志
relay-log=mysql-relay