MySQL數據庫主從復制

概述

1、master開啟二進制日志記錄

2、slave開啟IO進程,從master中讀取二進制日志并寫入slave的中繼日志

3、slave開啟SQL進程,從中繼日志中讀取二進制日志并進行重放

4、最終,達到slave與master中數據一致的狀態,我們稱作為主從復制的過程。

基礎環境設置

防火墻和上下文

#主從
[root@slave ~]# systemctl disable --now firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@slave ~]# getenforce
Enforcing
[root@slave ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@slave ~]# setenforce 0

網絡對時

#主從
[root@localhost ~]# cat /etc/chrony.conf | grep -Ev '^$|#'
server ntp.aliyun.com iburst ###添加或修改
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony 
[root@master ~]# timedatectl set-timezone Asia/Shanghai
[root@master ~]# date
2025年 07月 05日 星期六 17:18:20 CST

主從配置

主配置

#創建一個從可以登錄的賬戶,并賦予權限
mysql> create user 'slave'@'192.168.157.%' identified by '1230';
Query OK, 0 rows affected (0.01 sec)
#因為要同步所有數據,所以給全部權限
mysql> grant all on *.* to 'slave'@'192.168.157.%';
Query OK, 0 rows affected (0.00 sec)
#主服務文件配置
#屏蔽原有日志文件,新建日志文件,設置id值 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
log-bin=mysql-bin
binlog_format="statement"
server-id=101 #主從必須不一樣 
#重啟MySQL服務
[root@master ~]# systemctl restart mysqld
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      157 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#注意:查看位置完畢后,不要對master做insert、update、delete、create、drop等操作!!!

從配置

#修改配置文件
vim /etc/my.cnf.d/mysql-server.cnf 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
relay-log-index=slave-bin.index  1
server-id=202  #與主配置要不一樣    1
#進入MySQL 指向主服務器
[root@slave mysql]# mysql
mysql> change master to master_host='192.168.157.150',master_user='slave',master_password='1230',master_log_file='mysqlbin.000003',master_log_pos=157;
#驗證
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 192.168.157.150Master_User: slaveMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000003Read_Master_Log_Pos: 157Relay_Log_File: slave-relay-bin.000002Relay_Log_Pos: 326Relay_Master_Log_File: mysql-bin.000003Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 157Relay_Log_Space: 536Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 101Master_UUID: f2a6f311-51cb-11f0-bd56-000c299bfda5Master_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Replica has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0Network_Namespace: 

測試

#從
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)
#主
mysql> create database slave;
Query OK, 1 row affected (0.01 sec)
#從
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| slave              |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

重復

reset replica;
##用于重置SQL線程對relay log的重放記錄!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913400.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913400.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913400.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Rancher Server + Kubernets搭建云原生集群平臺

目錄Rancher Server Kubernets搭建云原生集群平臺一、環境準備1、軟件準備2、環境規劃3、掛載數據盤二、虛擬機初始化基礎配置(所有節點都需要操作)1、執行時間服務器腳本(包括配置hostName主機名)2、配置hosts文件3、配置各節點…

Java學習第八部分——泛型

