如何進行MySQL的主從復制(MySQL5.7)

  1. 背景:在一些Web服務器開發中,系統用戶在進行數據訪問時,基本都是直接操作數據庫MySQL進行訪問,而這種情況下,若只有一臺MySQL服務器,可能會存在如下問題
    ????????
    1. 數據的讀和寫的所有壓力都會由一臺數據庫獨立承擔,壓力太大
    2. 數據庫服務器磁盤損壞等原因則會導致數據丟失,出現單點故障問題
  2. 那為了解決這兩個問題,我們可以準備兩臺MySQL服務器,一臺主(master)服務器,一臺從(slave)服務器,若主庫的數據存在變更時,需要同步到從庫中,稱為主從復制。而用戶在訪問我們的Web項目時,如果是寫操作(insert、update、delete)則直接操作主庫即可;如果是讀(select)操作,則直接操作從庫,同時在這種讀寫分離的結構中,從庫我們是可以有多個的這種結構,這種方式我們可稱為讀寫分離。? ? ?
  3. 因為MySQL數據庫默認是支持主從復制的,所以我們并不需要借助于其他的技術,只要在數據庫中進行簡單的配置即可實現。那么接下來我們開始進行MySQL的主從復制的操作
  4. 主從復制的簡單介紹
    1. MySQL主從復制是一個異步的復制過程,底層是基于MySQL的數據庫自帶的二進制日志功能。就是從一臺或多臺MySQL數據庫(slave,從庫)從另一臺MySQL數據庫(master,主庫)進行日志的復制,然后再解析對應的日志并應用到自身,最終實現從庫的數據和主庫的數據保持一致。MySQL主從復制是MySQL數據庫自帶功能,無需借助第三方工具進行操作
  5. 本案例中僅通過一主一從來介紹主從復制的操作
    1. 首先我們先準備兩臺Linux服務器,并且在服務器上需要預先安裝好MySQL數據庫,同時我們已經將服務器的防火墻已經關閉,并將兩臺Linux系統的MySQL服務正常啟動
      1. Linux操作系統:ubuntu-20.04-live-server-amd64
      2. MySQL數據庫版本:5.7.40
    2. 首先進行主庫配置
      1. 修改MySQL數據庫的配置文件my.cnf文件,在文件最下面添加啟用二進制日志功能
        1. # binlog日志
          server-id=101
          log-bin = /home/dev/dev-install/mysql-5.7.40/binlog/mysql-bin
          
        2. log-bin:[必須]啟用二進制日志
          server-id:[必須]服務器唯一ID(唯一即可)
      2. 修改完配置文件需要重啟MySQL服務
        1. ./mysql.server restart
    3. 主庫中創建數據同步的用戶并授權
      1. 登錄MySQL,然后執行如下指令,創建用戶并授權
        1. GRANT REPLICATION SLAVE ON *.* to 'syncdata'@'%' identified by 'Sync@Data123';
        2. 上面的指令是syncdata為用戶,Sync@Data123為密碼,從庫在建立復制的時候需要用到用戶授權,只有在有授權用戶的前提下才能進行復制
    4. 登錄MySQL的數據庫,查看master主庫的同步狀態
      1. 執行如下指令,并將結果中的File和Position的信息記錄下來
        1. show master status;
        2. 注意,查看上面的狀態之后,不要再操作當前數據庫了,也就是不要再執行任何指令,防止數據同步位置錯誤
    5. 開始進行從庫的配置
      1. 修改MySQL數據庫的配置文件my.cnf文件,在文件最下面添加設置服務器的唯一id
        1. server-id=102
        2. server-id:[必須]服務器唯一ID
      2. 重啟MySQL服務
        1. ./mysql.server restart
    6. 登錄從庫的MySQL數據庫,設置主庫的地址以及對應的同步位置,依次執行下列指令
      1. change master to master_host='192.168.xxx.xxx',master_user='syncdata',master_password='Sync@Data123',master_log_file='mysql-bin.000009',master_log_pos=433;start slave;
      2. 上面的指令信息說明為:
        1. master_host :主庫的IP地址,即需要根據實際情況的ip設定
        2. master_user :訪問主庫進行主從復制的用戶名,也就是上面所在主庫創建的
        3. master_password :訪問主庫進行主從復制的用戶名對應的密碼
        4. master_log_file : 從哪個日志文件開始同步,也就是上面查詢master狀態中展示的File
        5. master_log_pos : 從指定日志文件的哪個位置開始同步,也就是查詢master狀態中展示的Position
    7. 然后查看從庫數據庫的狀態
      1. show slave status \G
      2. 可以通過狀態信息中的?Slave_IO_Running 和Slave_SQL_Running 可以看出主從同步是否就緒,如果這兩個參數全為Yes,則表示主從同步已經配置完成
    8. 若狀態是Slave_IO_Running: No,Slave_SQL_Running: Yes,說明同步不成功,則需要前往MySQL的log錯誤日志查看報錯信息
      1. 若出現文件[ERROR] Slave I/O for channel '': Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593的解決方案
        1. 找到從數據庫的該文件對應的 UUID,該文件為/home/dev/dev-install/mysql-5.7.40/data/auto.cnf,然后編輯auto.cnf,將里面uuid的值隨便改一個即可,然后保存文件

        2. 保存完文件重新啟動MySQL服務器即可
        3. 再次通過 show slave status \G 查看從數據庫的狀態
    9. 主從環境的測試
      1. 我們已經把主從復制的環境搭建好了,接下來我們可以通過Navicat連接上兩臺MySQL服務器進行測試,我們只需要在主庫master上執行操作,然后再查看從庫slave中是否將數據同步過去即可
        1. 主庫創建數據庫,刷新并查看從庫是否可以正常同步過去
        2. 可以發現主庫創建的數據庫已經同步到從庫,證明主從復制已經驗證成功

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

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

