Mysql8.4.3LTS中離線部署的實(shí)現(xiàn)示例
一、部署環(huán)境
軟件:mysql8.4.3LTS
系統(tǒng):ubuntu24.04
資源配置
資源分配的大小與業(yè)務(wù)系統(tǒng)的體量有關(guān)系;所以沒有固定
CPU: 2核
內(nèi)存: 4 GB
磁盤: 50 GB sda[系統(tǒng)盤] 50GB, 默認(rèn)分區(qū)
sdc[數(shù)據(jù)盤] 100GB 掛載點(diǎn) /dcdata
二、下載地址
MySQL :: Download MySQL Community Server
版本選擇
由于我的操作系統(tǒng)比較新, 通過 ldd --version
命令查看glibc版本為2.39,所以選擇了 glibc 2.28的版本
**注:**如果操作系統(tǒng)支持的話還是選擇新的;但是考慮兼容性和維護(hù)性,我個(gè)人的部署腳本中目前選擇的還是glibc2.17的包;
演示使用的是glibc2.28版本的包,后續(xù)我也將這個(gè)版本的Mysql部署到開發(fā)和測(cè)試環(huán)境中使用,組員一起體驗(yàn)他的穩(wěn)定性和性能。
三、部署詳情
1. 上傳安裝包
將安裝包上傳到服務(wù)器中,使用root用戶安裝,上傳路徑
/root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz
2. 解壓軟件包
安裝包上傳后,執(zhí)行解壓到/dcsm目錄下
# 新建dcsm文件夾 mkdir /dcsm tar -xvf /root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz -C /dcsm cd /dcsm && mv mysql-8.4.3-linux-glibc2.28-x86_64/ mysql
3. 安裝mysql
3.3.1 創(chuàng)建mysql用戶與用戶組
查詢系統(tǒng)中是否存在mysql用戶
cat /etc/passwd | cut -f1 -d':' | grep -w "mysql" -c groupadd mysql && useradd -r -g mysql -s /bin/false mysql
3.3.2 授權(quán)安裝文件夾
# 創(chuàng)建相關(guān)文件夾 mkdir -p /dcdata/mysql/log && mkdir -p /dcdata/mysql/data && mkdir -p /dcdata/mysql/run && mkdir -p /dcdata/mysql/lib # 授權(quán) chown -R mysql:mysql /dcsm/mysql && chown -R mysql:mysql /dcdata/mysql
3.3.3 安裝libaio依賴 (坑)
這個(gè)依賴是和你操作系統(tǒng)版本有關(guān)系的;
ubuntu24.04 中關(guān)于libaio的坑
該系統(tǒng)在安裝后自帶libaio
雖然whereis
搜不到libaio.so.1
這個(gè)文件; 但系統(tǒng)中確實(shí)安裝了 libaio;
這也是我后續(xù)初始化依然報(bào)錯(cuò)的原因;解決辦法就是建立超鏈接,讓mysql在初始化的時(shí)候找到這個(gè)命令
ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1
這里介紹查找方法;
找一臺(tái)和你鏡像一樣,或者操作系統(tǒng)版本一樣的可以聯(lián)網(wǎng)的機(jī)器;
apt search libaio
去/var/cache/apt/archives/
下找到這個(gè)離線deb包; 在離線環(huán)境下就可以直接dpkg -i
安裝這個(gè)依賴包了
注:如果不安裝此依賴,后續(xù)初始化mysql數(shù)據(jù)庫(kù)時(shí)會(huì)提示缺少此依賴,官網(wǎng)教程中也特意提到要安裝這個(gè)依賴。
3.3.4 初始化Mysql數(shù)據(jù)庫(kù)
cd /dcsm/mysql # 初始化 bin/mysqld --initialize --user=mysql --basedir=/dcsm/mysql --datadir=/dcdata/mysql/data --log-error=/dcdata/mysql/log/mysqld.log
注:這是ubuntu24.04 上的坑。系統(tǒng)的 libaio.so.1 軟連接的地址不存在;
解決方法就是重新建立一個(gè)軟鏈接
ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1
3.3.5 編輯my.cnf
/etc/my.cnf
[mysqld] # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. #innodb_buffer_pool_size = 128M # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M basedir=/dcsm/mysql datadir=/dcdata/mysql/data socket=/dcdata/mysql/lib/mysql.sock port=3306 log-error=/dcdata/mysql/log/mysqld.log pid-file=/dcdata/mysql/run/mysqld.pid # 開啟遠(yuǎn)程,類似dblink federated log_bin_trust_function_creators=1 # 時(shí)間跟隨本地 log_timestamps=system # 允許最大連接數(shù) max_connections=2000 # 關(guān)閉binlog日志 skip-log-bin [mysql] socket=/dcdata/mysql/lib/mysql.sock
3.3.6 配置環(huán)境變量
### 添加到系統(tǒng)服務(wù)中 cp /dcsm/mysql/support-files/mysql.server /etc/init.d/mysql && chmod +x /etc/init.d/mysql ### 配置到環(huán)境變量中 echo "/dcsm/mysql/lib" >>/etc/ld.so.conf && echo "#MYSQL ENVIRONMENT" >>/etc/profile && echo "export PATH=/dcsm/mysql/bin:/dcsm/mysql/lib:\$PATH" >>/etc/profile && source /etc/profile
3.3.7 啟動(dòng)mysql
### 重新加載systemd的配置信息 systemctl daemon-reload systemctl start mysql
設(shè)置開機(jī)啟動(dòng)
systemctl enable mysql
3.3.8 登錄mysql
獲取初始化密碼
grep 'temporary password' /dcdata/mysql/log/mysqld.log | awk '{print $NF}'
3.3.8.1 創(chuàng)建root
創(chuàng)建mysql賬號(hào)root,并設(shè)置密碼
mysql --connect-expired-password -uroot -p
然后輸入上述密碼;
連上mysql后,修改root密碼,
ALTER USER ‘root'@‘localhost' IDENTIFIED WITH mysql_native_password BY ‘MyNewPass';
原因參考:[MySQL8.0.34 開始被棄用mysql_native_password插件](https://dev.mysql.com/doc/refman/8.4/en/native-pluggable-authentication.html#:~:text=MySQL client programs in MySQL 8.4 (and later),what is desired%2C like this%3A %24> mysql --default-auth%3Dmysql_native_password)
3.3.8.2 Plugin ‘mysql_native_password’ is not load 兩種解決辦法
重新啟動(dòng)該插件(不推薦)
具體做法就是修改my.cnf 文件
重啟mysql,即可生效;
使用官方推薦方式
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
3.3.8.3 授權(quán)
use mysql; update user set host = '%' where user ='root'; flush privileges;
至此部署完成~
四、快速部署腳本
該腳本適用于快速部署使用,請(qǐng)注意安裝包版本與系統(tǒng)版本;
我用的是ubuntu24.04, mysql8.4.3tls
vim deploy_mysql.sh
#!/bin/bash ### 假設(shè)安裝包已上傳到/root下 ### 解壓軟件包 mkdir /dcsm tar -xvf /root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz -C /dcsm cd /dcsm && mv mysql-8.4.3-linux-glibc2.28-x86_64/ mysql ### 創(chuàng)建 mysql 用戶與用戶組 if [ $(cat /etc/passwd | cut -f1 -d':' | grep -w "mysql" -c) -eq 0 ]; then groupadd mysql && useradd -r -g mysql -s /bin/false mysql fi ### 授權(quán)安裝文件夾 mkdir -p /dcdata/mysql/log && mkdir -p /dcdata/mysql/data && mkdir -p /dcdata/mysql/run && mkdir -p /dcdata/mysql/lib chown -R mysql:mysql /dcsm/mysql && chown -R mysql:mysql /dcdata/mysql ### 建立軟鏈接 ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1 ### 初始化 Mysql cd /dcsm/mysql bin/mysqld --initialize --user=mysql --basedir=/dcsm/mysql --datadir=/dcdata/mysql/data --log-error=/dcdata/mysql/log/mysqld.log # 3.3.5 編輯 my.cnf cat <<EOF > /etc/my.cnf [mysqld] # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. #innodb_buffer_pool_size = 128M # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M basedir=/dcsm/mysql datadir=/dcdata/mysql/data socket=/dcdata/mysql/lib/mysql.sock port=3306 log-error=/dcdata/mysql/log/mysqld.log pid-file=/dcdata/mysql/run/mysqld.pid # 開啟遠(yuǎn)程,類似 dblink federated log_bin_trust_function_creators=1 # 時(shí)間跟隨本地 log_timestamps=system # 允許最大連接數(shù) max_connections=2000 # 關(guān)閉 binlog 日志 skip-log-bin [mysql] socket=/dcdata/mysql/lib/mysql.sock EOF ### 配置環(huán)境變量 cp /dcsm/mysql/support-files/mysql.server /etc/init.d/mysql && chmod +x /etc/init.d/mysql echo "/dcsm/mysql/lib" >>/etc/ld.so.conf echo "#MYSQL ENVIRONMENT" >>/etc/profile echo "export PATH=/dcsm/mysql/bin:/dcsm/mysql/lib:\$PATH" >>/etc/profile source /etc/profile ### 啟動(dòng) mysql systemctl daemon-reload systemctl start mysql systemctl enable mysql ### mysql修改密碼 并允許遠(yuǎn)程 initial_password=$(grep 'temporary password' /dcdata/mysql/log/mysqld.log | awk '{print $NF}') mysql --connect-expired-password -uroot -p"$initial_password" <<EOF ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; use mysql; update user set host = '%' where user ='root'; flush privileges; EOF source /etc/profile
腳本授權(quán)
chmod +x deploy_mysql.sh
執(zhí)行部署
./deploy_mysql.sh
連接成功;
到此這篇關(guān)于Mysql8.4.3LTS中離線部署的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Mysql8.4.3LTS 離線部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
最新版MySQL 8.0.22下載安裝超詳細(xì)教程(Windows 64位)
這篇文章主要介紹了最新版MySQL 8.0.22下載安裝超詳細(xì)教程(Windows 64位),本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12分析Mysql表讀寫、索引等操作的sql語(yǔ)句效率優(yōu)化問題
今天小編就為大家分享一篇關(guān)于分析Mysql表讀寫、索引等操作的sql語(yǔ)句效率優(yōu)化問題,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12MySQL?數(shù)據(jù)庫(kù)整合攻略之表操作技巧與詳解
本文詳細(xì)介紹了MySQL數(shù)據(jù)庫(kù)中表的創(chuàng)建、查看、修改和刪除等操作技巧,感興趣的朋友一起看看吧2024-11-11MySQL 出現(xiàn)錯(cuò)誤1418 的原因分析及解決方法
這篇文章主要介紹了MySQL 出現(xiàn)錯(cuò)誤1418 的原因分析及解決方法的相關(guān)資料,需要的朋友可以參考下2016-11-11MySQL高可用解決方案MMM(mysql多主復(fù)制管理器)
MySQL本身沒有提供replication failover的解決方案,通過MMM方案能實(shí)現(xiàn)服務(wù)器的故障轉(zhuǎn)移,從而實(shí)現(xiàn)mysql的高可用。MMM不僅能提供浮動(dòng)IP的功能,如果當(dāng)前的主服務(wù)器掛掉后,會(huì)將你后端的從服務(wù)器自動(dòng)轉(zhuǎn)向新的主服務(wù)器進(jìn)行同步復(fù)制,不用手工更改同步配置2017-09-09