1. 程式人生 > 其它 >【SQL基礎】多表查詢:子查詢、連線查詢(JOIN)、組合查詢(UNION聯合)

【SQL基礎】多表查詢:子查詢、連線查詢(JOIN)、組合查詢(UNION聯合)

mysql的主從複製

問題:當我們在使用資料庫時,在一個程式中要是面臨很多的使用者同時進行訪問,那樣大量的訪問資料庫,這就造成了大量的讀寫壓力都有一臺資料來承擔,壓力大,造成資料庫伺服器的磁碟損壞則資料會丟失,單點故障。

 

解決問題:使用多臺資料來分擔壓力,同時資料庫有多個可以實現資料備份,以及讀寫分離。

 


Mysql主從複製

配置-前置條件

提前準備好兩臺伺服器,分別安裝mysql 並啟動伺服器。

配置-主庫Master

[mysqld]
log-bin=mysql-bin #[必須]啟動二進位制日誌
server-id=100 #[必須]伺服器的唯一ID

其中的server-id不是固定的,可以自己給個id

在修改完配置檔案後,我們需要去重新整理服務,是修改完後,可以正常啟動

systemctl restart mysqld

然後登入Mysql資料庫,施行sql

GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456'

第四步:

show master status

從庫的配置

change master to master_host='192.168.138.100',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=439;
start slave;

注意:使用mysql-bin.000001是從主從配置裡面的第四步進行查詢的。master_log_pos=439也是查詢到的。

在進行時出現上面的錯誤,按照提示的去進行關閉slave;

 

讀寫分離

Sharding-JDBC來幫助我們完成讀寫分離

相關座標:

<!--        Sharding-JDBC來幫助我們完成讀寫分離-->
       <dependency>
           <groupId>org.apache.shardingsphere</groupId>
           <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
           <version>4.0.0-RC1</version>
       </dependency>

Sharding-JDBC入門案例

在配置檔案yml中進行配置:

server:
port: 8080
spring:
shardingsphere:
  datasource:
    names:
      master,slave
     # 主資料來源
    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
     # 從資料來源
    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 # 負載均衡,這個值的是從庫(從庫可能有多個)的負載均衡的策略,輪換著來從每個從庫中
     # 最終的資料來源名稱
    name: dataSource
     # 主庫資料來源名稱
    master-data-source-name: master
     # 從庫資料來源名稱列表,多個逗號分隔
    slave-data-source-names: slave
  props:
    sql:
      show: true #開啟SQL顯示,預設false
main:
  allow-bean-definition-overriding: true
mybatis-plus:
configuration:
   #在對映實體或者屬性時,將資料庫中表名和欄位名中的下劃線去掉,按照駝峰命名法對映
  map-underscore-to-camel-case: true
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
  db-config:
    id-type: ASSIGN_ID

要是沒有進行配置

main:
allow-bean-definition-overriding: true

會進行報錯,這個報錯是,配置的資料資料無法識別讀取資料庫