相關文章

淺析jdk8所包含的主要特性

至今Java 8仍然是許多開發者首選的JDK版本,Java 8的生態系統非常成熟,許多庫和框架都已經適配了Java 8。遷移到新的Java版本可能需要重新評估和調整現有的依賴關系,這對于一些大型項目可能是一個挑戰。那么Java 8有哪些特性讓多數開發者鐘愛呢…

西米支付:如何設計和構建游戲支付系統?

如何設計和構建游戲支付系統? 目前,游戲開發中最常見的支付方式包括微信支付、支付寶支付和蘋果支付等。今天,我將與大家分享游戲支付系統的架構和設計。 游戲支付的主要業務流程是指游戲玩家在游戲中購買虛擬物品或服務所進行的支付過程。一…

ElasticSearch 7 SQL 詳解

平時使用Elasticsearch的時候,會在Kibana中使用Query DSL來查詢數據.每次要用到Query DSL時都基本忘光了,需要重新在回顧一遍,最近發現Elasticsearch已經支持SQL查詢了(6.3版本以后),整理了下一些用法. 簡介 Elasticsearch SQL是一個X-Pack組件,它允許針對Elasticsearch實時執…

ESP32之避障

ESP32之避障 圖片 程序 int Led27;//定義LED 接口 int buttonpin4; //定義光遮斷傳感器接口 int val;//定義數字變量val void setup() { pinMode(Led,OUTPUT);//定義LED 為輸出接口 pinMode(buttonpin,INPUT);//定義避障傳感器為輸出接口 } void loop() {Serial.begin(9600);…

保姆級 Keras 實現 YOLO v3 一

保姆級 Keras 實現 YOLO v3 一 一. YOLO v3 總覽二. 特征提取網絡特征提取網絡代碼實現 三. 特征融合特征融合代碼實現 四. 網絡輸出模型輸出代碼實現 五. 網絡模型代碼實現六. 代碼下載 如果要給 YOLO 目標檢測算法一個評價的話, 就是快和準, 現在已經到了 v8, 但是我為什么還…

如何開啟MySQL的慢查詢日志

說明:如果需要查看某一條SQL查詢速度慢,并對慢的SQL進行優化,那么開啟MySQL慢查詢日志是一定要做的事情,本文介紹如何開啟MySQL的慢查詢日志; 查看MySQL慢查詢是否開啟 首先,輸入下面的命令,查…

為什么 x86 操作系統從 0x7c00 處開始

0x00:x86 架構 BIOS 引導加載程序中的"0x7C00"之謎 你知道 x86 操作系統中的"0x7C00"這個神奇數字嗎 ? "0x7C00" 是BIOS加載MBR(主引導記錄,磁盤中的第一個扇區)的內存地址。操作系統或引導加載…

2-Linux學習環境搭建

1 Linux學習環境搭建 1.1 虛擬化介紹 # win 機器----》裝一個虛擬化軟件----》虛擬化出linux操作系統# kvm vmware openstack docker k8s # kvm vmware 虛擬化軟件 -運行在linux上,做虛擬化的軟件 -vmware運行在win,linux,商業軟件…

