單個mysql數據庫在處理業務的時候確定是有限的,這時咱們擴展數據庫的第一種方式就是對數據庫作讀寫分離(主從複製)
,本文咱們就先來介紹下怎麼來實現mysql的主從複製操做。mysql
原理:須要搭建主從模式,讓主數據庫(master)處理事務性增、改、刪操做(INSERT、UPDATE、DELETE),而從數據庫(slave)處理 SELECT 查詢操做。
Mycat 配合數據庫自己的複製功能,能夠解決讀寫分離的問題。程序員
什麼是主從備份: 就是一種主備模式的數據庫應用.
主庫(Master)數據與備庫(Slave)數據徹底一致.
實現數據的多重備份, 保證數據的安全.
能夠在 Master[InnoDB
]和 Slave[MyISAM
]中使用不一樣的數據庫引擎,實現讀寫的分離
InnoDB
:支持事務處理
MyISAM
:不支持事務處理sql
在老舊版本的 MySQL 數據庫系統中,不支持主從備份,須要安裝額外的 RPM 包.若是須要安裝 RPM,只能在一個位置節點安裝.數據庫
保證數據的安全. 儘可能避免數據丟失的可能.後端
使用不一樣的數據庫引擎,實現讀寫分離.提升全部的操做效率.
InnoDB 使用 DML 語法操做. MyISAM 使用 DQL 語法操做.安全
全部對 Master 的操做,都會同步到 Slave 中.若是 Master 和 Salve 天生上環境不一樣,那麼對 Master 的操做,可能會在 Slave 中出現錯誤如: 在建立主從模式以前,Master 有 database : db1, db2, db3. Slave 有 database: db1, db2.建立主從模式.如今的狀況 Master 和 Slave 天生不一樣.主從模式建立成功後,在 Master 中 drop database db3. Slave 中拋出數據庫 SQL 異常.後續全部的命令不能同步.一旦出現錯誤. 只能從新實現主從模式.bash
mysql安裝教程:
https://blog.csdn.net/weixin_45600622/article/details/102647528
環境地址:
主節點:192.168.88.180
從節點:192.168.88.181微信
路徑:/etc/my.cnf前後端分離
本環境中 server_id 是 1
MySQL 服務惟一標識
配置要求:
server_id 任意配置,只要是數字便可
server_id Master 惟一標識數字必須小於 Slave 惟一標識數字.ide
本環境中 log_bin 值 : master_log
開啓日誌功能以及日誌文件命名,log_bin=master_log
變量的值就是日誌文件名稱.是日誌文件名稱的主體.
MySQL 數據庫自動增長文件名後綴和文件類型.
service mysql restart
複製代碼
從mysql的安裝路徑下進入
./bin/mysql -uroot -h127.0.0.1 -p123456
複製代碼
在 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; 複製代碼
use mysql; select host, user from user; 複製代碼
master_log.00003就是主從複製中從數據庫要讀取的日誌文件。
注意
:關閉防火牆或在防火牆中開放 3306 端口
從庫的 server_id要比主庫中的server_id的值要大
而後重啓mysql服務
stop slave
複製代碼
須要修改的數據是依據 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
’;
start 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就會從新分配!
在master上新建一個數據庫,而後查看slave中是否也有便可
create database demo2 default character set utf8; 複製代碼
create table t_user (id varchar(20),name varchar(20)); 複製代碼
insert into t_user (id,name)values('666','cxydmx'); 複製代碼
經過演示咱們發現主數據庫的修改會及時的同步到從數據庫,這樣mysql的主從配置就OK了,好了本文就到此,下篇來詳細介紹一下MyCat的安裝與配置