久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何搭建MYSQL8和CENTOS7.6

168次閱讀
沒有評論

共計 10309 個字符,預計需要花費 26 分鐘才能閱讀完成。

本篇文章為大家展示了如何搭建 MYSQL8 和 CENTOS7.6,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

一、環境準備

總共 3 個 IP 地址:2 個物理機 IP,1 個 VIP

MASTER:10.18.96.15

SLAVE:      10.18.96.16

VIP:        10.18.96.17

操作系統:CENTOS7.6

數據庫:MYSQL8.0.20

我的硬件資源是 8 核 16G

MYSQL8 下載地址:

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.20.tar.gz

依賴下載地址:

https://mirrors.ustc.edu.cn/gnu/gmp/gmp-6.1.2.tar.xz

https://mirrors.ustc.edu.cn/gnu/mpfr/mpfr-4.0.2.tar.gz

https://mirrors.ustc.edu.cn/gnu/mpc/mpc-1.1.0.tar.gz

https://mirrors.ustc.edu.cn/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.gz

https://github.com/Kitware/CMake/releases/download/v3.15.2/cmake-3.15.2.tar.gz

(CMAKE 如果使用 YUM 源安裝了 CMAKE3,也可以不下載了)

二、依賴安裝

在安裝 MYSQL8 之前,得先有前置準備,否則就是各種報錯,無法安裝

1、GCC 編譯安裝

yum -y install epel-release

yum -y group install Development Tools

mysql 依賴

yum -y install ncurses-devel openssl openssl-devel bison

yum install cmake3

2、安裝 gcc 源碼編譯依賴

## 先編譯 gmp- mpfr- mpc

cd  /usr/local/src/

編譯: gmp-6.1.2

tar -xvf /opt/gmp-6.1.2.tar.xz

cd gmp-6.1.2

./configure –prefix=/usr/local/gmp-6.1.2

make -j $(nproc)

make install

cd ../

編譯:mpfr-4.0.2

tar -xvf /opt/mpfr-4.0.2.tar.gz

cd mpfr-4.0.2

./configure –prefix=/usr/local/mpfr-4.0.2 –with-gmp=/usr/local/gmp-6.1.2

make -j $(nproc)

make install

cd ../

編譯:mpc-1.1.0

tar -xvf /opt/mpc-1.1.0.tar.gz

cd mpc-1.1.0

./configure –prefix=/usr/local/mpc-1.1.0 –with-mpfr=/usr/local/mpfr-4.0.2  –with-gmp=/usr/local/gmp-6.1.2

make -j $(nproc)

make install

# 把 mpfr lib 加入 ld.so.conf 不然 gcc 編譯報錯

echo /usr/local/mpfr-4.0.2/lib  /etc/ld.so.conf

ldconfig

編譯安裝 gcc

cd /usr/local/src/

tar -xvf /opt/gcc-9.2.0.tar.gz

cd gcc-9.2.0

./configure –prefix=/usr/local/gcc-9.2.0 \

-enable-threads=posix \

-disable-checking \

-disable-multilib \

-enable-languages=c,c++ \

–with-gmp=/usr/local/gmp-6.1.2 \

–with-mpfr=/usr/local/mpfr-4.0.2 \

–with-mpc=/usr/local/mpc-1.1.0 \

–with-tune=generic \

–with-arch_32=x86-64

make -j $(nproc)

make install -j $(nproc)

(友情提醒,我再 make 編譯 GCC 的時候,跑了 1 個多小時才跑完)

## 備份舊 gcc 可執行文件

mv /usr/bin/gcc /usr/bin/gcc.old

mv /usr/bin/g++ /usr/bin/g++.old

mv /usr/bin/c++ /usr/bin/c++.old

mv /usr/bin/cpp /usr/bin/cpp.old

mv /usr/bin/gcov /usr/bin/gcov.old

## 創建最新 gcc 執行文件軟鏈

