日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

MySQL存儲計算分離實踐

本文主要說明如何基于阿里云數據庫文件存儲DBFS搭建MySQL數據庫。

背景信息

云上自建數據庫通常會選用云盤和ext4文件系統作為MySQL數據庫的文件存儲。而基于DBFS構建,不但簡化了用戶基于塊存儲架構的復雜度,而且面向數據庫場景,提供了原子寫、在線擴容、關鍵IO加速等特性。DBFS旨在為用戶提供更高的性能、更好的數據可靠性可用性及易用性等。

DBFS優勢如下表所示:

對比項

基于云盤+ext4構建

基于DBFS構建

原子寫

不支持。

支持。避免Double Write Buffer的影響。

在線擴容

不可控IO Hang現象。

業務友好。

高可用

單機架構。

共享存儲雙機高可用架構。

易用性

需要管理云盤塊設備,并且制作ext4。

掛載即用。

基于DBFS構建MySQL數據庫

以下主要詳細介紹如何基于DBFS構建MySQL的存儲計算分離架構:

  1. 申請DBFS服務

    請參考“申請與創建”。

  2. 安裝MySQL

    從官網下載安裝包:

    #下載MySQL二進制包
    wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

    解壓到DBFS掛載目錄:

    #解壓并重命名為mysql-5.7.26,放置到DBFS的掛載目錄“/mnt/dbfs/hgsrb6i*****/dbfs-ytr9rtr9**************”。
    tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
    mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql-5.7.26

    掛載目錄需要根據真實的環境,進行自行調整。可輸入“df -h”顯示掛載信息,結果如圖所示。

    文件系統      容量  已用 可用  已用% 掛載點
    devtmpfs     16G   0  16G  0% /dev
    tmpfs      16G 288K  16G  1% /dev/shm
    dbfs_server   100G  46M 100G  1% /mnt/dbfs/hgsrb6i****/dbfs-ytr9rtr9**************

    使用如下命令檢查創建好的數據庫文件存放目錄

    ls -lrt

    結果如圖所示

    總用量 0
    drwxr-xr-x 1 root root 0 11月 18 18:53 mysql-5.7.26
  3. 初始化MySQL數據庫

    1. 創建數據文件存放目錄

      在DBFS服務掛載目錄下,創建數據庫目錄“my3307”,可輸入“ls -lrt”查看創建情況,如圖所示

      總用量 0
      drwxr-xr-x 1 root root 0 11月 18 18:53 mysql-5.7.26
      drwxr-xr-x 1 root root 0 11月 18 19:30 my3307                             

      創建數據庫文件子目錄,切換到“my3307”目錄,之后輸入以下命令,創建子目錄

       mkdir data log run tmp                          

      在“my3307”目錄下創建MySQL數據庫的配置文件my.cnf,配置可參考MySQL 5.7配置文件參考

      輸入“ls -lrt”命令檢查創建好的數據庫文件存放目錄

      總用量 1024
      -rw-r--r-- 1 root root 5339 11月 18 19:27 my.cnf
      drwxr-xr-x 1 root root  0 11月 18 19:30 tmp
      drwxr-xr-x 1 root root  0 11月 18 19:30 run
      drwxr-xr-x 1 root root  0 11月 18 19:30 log
      drwxr-xr-x 1 root root  0 11月 18 19:32 data
    2. 創建數據庫

      首先初始化MySQL數據庫

      /mnt/dbfs/hgsrb6i*****/dbfs-ytr9rtr*************/mysql-5.7.26/bin/mysqld --defaults-file=/mnt/dbfs/hgsrb6i*****/dbfs-ytr9rtr9*************/my3307/my.cnf --initialize-insecure --user=root

      data目錄下輸入“ls -lrt”查看初始化完成后的data目錄,結果如圖所示

      總用量 4160512
      -rw-r----- 1 root root 1073741824 11月 18 19:27 ibdata1
      -rw-r----- 1 root root 1073741824 11月 18 19:27 ibdata2
      -rw-r----- 1 root root  524288000 11月 18 19:28 ib_logfile0
      -rw-r----- 1 root root  524288000 11月 18 19:28 ib_logfile1
      -rw-r----- 1 root root  524288000 11月 18 19:29 ib_logfile2
      -rw-r----- 1 root root  524288000 11月 18 19:29 ib_logfile3
      -rw-r----- 1 root root         56 11月 18 19:29 auto.cnf
      drwxr-x--- 1 root root          0 11月 18 19:29 performance_schema
      drwxr-x--- 1 root root          0 11月 18 19:29 mysql
      drwxr-x--- 1 root root          0 11月 18 19:29 sys
      -rw-r--r-- 1 root root        406 11月 18 19:29 ib_buffer_pool
      -rw-r----- 1 root root   12582912 11月 18 19:30 ibtmp1
      -rw-r--r-- 1 root root          5 11月 18 19:30 dbfs-node-1.pid
      drwxr-x--- 1 root root          0 11月 18 19:32 sbtest
  4. 運行MySQL數據庫

    通過DBFS掛載點下MySQL二進制安裝目錄中的mysqld拉起數據庫:

    /mnt/dbfs/hgsrb6i*****/dbfs-ytr9rtr9*************/mysql-5.7.26/bin/mysqld --defaults-file=/mnt/dbfs/hgsrb6i*****/dbfs-ytr9rtr9************/my3307/my.cnf --user=root &                     

    登錄MySQL數據庫:

    /mnt/dbfs/hgsrb6i*****/dbfs-ytr9rtr9************/mysql-5.7.26/bin/mysql -uroot --socket=/mnt/dbfs/hgsrb6i*****/dbfs-ytr9rtr9**************/my3307/run/mysql.sock

    輸出結果如下

    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 2
    Server version: 5.7.26-log MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>
                            
  5. sysbench測試

    • sysbench準備

      執行如下命令下載sysbench

      git clone https://github.com/akopytov/sysbench.git -b 1.0.17

      執行如下命令安裝sysbench

      sh autogen.sh
      ./configure
      make && make install

      登錄MySQL數據庫

      /mnt/dbfs/hgsrb6*****/dbfs-ytr9rtr9*************/mysql-5.7.26/bin/mysql -uroot --socket=/mnt/dbfs/hgsrb6i*****/dbfs-ytr9rtr9**************/my3307/run/mysql.sock

      在MySQL中執行如下命令,創建sysbench測試賬號

      create user 'sbtest'@'%';
      create database sbtest;
      grant all privileges on *.* to 'sbtest'@'%' identified by 'sbtest';

      執行如下命令,初始化數據

      sysbench --db-driver=mysql --report-interval=1 --mysql-table-engine=innodb \
      --oltp-table-size=10000 --oltp-tables-count=32 --threads=32 --time=1000 \
      --mysql-host=127.0.0.1 --mysql-port=3307 --mysql-user=sbtest --mysql-password=sbtest \
      --mysql-db=sbtest /opt/sysbench/tests/include/oltp_legacy/oltp.lua prepare

      執行如下命令,跑OLTP模型

      sysbench --db-driver=mysql --report-interval=1 --mysql-table-engine=innodb \
      --oltp-table-size=10000 --oltp-tables-count=32 --threads=32 --time=1000 \
      --mysql-host=127.0.0.1 --mysql-port=3307 --mysql-user=sbtest --mysql-password=sbtest \
      --mysql-db=sbtest /opt/sysbench/tests/include/oltp_legacy/oltp.lua run
                                      
    • 性能數據

      性能數據參考《MySQL 性能測試