日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL(9)主从复制和读写分离

發布時間:2025/3/8 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL(9)主从复制和读写分离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.理解MySQL主從復制原理。

復制是MySQL提供的一直高可用、高性能的解決方案,一般用來建立大型的應用,總體來說,分為以下三步:
?? ?(1)master將改變記錄到二進制日志(binary log)中(這些記錄叫做二進制日志事件,binary log events);
??? (2)slave將master的binary log events拷貝到它的中繼日志(relay log);
??? (3)slave重做中繼日志中的事件,將改變反映它自己的數據。

2.完成MySQL主從復制。?

=============================================================

1.在主服務器(master)上

啟用二進制日志

選擇一個唯一的server-id

創建具有復制權限的用戶

2.在從服務器(slave)上

啟用中繼日志(二進制日志可開啟,也可不開啟)

選擇一個唯一的server-id

連接至主服務器,并開始復制

==============================================================

1)設置server-id值并開啟binlog參數

[mysqld]

log-bin = mysql-bin

server_id = 1

停止數據庫# systemctl stop mysqld

啟動數據庫#systemctl start mysqld

show variables like '%log_bin%';

可見log-bin 開

2)建立同步賬號

mysql> grant replication slave? on *.* to? rep@'192.168.95.%' identified by'123456';

mysql> show? grants?? for?? rep@'192.168.95.%';

3)鎖表設置只讀

為后面備份準備,注意生產環境要提前申請停機時間;

mysql> flush? tables with read lock;

提示:如果超過設置時間不操作會自動解鎖。

mysql> show variables? like'%timeout%';

測試鎖表后是否可以創建數據庫:

4)查看主庫狀態

查看主庫狀態,即當前日志文件名和二進制日志偏移量

mysql> show? master status;

5)備份數據庫數據

# mysqldump -uroot -p -A -B |gzip >?? /backup/mysql/mysql_bak.$(date +%F).sql.gz

6)解鎖

mysql> unlock? tables;

7)主庫備份數據上傳到從庫

scp mysql_bak.2021-01-26.sql.gz 192.168.83.134:/tmp

從庫上設置

1)設置server-id值并關閉binlog參數

停止數據庫# systemctl stop mysqld

啟動數據庫#systemctl start mysqld

2)還原從主庫備份數據

# cd /server/backup/

# gzip -d mysql_bak.2015-11-18.sql.gz

# mysql -uroot -p < mysql_bak.2015-11-18.

sql檢查還原:

# mysql -uroot -p -e 'show databases;'

3)設定從主庫同步

4)啟動從庫同步開關

mysql> start slave;

檢查狀態:show? slave status\G

3.完成MySQL讀寫分離配置

Mycat實現MySQL主從復制讀寫分離

MyCAT的安裝及部署

鏈接:https://pan.baidu.com/s/16Z7NFKuL2WX8b1ZKpk9AwA
提取碼:yang

1>、部署jdk環境MyCAT用Java開發,需要有JAVA運行環境,mycat依賴jdk1.7的環境

rpm -ivh jdk-8u144-linux-x64.rpm

測試 :? java -version

2>、安裝Mycat

鏈接:https://pan.baidu.com/s/1bkDv1WkwXXr2YzBtvCRY8w
提取碼:yang

tar xf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

3)添加環境變量

export PATH=$PATH:/usr/local/mycat/bin

[root@localhost mycat]# source /etc/profile.d/mycat.sh (當前生效)

3>、讀寫分離配置

1)不使用Mycat托管MySQL主從服務器,簡單使用如下配置

#注意:配置前備份下配置文件

先做一個備份吧

打開

vim schema.xml

(1)<schema name="TESTDB"checkSQLschema="false"sqlMaxLimit="100"dataNode="dn1">

這里的TESTDB就是我們所宣稱的數據庫名稱,必須和server.xml中的用戶指定的數據庫名稱一致。添加一個dataNode="dn1",是指定了我們這個庫只有在dn1上,沒有分庫。

(2)<dataNode name="dn1"dataHost="localhost1"database="db1" />

這里只需要改database的名字,就是你真是的數據庫上的數據庫名,可根據自己的數據庫名稱修改。

(3) <dataHostname="localhost1"maxCon="1000"minCon="10"balance="1"writeType="0"dbType="mysql"dbDriver="native"switchType="1"slaveThreshold="100">

balance

1、balance=0不開啟讀寫分離機制,所有讀操作都發送到當前可用的writehostle

.2、balance=1全部的readhost與stand by writeHost 參與select語句的負載均衡。簡單的說,雙主雙從模式(M1->S1,M2->S2,并且M1和M2互為主備),正常情況下,M1,S1,S2都參與select語句的復雜均衡。

3、balance=2所有讀操作都隨機的在readhost和writehost上分發

writeType負載均衡類型,目前的取值有3種:

1、writeType="0", 所有寫操作發送到配置的第一個writeHost。

2、writeType="1",所有寫操作都隨機的發送到配置的writeHost。

3、writeType="2",不執行寫操作。

switchType

1、switchType=-1表示不自動切換

2、switchType=1默認值,自動切換

3、switchType=2基于MySQL 主從同步的狀態決定是否切換

datahost其他配置

<dataHost name="localhost1"maxCon="1000"minCon="10"balance="1"writeType="0"dbType="mysql"dbDriver="native"switchType="1">

maxCon="1000":最大的并發連接數

minCon="10":mycat在啟動之后,會在后端節點上自動開啟的連接線程

tempReadHostAvailable="1"

這個一主一從時(1個writehost,1個readhost時),可以開啟這個參數,如果2個writehost,2個readhost時

<heartbeat>select user()</heartbeat> 監測心跳

(4)寫與讀

4>、創建管理用戶

grant insert,delete,update,select on db1.* to mycat@'192.168.83.%' identified by '123456';

收回權限

revoke INSERT, UPDATE, DELETE ON school.* from 'mycat'@'192.168.83.%';

配置基本完成

?

?

總結

以上是生活随笔為你收集整理的MySQL(9)主从复制和读写分离的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。