ln -sf /usr/local/gcc-9.2.0/bin/* /usr/bin/

## 刪除 lib64 目錄下.py 文件不然 ldconfig 報錯

cp /usr/local/gcc-9.2.0/lib64/libstdc++.so.6.0.27-gdb.py /opt/

rm -rf /usr/local/gcc-9.2.0/lib64/libstdc++.so.6.0.27-gdb.py

echo /usr/local/gcc-9.2.0/lib64 /etc/ld.so.conf

ldconfig

## 復制 libstdc++.so.6.0.27  /lib64/

cp /usr/local/gcc-9.2.0/lib64/libstdc++.so.6.0.27 /lib64/

# 創建軟鏈 libstdc++.so.6

cd /lib64

ln  -sf libstdc++.so.6.0.27 libstdc++.so.6

## 查看是否最新版本

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

編譯安裝 cmake cd  /usr/local/src/

tar -xvf /opt/cmake-3.15.2.tar.gz

cd /opt/cmake-3.15.2

./configure –prefix=/usr/local/cmake-3.15.2

gmake -j $(nproc)

gmake install -j $(nproc)

# 創建 cmake 軟鏈

 ln -sf /usr/local/cmake-3.15.2/bin/cmake /bin/cmake3

三、MYSQL8 安裝

cd /opt/

tar xvf  mysql-boost-8.0.20.tar.gz

cd /opt/mysql-8.0.20/

1、cmake

cmake3 \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \

-DEFAULT_CHARSET=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_general_ci \

-DEXTRA_CHARSETS=all \

-DENABLED_LOCAL_INFILE=ON \

-DWITH_INNODB_MEMCACHED=ON \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \

-DCOMPILATION_COMMENT= nancy edition \

-DDOWNLOAD_BOOST=1 \

-DWITH_BOOST=/data/mysql/tmp \

-DMYSQL_UNIX_ADDR=/data/mysql/run/mysql.sock \

-DMYSQL_TCP_PORT=3306 \

-DSYSCONFDIR=/data/mysql \

-DWITH_READLINE=1 \

-DFORCE_INSOURCE_BUILD=1 \

-DWITH_SSL=system \

-DWITH_ZLIB=system \

-DCMAKE_CXX_COMPILER=/usr/local/gcc-9.2.0/bin/g++ \

-DCMAKE_C_COMPILER=/usr/local/gcc-9.2.0/bin/gcc

注意:如果你的機器沒有聯網,需要自己下載一個包 boost_1_70_0.tar.gz 放到 /data/mysql/tmp 目錄下

下載地址:

https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.gz

2、編譯:

 gmake -j $(nproc)

3、安裝:

gmake install -j $(nproc)

4、創建 MYSQL 用戶及相關目錄、授權

groupadd mysql

useradd mysql -g mysql -M -s /sbin/nologin

mkdir /data/mysql/data/

chown mysql.mysql /data/mysql/data/

mkdir /data/mysql/run

chown mysql.mysql /data/mysql/run

mkdir /data/mysql/binlog/

chown mysql.mysql /data/mysql/binlog/

chown -R mysql.mysql /data/mysql/

5、配置文件(主庫)

vi /etc/my.cnf

[mysqld] 

port = 3306 

user = mysql 

socket = /data/mysql/run/mysql.sock 

pid_file = /data/mysql/mysqld.pid 

basedir = /usr/local/mysql 

datadir = /data/mysql/data 

tmpdir = /data/mysql/tmp 

open_files_limit = 65535 

server_id = 1

# 默認為 0,0 代表區分大小寫,1 代表不區分大小寫, 以小寫存儲,開發要求要區分大小寫

lower_case_table_names = 0

character_set_server = utf8mb4 

# 允許最大連接數

max_connections = 6000 

# 允許連接失敗的次數。這是為了防止有人從該主機試圖攻擊數據庫系統

max_connect_errors = 10 

# 默認 8 小時。交互等待時間和非交互等待時間

# 建議 300~500s, 兩參數值必須一致,且同時修

interactive_timeout = 500

wait_timeout = 500

# 短時間內的多少個請求可以被存在堆棧中

back_log=1024 

default_storage_engine = InnoDB 

#log_slave_updates = 1

#query_cache_size=1M

#*********** Logs related settings *********** 

log_bin = /data/mysql/binlog/mysql-bin 

log-bin-index=/data/mysql/binlog/mysql-bin.index

#binlog 日志過期時間設置, 單位為秒,604800= 7 天

binlog_expire_logs_seconds=604800

log_bin_trust_function_creators=1

# 最小 400,對內存占用影響大    

# 服務模式:從 1400 設置為 400,內存從 324M 降到 227M

#table_definition_cache=400

# 優化參數, 按事務刷盤,刷日志 [0: 最快模式,1: 安全模式,2: 比 0 安全但比 0 要慢]

innodb_flush_log_at_trx_commit=2

# 提交 1 次事務刷 1 次,可以為 n

sync_binlog=1

# 默認使用“mysql_native_password”插件認證

default_authentication_plugin=mysql_native_password

# 臟頁占 innodb_buffer_pool_size 的比例時,觸發刷臟頁到磁盤

# 25%~50%

innodb_max_dirty_pages_pct=30

# 后臺進程最大 IO 性能指標

# 默認 200,如果 SSD,調整為 5000~20000

innodb_io_capacity=200

# 默認 10M。防止高并發下,數據庫受影響

innodb_data_file_path=ibdata1:1024M:autoextend

# 默認 2,單位 s。慢查詢時間, 建議 0.3-0.5

long_query_time=0.3

# 8.0 默認 row。記錄格式,讓數據安全可靠

binlog_format=row

# 默認 8 小時。交互等待時間和非交互等待時間

# 建議 300~500s, 兩參數值必須一致,且同時修改

interactive_timeout=500

wait_timeout=500

# 日志大小

innodb_log_file_size=256M

# 日志緩存大小

innodb_log_buffer_size=12M

# 這里確認是否起用壓縮存儲功能

innodb_file_per_table=1

# 決定壓縮程度的參數,如果你設置比較大,那么壓縮比較多,耗費的 CPU 資源也較多;

# 相反,如果設置較小的值,那么 CPU 占用少。默認值 6,可以設置 0 -9#

innodb_compression_level=6

# 指定在每個壓縮頁面可以作為空閑空間的最大比例,

# 該參數僅僅應用在設置了 innodb_compression_failure_threshold_pct 不為零情況下,并且壓縮失敗率通過了中斷點。

# 默認值 50,可以設置范圍是 0 到 75

innodb_compression_pad_pct_max=50

[mysqld_safe]

log-error=/data/mysql/data/csp-serverdb-1.err

[mysql]

# 設置 mysql 客戶端默認字符集

default-character-set=utf8mb4

[client]

# 設置 mysql 客戶端連接服務端時默認使用的端口

port=3306

default-character-set=utf8mb4

6、配置文件(從庫)其實和主庫一樣的,就 server_id 改一下

7、復制啟動文件

cp /opt/mysql-8.0.20/support-files/mysql.server /etc/init.d/mysqld

chmod 700 /etc/init.d/mysqld

8、添加 mysql 到環境變量

echo export PATH=$PATH:/usr/local/mysql/bin /etc/profiles

source /etc/profile

echo /usr/local/mysql/lib /etc/ld.so.conf

ldconfig

echo PATH=$PATH:/usr/local/mysql/bin ~/.bash_profile

source ~/.bash_profile

9、初始化

/usr/local/mysql/bin/mysqld –defaults-file=/etc/my.cnf –initialize –user=mysql

初始化后屏幕上會打印出來 root 用戶登錄臨時隨機密碼

10、啟動

service mysqld start

或者

/etc/init.d/mysqld start

或者

/usr/local/mysql/bin/mysqld_safe –defaults-file=/etc/my.cnf –user=mysql

不記得初始化密碼,可以在日志中查找

/data/mysql/data/serverdb-1.err

11、修改密碼:

alter user root @ localhost identified by

flush privileges;

  (使用 mysql -uroot -hlocalhost 可本地免密登錄,用于寫 keepalived 腳本)

create user root @ % identified by 123456
with GRANT OPTION;

grant all privileges on *.* to root @ %(建其他普通用戶也是差不多的套路,詳細增減權限也可以在 navicat 操作)

ALTER user root @ % IDENTIFIED BY 123456  (這個是修改)

flush privileges;

四、MYSQL 主從配置

1、主庫

清除一下防火墻

iptables -F

setenforce 0

create user repl_user @ % identified by 123456

flush privileges;

grant REPLICATION SLAVE on *.* to repl_user @ %

flush privileges;

master_log_file 和 master_log_pos 通過在主庫上使用命令獲得:

show master status \G;

2、從庫

清除一下防火墻

iptables -F

setenforce 0

在從庫上執行:

change master to

master_host= 10.18.96.15 ,

master_port=3306,

master_user= repl_user ,

master_password= 123456 ,

master_log_file= mysql-bin.000001 ,

master_log_pos=156;

start slave;

show slave status\G;

五、keepalived 搭建

1、安裝 keepalived

cd /opt/

tar zxvf  /opt/keepalived-1.4.2.tar.gz

cd  /opt/keepalived-1.4.2

./configure

如果遇到以下報錯

 !!! OpenSSL is not properly installed on your system. !!! 

  !!! Can not include OpenSSL headers files. 

解決方法:

 yum -y install openssl-devel

2、編譯:

make 

make install

3、拷貝配置文件

mkdir /etc/keepalived

cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/sbin/keepalived /usr/sbin/

4、配置文件

vi /etc/keepalived/keepalived.conf

global_defs {

   router_id MySQL-HA2

vrrp_script check_run {

script /etc/keepalived/mysql_check.sh

interval 60

}

vrrp_sync_group VG2 {

group {

VI_1

}

}

vrrp_instance VI_2 {

    state BACKUP

    interface eth0

    virtual_router_id 52

    priority 100 

    advert_int 1

    nopreempt

    authentication {

        auth_type PASS

        auth_pass 1234

    }

    track_script {

    check_run

   }

    notify_master /etc/keepalived/master.sh

    notify_stop /etc/keepalived/stop.sh

    virtual_ipaddress {

        10.18.96.17

    }

}

從庫一樣的,就是 priority 90 這里改成 90

5、自動切換腳本,2 個節點一樣的配置

(1)

vi /etc/keepalived/mysql_check.sh

#!/bin/bash

. ~/.bash_profile

count=1

while true

do

mysql -uroot -hlocalhost -e show status; /dev/null 2 1

i=$?

ps aux | grep mysqld | grep -v grep /dev/null 2 1

j=$?

if [$i = 0] [$j = 0]

then

   exit 0

else

   if [$i = 1] [$j = 0]

   then

       exit 0

   else

        if [$count -gt 5]

        then

              break

        fi

   let count++

   continue

   fi

fi

done

/usr/bin/systemctl stop keepalived

(2)

vi /etc/keepalived/master.sh

#!/bin/bash

. /home/mysql/.bashrc

Master_Log_File=$(mysql -uroot -hlocalhost -e show slave status\G | grep -w Master_Log_File | awk -F : {print $2} )

Relay_Master_Log_File=$(mysql -uroot -hlocalhost -e show slave status\G | grep -w Relay_Master_Log_File | awk -F : {print $2} )

Read_Master_Log_Pos=$(mysql -uroot -hlocalhost -e show slave status\G | grep -w Read_Master_Log_Pos | awk -F : {print $2} )

Exec_Master_Log_Pos=$(mysql -uroot -hlocalhost -e show slave status\G | grep -w Exec_Master_Log_Pos | awk -F : {print $2} )

i=1

while true

do

if [$Master_Log_File = $Relay_Master_Log_File] [$Read_Master_Log_Pos -eq $Exec_Master_Log_Pos]

then

   echo ok

   break

else

   sleep 1

   if [$i -gt 60]

   then

      break

   fi

   continue

   let i++

fi

done

mysql -uroot -hlocalhost -e stop slave;

mysql -uroot -hlocalhost -e reset slave all;

mysql -uroot -hlocalhost -e reset master;

mysql -uroot -hlocalhost -e show master status; /tmp/master_status_$(date +%y%m%d-%H%M).txt

(3)

vi /etc/keepalived/stop.sh

#!/bin/bash

. ~/.bash_profile

M_File1=$(mysql -uroot -hlocalhost -e show master status\G | awk -F : /File/{print $2} )

M_Position1=$(mysql -uroot -hlocalhost -e show master status\G | awk -F : /Position/{print $2} )

sleep 1

M_File2=$(mysql -uroot -hlocalhost -e show master status\G | awk -F : /File/{print $2} )

M_Position2=$(mysql -uroot -hlocalhost  -e show master status\G | awk -F : /Position/{print $2} )

i=1

while true

do

if [$M_File1 = $M_File2] [$M_Position1 -eq $M_Position2]

then

   echo ok

   break

else

   sleep 1

   if [$i -gt 60]

   then

      break

   fi

   continue

   let i++

fi

done

然后確認 MYSQL 主從都已配置完成并啟動

啟動 keepalived

systemctl start keepalived

下面這個是停止命令

systemctl stop keepalived

這樣就部署完成了,其他的測試啥的(什么自動主備切換啊,VIP 漂浮啊),自己搞就好了。

注意,如果是生產庫中,有多套 keepalived 的,virtual_router_id,group,instance 之類的編組更換一下就好。

如果是生產庫,注意一下 root 用戶授權

create user root @ % identified by 123456 with
GRANT OPTION;

grant all privileges on *.* to root @ %

flush privileges;

還有一個問題就是,我安裝完 MYSQL,發現內存 16G 全被吃完了,手動刷新下緩存

echo 1 /proc/sys/vm/drop_caches

然后觀察一段時間,空閑內存沒有再被吃完。

上述內容就是如何搭建 MYSQL8 和 CENTOS7.6,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計10309字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 偏关县| 盘山县| 临桂县| 绥芬河市| 乌拉特前旗| 葫芦岛市| 富顺县| 奉节县| 吐鲁番市| 乃东县| 酉阳| 德钦县| 西吉县| 昭通市| 鸡泽县| 小金县| 葫芦岛市| 石渠县| 泰兴市| 蕲春县| 丹寨县| 靖安县| 荣成市| 资中县| 平顶山市| 桂平市| 奉节县| 宜兰市| 宁南县| 尼勒克县| 蒲江县| 吐鲁番市| 定西市| 鹰潭市| 盐源县| 永川市| 阿荣旗| 清原| 巴中市| 常德市| 温宿县|