MyCat教程二:mysql主從複製實現

  單個mysql數據庫在處理業務的時候確定是有限的,這時咱們擴展數據庫的第一種方式就是對數據庫作讀寫分離(主從複製),本文咱們就先來介紹下怎麼來實現mysql的主從複製操做。mysql

1. 讀寫分離

  原理:須要搭建主從模式,讓主數據庫(master)處理事務性增、改、刪操做(INSERT、UPDATE、DELETE),而從數據庫(slave)處理 SELECT 查詢操做。
  Mycat 配合數據庫自己的複製功能,能夠解決讀寫分離的問題。程序員

2.主從備份概念

什麼是主從備份: 就是一種主備模式的數據庫應用.
主庫(Master)數據與備庫(Slave)數據徹底一致.
實現數據的多重備份, 保證數據的安全.
能夠在 Master[InnoDB]和 Slave[MyISAM]中使用不一樣的數據庫引擎,實現讀寫的分離
InnoDB:支持事務處理
MyISAM:不支持事務處理sql

2.1 MySQL5.5, 5.6 版本後自己支持主從備份

  在老舊版本的 MySQL 數據庫系統中,不支持主從備份,須要安裝額外的 RPM 包.若是須要安裝 RPM,只能在一個位置節點安裝.數據庫

2.2 主從備份目的

2.2.1 實現主備模式

  保證數據的安全. 儘可能避免數據丟失的可能.後端

2.2.2 實現讀寫分離

  使用不一樣的數據庫引擎,實現讀寫分離.提升全部的操做效率.
  InnoDB 使用 DML 語法操做. MyISAM 使用 DQL 語法操做.安全

2.3 主從備份效果

2.3.1 主庫操做同步到備庫

  全部對 Master 的操做,都會同步到 Slave 中.若是 Master 和 Salve 天生上環境不一樣,那麼對 Master 的操做,可能會在 Slave 中出現錯誤如: 在建立主從模式以前,Master 有 database : db1, db2, db3. Slave 有 database: db1, db2.建立主從模式.如今的狀況 Master 和 Slave 天生不一樣.主從模式建立成功後,在 Master 中 drop database db3. Slave 中拋出數據庫 SQL 異常.後續全部的命令不能同步.一旦出現錯誤. 只能從新實現主從模式.bash

2.4 主從模式下的邏輯圖

在這裏插入圖片描述

3. MySQL主從模式搭建

3.1 安裝MYSQL

mysql安裝教程:
https://blog.csdn.net/weixin_45600622/article/details/102647528
環境地址:
主節點:192.168.88.180
從節點:192.168.88.181微信

在這裏插入圖片描述
在這裏插入圖片描述

3.2 主庫配置修改(Master)

路徑:/etc/my.cnf前後端分離

3.2.1 server_id配置

本環境中 server_id 是 1
MySQL 服務惟一標識
配置要求:
server_id 任意配置,只要是數字便可
server_id Master 惟一標識數字必須小於 Slave 惟一標識數字.ide

在這裏插入圖片描述

3.2.2 log_bin配置

本環境中 log_bin 值 : master_log
開啓日誌功能以及日誌文件命名,log_bin=master_log
變量的值就是日誌文件名稱.是日誌文件名稱的主體.
MySQL 數據庫自動增長文件名後綴和文件類型.

在這裏插入圖片描述

3.2.3 重啓mysql

service mysql restart

  
  
  

 
複製代碼

3.2.4 登陸mysql

從mysql的安裝路徑下進入

./bin/mysql -uroot -h127.0.0.1 -p123456

  
  
  

 
複製代碼

在這裏插入圖片描述

3.2.5 建立用戶

在 MySQL 數據庫中,爲不存在的用戶受權,就是同步建立用戶並受權.
此用戶是從庫訪問主庫使用的用戶
ip 地址不能寫爲%. 由於主從備份中,當前建立的用戶,是給從庫 Slave 訪問主庫 Master使用的.用戶必須有指定的訪問地址.不能是通用地址.
grant all privileges on *.* to ‘username’@’ip’ identified by ‘password’ with grant option;
flush privileges;

grant all privileges on *.* to 'myslave'@'192.168.88.181' identified by 'myslave' with grant 
option;
flush privileges;

  
  
  

 
複製代碼

3.2.6 查看用戶

use mysql;
select host, user from user;

  
  
  

 
複製代碼

在這裏插入圖片描述

3.2.7 查看 Master 信息

在這裏插入圖片描述

master_log.00003就是主從複製中從數據庫要讀取的日誌文件。
注意:關閉防火牆或在防火牆中開放 3306 端口

3.3 從庫配置修改(slave)

3.3.1 修改my.cnf的server_id

  從庫的 server_id要比主庫中的server_id的值要大

在這裏插入圖片描述
而後重啓mysql服務

3.3.2 鏈接mysql服務

在這裏插入圖片描述

3.3.3 中止 Slave 功能

stop slave

  
  
  

 
複製代碼

3.3.4 配置主庫信息

  須要修改的數據是依據 Master 信息修改的.ip 是 Master 所在物理機 IP. 用戶名和密碼是Master 提供的 Slave 訪問用戶名和密碼. 日誌文件是在 Master 中查看的主庫信息提供的.在Master 中使用命令 show master status 查看日誌文件名稱.
change master to master_host=’ip’, master_user=’username’, master_password=’password’, master_log_file=’log_file_name’;

3.3.5 啓動 Slave 功能

start slave;

  
  
  

 
複製代碼

3.3.6 查看 Slave 配置

show slave status \G; # \G 行轉列

  
  
  

 
複製代碼

在這裏插入圖片描述

注意:若是輸出中有以下提示:

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it). 

  
  
  

 
複製代碼

緣由是覺得兩個數據庫是克隆出來的,因此uuid是一致的,這時只須要刪除掉一個uuid便可,具體以下:

在這裏插入圖片描述

auto.cnf 註釋掉或者刪除掉,重啓mysql就會從新分配!

4. 主從測試

4.1 建立數據庫同步

在master上新建一個數據庫,而後查看slave中是否也有便可

在這裏插入圖片描述

create database demo2 default character set utf8;

  
  
  

 
複製代碼

在這裏插入圖片描述

4.2 建立table同步

create table t_user (id varchar(20),name varchar(20));

  
  
  

 
複製代碼

在這裏插入圖片描述

4.3 數據操做同步

insert into t_user (id,name)values('666','cxydmx');

  
  
  

 
複製代碼

在這裏插入圖片描述

經過演示咱們發現主數據庫的修改會及時的同步到從數據庫,這樣mysql的主從配置就OK了,好了本文就到此,下篇來詳細介紹一下MyCat的安裝與配置



關注微信公衆號【程序員的夢想】,專一於Java,SpringBoot,SpringCloud,微服務,Docker以及先後端分離等全棧技術。

在這裏插入圖片描述
相關文章
相關標籤/搜索