前言
為了鞏固所學(xué)的知識,作者嘗試著開始發(fā)布一些學(xué)習(xí)筆記類的博客,方便日后回顧。當(dāng)然,如果能幫到一些萌新進(jìn)行新技術(shù)的學(xué)習(xí)那也是極好的。作者菜菜一枚,文章中如果有記錄錯(cuò)誤,歡迎讀者朋友們批評指正。
(博客的參考源碼可以在我主頁的資源里找到,如果在學(xué)習(xí)的過程中有什么疑問歡迎大家在評論區(qū)向我提出)
發(fā)現(xiàn)寶藏
前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家?!緦毑厝肟凇?。
一、問題分析
讀和寫所有壓力都由一臺數(shù)據(jù)庫承擔(dān),壓力大數(shù)據(jù)庫服務(wù)器磁盤損壞則數(shù)據(jù)丟失,單點(diǎn)故障
讀寫分離優(yōu)化程序后
二、Mysql主從復(fù)制
1. 介紹
1. 什么是Mysql主從復(fù)制
- MySOL主從復(fù)制是一個(gè)異步的復(fù)制過程,底層是基于Mysgl數(shù)據(jù)庫自帶的二進(jìn)制日志功能。
- 就是一臺或多臺MySOL數(shù)據(jù)庫(slave,即從庫)從另一臺MySL數(shù)據(jù)庫(master,即主庫)進(jìn)行日志的復(fù)制然后再解析日志并應(yīng)用到自身,最終實(shí)現(xiàn)從庫的數(shù)據(jù)和主庫的數(shù)據(jù)保持一致。
- MySOL主從復(fù)制是MySOL數(shù)據(jù)庫自帶功能,無需借助第三方工具。
2. MySQL復(fù)制過程分成三步
- master將改變記錄到二進(jìn)制日志 (binary log)
- slave將master的binary log拷貝到它的中繼日志 (relay log)
- slave重做中繼日志中的事件,將改變應(yīng)用到自己的數(shù)據(jù)庫中
2. 配置
1. 配置-前置條件
提前準(zhǔn)備好兩臺服務(wù)器,分別安裝Mysq1并啟動(dòng)服務(wù)成功
- 主庫Master 192.168.154.129
- 從庫slave 192.168.154.130
2. 配置-主庫master
- 第一步:修改Mysq1數(shù)據(jù)庫的配置文件 /etc/my.cnf
[mysqld]
log-bin=mysql-bin #[必須]啟用二進(jìn)制日志
server-id=100 #[必須]服務(wù)器唯一ID
- 第二步:重啟Mysq1服務(wù)
systemctl restart mysqld
- 第三步:登錄Mysql數(shù)據(jù)庫,執(zhí)行下面SQL
- GRANT REPLICATION SLAVE ON * .* to ‘xiaoming’@‘%’ identified by ‘Root@123456’;
- 上面SOL的作用是創(chuàng)建一個(gè)用戶xiaoming,密碼為Root@123456,并且給xiaoming用戶授予REPLICATION SLAVE權(quán)限。常用于建立復(fù)制時(shí)所需要用到的用戶權(quán)限,也就是slave必須被master授權(quán)具有該權(quán)限的用戶,才能通過該用戶復(fù)制。
注1: ON * .* 中 * 和 . 之間是沒有空格的,此處由于MD語法格式空一格
- 第四步: 登錄Mysql數(shù)據(jù)庫,執(zhí)行下面SQL,記錄下結(jié)果中File和Position的值
show master status;
注:上面SOL的作用是查看Master的狀態(tài),執(zhí)行完此SQL后不要再執(zhí)行任何操作
3. 配置-從庫slave
- 第一步: 修改Mysg1數(shù)據(jù)庫的配置文件 /etc/my.cnf
[mysqld]
server-id=101 #[必須]服務(wù)器唯一ID
- 第二步:重啟Mysq1服務(wù)
systemctl restart mysqld
- 第三步:登錄Mysq1數(shù)據(jù)庫,執(zhí)行下面SOL
- change master to
master_host=‘192.168.154.129’,master_user=‘xiaoming’,master_password=‘Root@123456’,master_log_file=‘mysql-bin.000001’,master_log_pos=441;- start slave;
000001 和 441 是根據(jù) master 庫決定的
- 第四步:登錄Mysql數(shù)據(jù)庫,執(zhí)行下面SQL,查看從數(shù)據(jù)庫的狀態(tài)
show slave status;
3. 測試
三、讀寫分離案例
1. 背景
面對日益增加的系統(tǒng)訪問量,數(shù)據(jù)庫的吞吐量面臨著巨大瓶頸。對于同一時(shí)刻有大量并發(fā)讀操作和較少寫操作類型的應(yīng)用系統(tǒng)來說,將數(shù)據(jù)庫拆分為主庫和從庫,主庫負(fù)責(zé)處理事務(wù)性的增刪改操作,從庫負(fù)責(zé)處理查詢操作,能夠有效的避免由數(shù)據(jù)更新導(dǎo)致的行鎖,使得整個(gè)系統(tǒng)的查詢性能得到極大的改善。
2. shardingDBC介紹
1. shardingDBC簡介
Sharding-IDBC定位為輕量級lava框架,在ava的]DBC層提供的額外服務(wù)。它使用客戶端直連數(shù)據(jù)庫,以jar包形式提供服務(wù),無需額外部署和依賴,可理解為增強(qiáng)版的JDBC驅(qū)動(dòng),完全兼容]DBC和各種ORM框架。使用sharding-JDBC可以在程序中輕松的實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離。
2. shardingDBC特點(diǎn)
- 適用于任何基于]DB的ORM框架,如: JPA,Hibernate,Mybatis,SpringJDBCTemplate或直接使用DBC。
- 支持任何第三方的數(shù)據(jù)庫連接池,如: DBCP,C3PO,BoneCp,Druid,HikariCP等。
- 支持任意實(shí)現(xiàn)]DBC規(guī)范的數(shù)據(jù)庫。目前支持MySQL,Oracle,SQLServer,PostgresQL以及任何遵循SQL92標(biāo)準(zhǔn)的數(shù)據(jù)庫。
3. 入門案例
- 導(dǎo)入maven坐標(biāo)
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.0.0-RC1</version>
</dependency>
- 在配置文件中配置讀寫分離規(guī)則
server:
port: 8080
mybatis-plus:
configuration:
#在映射實(shí)體或者屬性時(shí),將數(shù)據(jù)庫中表名和字段名中的下劃線去掉,按照駝峰命名法映射
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: ASSIGN_ID
spring:
shardingsphere:
datasource:
names:
master,slave
# 主數(shù)據(jù)源
master:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.138.100:3306/rw?characterEncoding=utf-8
username: root
password: root
# 從數(shù)據(jù)源
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.138.101:3306/rw?characterEncoding=utf-8
username: root
password: root
masterslave:
# 讀寫分離配置
load-balance-algorithm-type: round_robin #輪詢
# 最終的數(shù)據(jù)源名稱
name: dataSource
# 主庫數(shù)據(jù)源名稱
master-data-source-name: master
# 從庫數(shù)據(jù)源名稱列表,多個(gè)逗號分隔
slave-data-source-names: slave
props:
sql:
show: true #開啟SQL顯示,默認(rèn)false
3. 在配置文件中配置允許bean定義覆蓋配置項(xiàng)
//和spring同級
main:
allow-bean-definition-overriding: true
4. 功能測試
文章來源:http://www.zghlxwxcb.cn/news/detail-623897.html
總結(jié)
歡迎各位留言交流以及批評指正,如果文章對您有幫助或者覺得作者寫的還不錯(cuò)可以點(diǎn)一下關(guān)注,點(diǎn)贊,收藏支持一下。
(博客的參考源碼可以在我主頁的資源里找到,如果在學(xué)習(xí)的過程中有什么疑問歡迎大家在評論區(qū)向我提出)文章來源地址http://www.zghlxwxcb.cn/news/detail-623897.html
到了這里,關(guān)于MySQL主從復(fù)制入門指南:基礎(chǔ)概念和配置步驟的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!