主从mysql能过滤指定dml吗_MyCat教程二:mysql主从复制实现 - HG-93
單個(gè)mysql數(shù)據(jù)庫(kù)在處理業(yè)務(wù)的時(shí)候肯定是有限的,這時(shí)我們擴(kuò)展數(shù)據(jù)庫(kù)的第一種方式就是對(duì)數(shù)據(jù)庫(kù)做讀寫分離(主從復(fù)制),本文我們就先來(lái)介紹下怎么來(lái)實(shí)現(xiàn)mysql的主從復(fù)制操作。
1. 讀寫分離
原理:需要搭建主從模式,讓主數(shù)據(jù)庫(kù)(master)處理事務(wù)性增、改、刪操作(INSERT、UPDATE、DELETE),而從數(shù)據(jù)庫(kù)(slave)處理 SELECT 查詢操作。
??Mycat 配合數(shù)據(jù)庫(kù)本身的復(fù)制功能,可以解決讀寫分離的問(wèn)題。
2.主從備份概念
什么是主從備份: 就是一種主備模式的數(shù)據(jù)庫(kù)應(yīng)用.
主庫(kù)(Master)數(shù)據(jù)與備庫(kù)(Slave)數(shù)據(jù)完全一致.
實(shí)現(xiàn)數(shù)據(jù)的多重備份, 保證數(shù)據(jù)的安全.
可以在 Master[InnoDB]和 Slave[MyISAM]中使用不同的數(shù)據(jù)庫(kù)引擎,實(shí)現(xiàn)讀寫的分離
InnoDB:支持事務(wù)處理
MyISAM:不支持事務(wù)處理
2.1 MySQL5.5, 5.6 版本后本身支持主從備份
在老舊版本的 MySQL 數(shù)據(jù)庫(kù)系統(tǒng)中,不支持主從備份,需要安裝額外的 RPM 包.如果需要安裝 RPM,只能在一個(gè)位置節(jié)點(diǎn)安裝.
2.2 主從備份目的
2.2.1 實(shí)現(xiàn)主備模式
保證數(shù)據(jù)的安全. 盡量避免數(shù)據(jù)丟失的可能.
2.2.2 實(shí)現(xiàn)讀寫分離
使用不同的數(shù)據(jù)庫(kù)引擎,實(shí)現(xiàn)讀寫分離.提高所有的操作效率.
??InnoDB 使用 DML 語(yǔ)法操作. MyISAM 使用 DQL 語(yǔ)法操作.
2.3 主從備份效果
2.3.1 主庫(kù)操作同步到備庫(kù)
所有對(duì) Master 的操作,都會(huì)同步到 Slave 中.如果 Master 和 Salve 天生上環(huán)境不同,那么對(duì) Master 的操作,可能會(huì)在 Slave 中出現(xiàn)錯(cuò)誤如: 在創(chuàng)建主從模式之前,Master 有 database : db1, db2, db3. Slave 有 database: db1, db2.創(chuàng)建主從模式.現(xiàn)在的情況 Master 和 Slave 天生不同.主從模式創(chuàng)建成功后,在 Master 中 drop database db3. Slave 中拋出數(shù)據(jù)庫(kù) SQL 異常.后續(xù)所有的命令不能同步.一旦出現(xiàn)錯(cuò)誤. 只能重新實(shí)現(xiàn)主從模式.
2.4 主從模式下的邏輯圖
3. MySQL主從模式搭建
3.1 安裝MYSQL
mysql安裝教程:
https://blog.csdn.net/weixin_45600622/article/details/102647528
環(huán)境地址:
主節(jié)點(diǎn):192.168.88.180
從節(jié)點(diǎn):192.168.88.181
3.2 主庫(kù)配置修改(Master)
路徑:/etc/my.cnf
3.2.1 server_id配置
本環(huán)境中 server_id 是 1
MySQL 服務(wù)唯一標(biāo)識(shí)
配置要求:
server_id 任意配置,只要是數(shù)字即可
server_id Master 唯一標(biāo)識(shí)數(shù)字必須小于 Slave 唯一標(biāo)識(shí)數(shù)字.
3.2.2 log_bin配置
本環(huán)境中 log_bin 值 : master_log
開啟日志功能以及日志文件命名,log_bin=master_log
變量的值就是日志文件名稱.是日志文件名稱的主體.
MySQL 數(shù)據(jù)庫(kù)自動(dòng)增加文件名后綴和文件類型.
3.2.3 重啟mysql
service mysql restart
3.2.4 登錄mysql
從mysql的安裝路徑下進(jìn)入
./bin/mysql -uroot -h127.0.0.1 -p123456
3.2.5 創(chuàng)建用戶
在 MySQL 數(shù)據(jù)庫(kù)中,為不存在的用戶授權(quán),就是同步創(chuàng)建用戶并授權(quán).
此用戶是從庫(kù)訪問(wèn)主庫(kù)使用的用戶
ip 地址不能寫為%. 因?yàn)橹鲝膫浞葜?當(dāng)前創(chuàng)建的用戶,是給從庫(kù) Slave 訪問(wèn)主庫(kù) Master使用的.用戶必須有指定的訪問(wèn)地址.不能是通用地址.
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就是主從復(fù)制中從數(shù)據(jù)庫(kù)要讀取的日志文件。
注意:關(guān)閉防火墻或在防火墻中開放 3306 端口
3.3 從庫(kù)配置修改(slave)
3.3.1 修改my.cnf的server_id
從庫(kù)的 server_id要比主庫(kù)中的server_id的值要大
然后重啟mysql服務(wù)
3.3.2 連接mysql服務(wù)
3.3.3 停止 Slave 功能
stop slave
3.3.4 配置主庫(kù)信息
需要修改的數(shù)據(jù)是依據(jù) Master 信息修改的.ip 是 Master 所在物理機(jī) IP. 用戶名和密碼是Master 提供的 Slave 訪問(wèn)用戶名和密碼. 日志文件是在 Master 中查看的主庫(kù)信息提供的.在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 啟動(dòng) Slave 功能
start slave;
3.3.6 查看 Slave 配置
show slave status \G; # \G 行轉(zhuǎn)列
注意:如果輸出中有如下提示:
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).
原因是以為兩個(gè)數(shù)據(jù)庫(kù)是克隆出來(lái)的,所以u(píng)uid是一致的,這時(shí)只需要?jiǎng)h除掉一個(gè)uuid即可,具體如下:
把a(bǔ)uto.cnf 注釋掉或者刪除掉,重啟mysql就會(huì)重新分配!
4. 主從測(cè)試
4.1 創(chuàng)建數(shù)據(jù)庫(kù)同步
在master上新建一個(gè)數(shù)據(jù)庫(kù),然后查看slave中是否也有即可
create database demo2 default character set utf8;
4.2 創(chuàng)建table同步
create table t_user (id varchar(20),name varchar(20));
4.3 數(shù)據(jù)操作同步
insert into t_user (id,name)values('666','bobo');
通過(guò)演示我們發(fā)現(xiàn)主數(shù)據(jù)庫(kù)的修改會(huì)及時(shí)的同步到從數(shù)據(jù)庫(kù),這樣mysql的主從配置就OK了,好了本文就到此,下篇來(lái)詳細(xì)介紹一下MyCat的安裝與配置
關(guān)注微信公眾號(hào)【程序員的夢(mèng)想】,專注于Java,SpringBoot,SpringCloud,微服務(wù),Docker以及前后端分離等全棧技術(shù)。
總結(jié)
以上是生活随笔為你收集整理的主从mysql能过滤指定dml吗_MyCat教程二:mysql主从复制实现 - HG-93的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java this$0_java中thi
- 下一篇: java 中window_教你如何在wi