AMEYA360:瑞薩面向高端工業傳感器系統推出高精度模擬前端的32位RX MCU

全球半導體解決方案供應商瑞薩電子(TSE:6723)宣布面向高端工業傳感器系統推出一款全新RX產品——RX23E-B,擴展32位微控制器(MCU)產品線。新產品作為廣受歡迎的RX產品家族的一員,具有高精度模擬前…

hadoop2.x linux集群部署

hadoop2.x 集群部署 下載hadoop需要提前準備好jdk1.8 和rsync 和ssl集群信息解壓安裝配置環境變量配置site配置文件(/hadoop/etc/hadoop目錄下)core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xmlhadoop-env.sh要追加java_home!配置節點slaves 配置免密ssh訪問沒有ssh-co…

【計算方法與科學建模】矩陣特征值與特征向量的計算(四):乘冪法及其python實現

文章目錄 一、Jacobi 旋轉法二、Jacobi 過關法三、Householder 方法四、乘冪法 矩陣的特征值(eigenvalue)和特征向量(eigenvector)在很多應用中都具有重要的數學和物理意義。 本文將詳細介紹乘冪法的基本原理和步驟,并…

【JavaSE】基礎筆記 - 異常(Exception)

目錄 1、異常的概念和體系結構 1.1、異常的概念 1.2、 異常的體系結構 1.3 異常的分類 2、異常的處理 2.1、防御式編程 2.2、異常的拋出 2.3、異常的捕獲 2.3.1、異常聲明throws 2.3.2、try-catch捕獲并處理 3、自定義異常類 1、異常的概念和體系結構 1.1、異常的…

datasets.Dataset.map方法學習筆記

Dataset.map 方法概要 可以將datasets中的Dataset實例看做是一張數據表。map方法會將輸入的function按照指定的方式應用在每一行(每一行稱為一個example)上。本文采用一下示例進行說明: from datasets import Dataset # datasets.__versi…

前端開發工具集合

文章目錄 Visual Studio Code (VS Code)安裝及配置一、安裝二、常用插件三、相關配置四、統一配置代碼 Visual Studio Code (VS Code)安裝及配置 一、安裝 下載地址:https://code.visualstudio.com/ ?> VS Code 下載慢,解決辦法請點擊 雙擊下載文件…

Java零基礎——SpringMVC篇

1.SpringMVC介紹 SpringMVC是Spring框架中的一個組件,是一個輕量級的web的MVC框架,充當controller,其本質就是一個Servlet。 1.1 傳統Servlet的不足 每個請求,都需要定義一個Servlet。雖然可以在service方法中,根據業務標識進行…

【Linux 帶寬限速】trickle,限制docker 上傳速度

限制docker 上傳速度 然而,你可以使用第三方工具來實現這個目的。一個常用的工具是 trickle,它可以模擬網絡帶寬。 首先,你需要安裝 trickle。在 Ubuntu 上,可以使用以下命令安裝: sudo apt-get install trickle然后…

deepxde 源碼閱讀筆記(長期更新)

2023.11.23 閱讀的deepxde version: 1.9.0 1. train_aux_vars ,即pde當中的第三個參數 這個變量的含義困惑很久。最后發現就是operator learning的PDEs方程parameters。 脈絡:def pde aux_vars-> deepxde目前支持tf1最多,但是對其他框架…

系列二、Spring整合單元測試

一、概述 Spring中獲取bean最常見的方式是通過ClassPathXmlApplicationContext 或者 AnnotationConfigApplicationContext的getBean()方式獲取bean,那么在Spring中如何像在SpringBoot中直接一個類上添加個SpringBootTest注解,即可在類中注入自己想要測試…

優秀的企業協同OA系統如何促進團隊協作?

優秀的企業協同OA系統可以幫助團隊協同工作變得更簡單、更高效。 一、以下是一些優秀的企業協同OA系統可以幫助團隊協作的方法: 1、提高工作效率 優秀的企業協同OA系統可以提高工作效率,減少工作的重復性和低效率。例如,可以使用共享日歷和…

vue2生命周期

前言 vue的生命周期其實可以分為兩塊,一個是vue實例的生命周期,一個是組件的生命周期。 vue實例的生命周期方法共有4個:$mout,$forceUpdate,$nextTick,$destroy vue組件的生命周期鉤子共有8個:beforeCreate,created,beforeMount,mounted,beforeUpdate, updated,beforeDestr…