目錄 一、概述 (一)定義 (二)作用 (三)引入原因 二、使用 (一)類 (二)接口 (三)方法 三、類型參數 (一&#xf…

定時點擊二次鼠標 定時點擊鼠標

定時點擊二次鼠標 定時點擊鼠標 今天分享一個定時點擊兩次的小工具。 我們在生活中,可能會遇到一些定時點擊的任務。比如說在晚上9點去發送一個群發,或者倒計時點擊一個按鈕。那么可以使用這個工具,僅適用于Windows電腦。 #定時點擊鼠標 #倒計…

Linux網絡配置與故障排除完全指南

1. ifconfig命令 - 網絡接口配置器 ifconfig(interface configurator)是Linux系統中最基礎的網絡配置工具。該命令可以初始化網絡接口、分配IP地址、啟用或禁用接口,同時還能查看接口的詳細信息。 查看網絡接口信息 # ifconfig eth0 …

Python Pytest-Benchmark詳解:精準性能測試的利器

在軟件開發的迭代過程中,性能優化如同精密手術,需要精準的測量工具。Pytest-Benchmark作為pytest生態中的性能測試插件,憑借其無縫集成能力和專業統計功能,成為Python開發者進行基準測試的首選工具。本文將深入解析其技術特性與實…

60天python訓練營打卡day51

學習目標: 60天python訓練營打卡 學習內容: DAY 51 復習日 作業:day43的時候我們安排大家對自己找的數據集用簡單cnn訓練,現在可以嘗試下借助這幾天的知識來實現精度的進一步提高 學習時間: 2025.07.04 浙大疏錦行…

支持向量機(SVM)在肺部CT圖像分類(肺癌檢測)中的實現與優化

?? 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#, Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用…

YOLOv3-SPP 深度解析:引入 SPP 結構,顯著提升目標檢測性能!

? YOLOv3-SPP 技術詳解 一、前言 YOLOv3-SPP 是在 YOLOv3 基礎上加入 SPP(Spatial Pyramid Pooling)模塊的一種改進版本,旨在提升模型對不同尺度目標的識別能力,尤其是在大目標檢測方面表現更優。 它由 Alexey Bochkovskiy 在…

負載均衡--常見負載均衡算法

負載均衡算法可以分為兩類:靜態負載均衡算法和動態負載均衡算法。 1、靜態負載均衡算法包括:輪詢,比率,優先權 輪詢(Round Robin):順序循環將請求一次順序循環地連接每個服務器。當其中某個服務…

深入解析GCC:開源的編譯器之王

在編程世界中,編譯器是將人類可讀代碼轉化為機器指令的關鍵橋梁。而GCC(GNU Compiler Collection) 無疑是這個領域最耀眼的明星之一。作為開源世界的基石,它支撐著Linux內核、眾多開源項目和商業軟件的構建。今天,我們…

https和http有什么區別

目錄 一、核心區別:是否基于加密傳輸 二、底層傳輸機制差異 三、HTTPS 的加密原理 四、應用場景差異 五、其他細節區別 總結 在網絡通信中,HTTP(Hypertext Transfer Protocol,超文本傳輸協議) 和HTTPS&#xff0…

CSS3 文本效果詳解

CSS3 文本效果詳解 引言 隨著Web技術的發展,CSS3為前端設計師和開發者提供了豐富的文本效果選項。這些效果不僅能夠增強網頁的美觀性,還能提升用戶體驗。本文將詳細介紹CSS3中的文本效果,包括文本陰影、文本描邊、文本裝飾、文本換行、文本大小寫等,并探討如何在實際項目…

MySQL 中 -> 和 ->> 操作符的區別

簡介 MySQL 5.7 或更高版本,可以使用 ->> 和 -> 運算符簡化語法這兩個操作符都是用于提取 JSON 數據的,但有一些重要區別 -> 操作符 功能:提取 JSON 對象的指定路徑的值 返回類型:返回 JSON 類型的值(可…

Vue2 day07

1.vuex的基本認知2.構建多組件共享的數據環境步驟&#xff1a;1.在自己創建的文件夾下創建腳手架2.創建三個組件### 源代碼如下App.vue在入口組件中引入 Son1 和 Son2 這兩個子組件html <template><div id"app"><h1>根組件</h1><input ty…

簡述MCP的原理-AI時代的USB接口

1 簡介隨著AI的不斷發展&#xff0c;RAG&#xff08;檢索增強生成&#xff09;和function calling等技術的出現&#xff0c;使得大語言模型的對話生成能力得到了增強。然而&#xff0c;function calling的實現邏輯比較復雜&#xff0c;一個簡單的工具調用和實現方式需要針對不同…

CISSP知識點匯總-資產安全

CISSP知識點匯總 域1---安全與風險管理域2---資產安全域3---安全工程域4---通信與網絡安全域5---訪問控制域6---安全評估與測試域7---安全運營域8---應用安全開發域2 資產安全 一、資產識別和分類 1、信息分級(Classification): 按照敏感程度(機密性被破壞) 按照重要程度…

Spring Boot 3.x 整合 Swagger(springdoc-openapi)實現接口文檔

本文介紹 Spring Boot 3.x 如何使用 springdoc-openapi 實現 Swagger 接口文檔&#xff0c;包括版本兼容表、最簡單的配置示例和常見錯誤解決方案。1. Spring Boot 3.x 和 springdoc-openapi 版本對應表Spring Boot 版本Spring Framework 版本推薦的 springdoc-openapi 版本3.0…

Redis內存隊列Stream

本文為個人學習筆記整理&#xff0c;僅供交流參考&#xff0c;非專業教學資料&#xff0c;內容請自行甄別 文章目錄概述一、生產者端操作二、消費者端操作三、消費組操作四、狀態查詢操作五、確認消息六、消息隊列的選擇概述 Stream是Redis5.0推出的支持多播的可持久化的消息隊…

Minio安裝配置,桶權限設置,nginx代理 https minio

**起因&#xff1a;因為用到ruoyi-vue-plus框架中遇到生產環境是https&#xff0c;但是http的minio上傳的文件不能在后臺系統中訪問**安裝配置minio1. 下載安裝2. 賦文件執行權限3.創建配置文件4.創建minio.service新版minio創建桶需要配置桶權限1.下載客戶端2.設置訪問權限3.連…

數論基礎知識和模板

質數篩 用于快速處理 1&#xff5e;n 中所有素數的算法 因為依次遍歷判斷每一個數是否質數太慢&#xff0c;所以把一些明顯不能質數的篩出來 普通篩法&#xff0c;對于每個整數&#xff0c;刪除掉其倍數。 bool vis[N];//0表示是質數 int pri[N],o; //質數表 void get(int n…