mysql5.7.25主從同步圖解(主:CentOS7.5,從win10)
阿新 • • 發佈:2019-03-14
abc 通用 必須 code water windows 連接數 信息 centos7
環境說明:
主服務器:CentOS7.5
從服務器:Windows10(本地測試機)
1. 配置master(主服務器,CentOS7.5)
1.1 首先查看CentOS上面的MySQL是否啟動
systemctl status mysqld
1.2 修改MySQL配置文件
vi /etc/my.cnf
添加以下內容:
#服務器唯一id,默認是1(主從都必須不一樣) server-id=1000 #啟動二進制日誌名稱為mysql-bin log-bin=mysql-bin #binlog-do-db與binlog-ignore-db互斥,設置其中一個即可 #binlog-do-db=需要同步的數據庫名(多個數據庫重復設置即可) binlog-do-db=test01 #binlog-ignore-db=不需要同步的數據庫01(多個數據庫重復設置即可) #binlog-ignore-db=不需要同步的數據庫02(多個數據庫重復設置即可) #動清理30天之前的log文件(可自由指定時間) expire_logs_days=30
1.3 重新啟動MySQL
systemctl restart mysqld
1.4 創建備份賬號與測試log_bin是否成功開啟
1.4.1 登錄主數據庫
mysql -uroot -p
1.4.1 創建有復制權限的帳號
主機名可以是"%"、"192.168.0.%"、或者"192.168.1.106"這些格式,“%”為任意IP
mysql> grant replication slave on *.* to ‘用戶名‘@‘主機‘ identified by ‘密碼‘;
如果出現提示權限不足的情況,請按照以下方式操作
修改MySQL密碼規則
// 修改密碼策略方式為不限制(重啟後恢復為默認規則)
mysql> set global validate_password_policy=0;
// 修改密碼長度為最少6位(重啟後恢復為默認規則)
mysql> set global validate_password_length=6;
重新設置密碼(創建成功)
1.4.2 #查看主庫的狀態
mysql> show master status;
File是二進制日誌文件名,Position 是日誌開始的位置。後面從庫會用到
1.4.3 #查看big-log日誌是否開啟成功
mysql> show variables like ‘%log_bin%‘;
可以看到從 "/etc/my.cnf" 文件中添加的 log-bin=mysql-bin 日誌已經啟動
此時主庫停止操作(為了保持主從數據庫數據一致),等待從庫連接後, 方可進行其他操作
2. 配置slaver(從服務器,Windows10)
2.1 關閉MySQL服務
使用管理員權限打開CMD,執行以下命令
// 關閉MySQL服務
net stop mysql57_01
2.2 修改MySQL配置文件
進入到MySQL的安裝目錄,編輯 my.ini 文件
在[mysqld]下添加以下內容(除了server_id必填,其他選填):
#從庫配置
##服務器唯一id,默認是1(主從都必須不一樣)
server_id=1001
##從機保存同步中繼日誌的位置
relay_log=slave-relay-bin
##當slave從庫宕機後,假如relay-log損壞了,導致一部分中繼日誌沒有處理,
##則自動放棄所有未執行的relay-log,並且重新從master上獲取日誌,這樣就保證了relay-log的完整性
relay_log_recovery=1
##只讀模式(普通用戶)
read_only=1
##只讀模式(超級管理員)
super_read_only=1
完整my.ini 文件內容如下:
[mysqld]
# 設置3307端口
port = 3307
# 設置mysql的安裝目錄
basedir=D:/Program Files/mysql-5.7.25-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=D:/Program Files/mysql-5.7.25-winx64/data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認utf8
character-set-server=utf8
# 創建新表時使用的默認存儲引擎
default-storage-engine=INNODB
# 設置sql語法模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#從庫配置
##服務器唯一id,默認是1(主從都必須不一樣)
server_id=1001
##從機保存同步中繼日誌的位置
relay_log=slave-relay-bin
##當slave從庫宕機後,假如relay-log損壞了,導致一部分中繼日誌沒有處理,
##則自動放棄所有未執行的relay-log,並且重新從master上獲取日誌,這樣就保證了relay-log的完整性
relay_log_recovery=1
##只讀模式(普通用戶)
read_only=1
##只讀模式(超級管理員)
super_read_only=1
##啟用gtid類型,否則就是普通的復制架構(需要和主服務器配合使用,本例未完善)
#gtid_mode=on
##強制gtid的一致性
#enforce_gtid_consistency=1
##當mysql啟動或重啟時,mysql在搜尋gtid時是如何叠代使用binlog文件的.
##這個選項設置為真,會提升mysql執行恢復的性能.因為這樣mysql-server啟動和binlog日誌清理更快
#binlog_gtid_simple_recovery = 1
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
2.3 啟動MySQL服務
使用管理員權限打開CMD,執行以下命令
// 啟動MySQL服務
net start mysql57_01
2.4 建立連接
2.4.1 登錄mysql,關閉主從同步
// 登錄mysql
mysql -u root -p -P3307
// 閉主從同步
mysql> stop slave;
2.4.2 關聯主庫和從庫(操作之時主庫停止操作)
change master to
master_host=‘主庫IP地址‘,
master_port=主庫端口,
master_user=‘主庫用戶名‘,
master_password=‘主庫用戶密碼‘,
master_log_file=‘要同步的文件名稱‘,
master_log_pos=要開始同步的位置;
註意:
"master_log_file"和主庫狀態中的【File】內容一致
"master_log_pos"要主庫狀態中的【Position】內容一致
具體請參照【1.4.2 #查看主庫的狀態】章節
如果關聯發生錯誤,請檢查錯誤後重置slave,然後重新執行即可
// 關閉主從同步
mysql> stop slave;
// 重置主從同步信息
mysql> reset slave;
2.4.3 開啟主從同步
mysql> start slave;
2.4.4 查看從服務器狀態
mysql> show slave status \G;
3. 測試
3.1 主庫原始信息
test庫(不同步)的數據信息
test01庫(同步)的數據信息
3.2 從庫原始信息
test庫(不同步)的數據信息
test01庫(同步)的數據信息
3.3 主庫修改信息
test庫(不同步)新增一條信息
test01庫(同步)新增一條信息
3.4 從庫同步的信息
test庫(不同步)的數據信息
test01庫(同步)的數據信息
mysql5.7.25主從同步圖解(主:CentOS7.5,從win10)