docker 安裝運行mysql8.4.4

先前一直使用mysql5.7,最新公司新項目,無意翻閱看下5.x版本mysql官方已經不再支持,于是準備選用MySQL8,官方8.4版本是個長期支持版本,選則最新版本8.4.4,如下是MySQL官方對版本支持計劃

MySQL版本下載查看地址:https://dev.mysql.com/downloads/mysql/

本文基于docker安裝,docker版本如下,配置文件抽象出來,數據、日志輸出到服務器上

[root@uat-gateway-001 logs]# docker --version
Docker version 26.1.4, build 5650f9b

如下為詳細安裝步驟?

mysql
docker pull mysql:8.4.4啟動mysql8,目的提取配置文件到容器外
docker run -p 13308:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=ybwCloud@123 -d mysql:8.4.4#拷貝mysql配置文件到本地
docker cp mysql8:/etc/mysql /etc/docker/mysql8/config
#拷貝mysql配置文件數據源到本地
docker cp mysql8:/var/lib/mysql /etc/docker/mysql8/data
#在本地創建logs日志存儲文件
#創建錯誤日志存放文件
mkdir -p /etc/docker/mysql8/logs/error/
touch /etc/docker/mysql8/logs/error/error_log.log#不建議改
#創建查詢日志存放地址  原地址/var/lib/mysql/9056323b388c.log 最好復制源文件否則有權限問題
#在外部加了mysql權限沒成功,直接在運行容器時加了--privilged  也沒成功
mkdir -p /etc/docker/mysql8/logs/general/
touch /etc/docker/mysql8/logs/general/mysql_general.log
#創建慢查詢日志存放文件 原本存在/var/lib/mysql/9056323b388c-slow.log 最好復制源文件否則有問題
mkdir -p /etc/docker/mysql8/logs/show_query/
touch /etc/docker/mysql8/logs/show_query/show_query.log
#給日志賦權限
chmod 777 /etc/docker/mysql8/logs/error/error_log.log
chmod 777 /etc/docker/mysql8/logs/general/mysql_general.log
chmod 777 /etc/docker/mysql8/logs/show_query/show_query.log#chmod -R 777 /etc/docker/mysql8/logs/配置MYsql參數
vim /etc/docker/mysql8/config/my.cnf移除原始啟動容器
docker rm -f mysql8

mysql的配置文件需要抽象出來方便后續調整,否則重啟容器后配置丟失需要重新處理

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /etc/docker/mysql8/data
secure-file-priv= NULL#管理多因素身份認證功能
#authentication_policy=caching_sha2_password#server級別字符集,服務器安裝時指定的默認編碼格式,不要人為定義,讓系統自己定義
character-set-server = utf8mb4
#設置字段編碼
collation-server = utf8mb4_general_ci
#設置初始化連接編碼SET NAMES utf8mb4
init_connect='SET NAMES utf8mb4'#不區分數據大小寫
lower_case_table_names = 1
#innodb使用后臺線程處理數據頁的讀取IO(輸入輸出請求),根據cpu核數來更改默認是4
innodb_read_io_threads = 4
#數據庫落盤臟頁個數
innodb_io_capacity = 400#定義innodb存儲引擎的表數據和索引數據的最大內存緩沖區,看機器內存情況定
innodb_buffer_pool_size = 2G
#每個日志文件的大小,綜合大小到緩沖池大小的5%~100%,避免日志覆寫上不必要的緩沖池刷新行為。注意一個大的日志文件大小會增加恢復進程所需要的時間
#廢棄innodb_log_file_size = 128M
innodb_redo_log_capacity = 128M
#獨立表空間模式,每個數據庫的沒表表都會生成一個數據空間
innodb_file_per_table = 1#設置innodb線程的并發數
innodb_thread_concurrency=4#innodb存儲引擎下 Buffer Pool緩存大小,一般為物理內存的60%-70%存的60%-70%
innodb_buffer_pool_size=2G#innodb存儲引擎下,行鎖鎖定時間
innodb_lock_wait_timeout=10#每次事務提交的時候會把log buffer刷到文件系統中去,但并不會立即刷寫到磁盤。如果只是MySQL數據庫掛掉了,由于文件系統沒有問題數據不會丟失,減少由事務日志引起的磁盤 I/O
innodb_flush_log_at_trx_commit = 2#索引緩沖區大小
key_buffer_size = 512M#禁用 local-infile選項
local-infile = on#指定鏈接空閑多長時間斷開
lock_wait_timeout = 3600#鏈接十次數據庫服務不正常,會鎖住IP安全設置
max_connect_errors = 10#表描述符的緩存大小
table_open_cache = 20000#數據字典緩存中打開的表數量軟限制
table_definition_cache = 2000#每個線程的內存大小
thread_stack = 512k#每個需要排序的線程分配該大小的一個緩沖空間。增加該值可以加速ORDER BY或GROUP BY操作。不宜過大,占內存
sort_buffer_size = 2M#用于表關聯緩存空間(緩存塊嵌套循環連接) 可以避免多次的內表掃描,從而提高性能
join_buffer_size=2M#線程池緩存大小
thread_cache_size = 256#關閉一個交互鏈接之前所需要等待的時間秒
interactive_timeout = 600
#關閉一個非交互鏈接之前所需要等待的時間秒
wait_timeout = 600#最大進程連接數
max_connections = 6000
#用戶的最大鏈接數量,剩余鏈接數用于DBA管理
max_user_connections = 5800
# 暫存的等待的鏈接數量
back_log = 1024#默認存儲引擎 5.5以上默認就是InnoDB
default-storage-engine=InnoDB#臨時表的內存緩存大小
tmp_table_size = 32M#臨時表的最大值
max_heap_table_size = 512M#log settings 錯誤日志存放地址
log_error = /var/log/mysql/error/mysql-error.log
#通用查詢日志是否開啟 默認關閉 OFF關閉 ON開啟
general_log=OFF
#查詢日志地址
general_log_file = /var/log/mysql/query/mysql_general.log#開啟二進制日志 正常情況必須開啟 ON開啟 OFF關閉
log-bin=mysql-bin-log
#binlog的日志存放地址
#log_bin_basename=/var/log/mysql/binlog
log_bin = /var/log/mysql/mysql-binlogs/mysql-bin
# mysql binlog日志文件保存的過期時間,過期后自動刪除 一般不啟用,主從中更加不能啟用
#expire_logs_days = 5#顯示日志中的時間參數
log_timestamps = SYSTEM#配置時區
default-time_zone = '+8:00'   #密碼加密方式
mysql_native_password=ON
#default_authentication_plugin = caching_sha2_password#服務能處理的請求包最大大小
max_allowed_packet = 512M#設置最大包,限制server接受的數據包大小
#slave_max_allowed_packet = 512M
replica_max_allowed_packet = 512M#打開的文件描述符限制
open_files_limit = 65536#標識數據庫
server_id = 1
#二進制文件大小
binlog_expire_logs_seconds = 604800#存儲整個事務生成的binlog event的內存大小
binlog_cache_size=10480
#二進制非事務語句的緩存大小
binlog_stmt_cache_size=4096#sync_binlog:是MySQL 的二進制日志(binary log)同步到磁盤的頻率。當每進行1次事務提交之后,MySQL將進行一次fsync之類的磁盤同步指令來將binlog_cache中的數據強制寫入磁盤。保證數據不丟失。
sync_binlog = 1#二進制啟用后,變量則啟用,控制是否可以信任存儲函數創建者,1 不會對創建存儲函數實施做控制
log_bin_trust_function_creators = 1# 檢索的行數必須達到此值才可被記為慢查詢
#min_examined_row_limit = 100# 作為從庫時生效,從庫復制中如何有慢sql也將被記錄
#log_slow_slave_statements = 1# Custom config should go here 調用/ect/mysql/conf.d下的配置文件
!includedir /etc/mysql/conf.d/

mysql.cnf是看著別人都有調整,我這里沒有對這個文件進行個性化調整配置

#配置mysql.cnf
#vim /usr/local/src/docker/mysql/config/conf.d/mysql.cnf
##############################
[mysql]
prompt = "\\u@\\d \\r:\\m:\\s>"
no_auto_rehash
loose-skip-binary-as-hex
################################
prompt = "\\u@\\d \\r:\\m:\\s>"   #設置命令行工具的提示符 默認為 mysql>
no_auto_rehash                    #命令行工具中的自動命令補全功能
loose-skip-binary-as-hex          #

啟動運行容器

docker run -p 3308:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=設置數據庫root密碼 -e TZ=Asia/Shanghai \
-v /etc/docker/mysql8/config:/etc/mysql \
-v /etc/docker/mysql8/data:/etc/docker/mysql8/data \
-v /etc/docker/mysql8/logs:/var/log/mysql \
--privileged=true --restart=always -d mysql:8.4.4 --lower_case_table_names=1

#說明下,3308為容器外訪問端口,3306容器內訪問端口,-v 設置環境,冒號前為容器外路徑,冒號后為容器內路徑,privileged=true為給與最大權限,restart=always 自動啟動容器,lower_case_table_names 為0區分大小寫 1不區分大小寫

#創建庫、創建用戶、給用戶授權庫權限  % 表示隨處訪問,此處可以改為Ip固定Ip訪問,localhost本地訪問
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON youDatabase.* TO 'user'@'%';

這里踩雷幾處:

1:mysql8和MySQL5.7配置項很多對參數名稱進行調整,上述配置文件已調整為mysql8

2:mysql8默認使用的身份認證插件

3:重啟容器后,一直報錯原因是舊數據和新容器不兼容,后來data目錄全部刪除,重啟解決

4:binlog目錄5.7參數名log_bin_basename,8參數名log_bin,上述配置文件已調整可直接使用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84508.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84508.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84508.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[java八股文][MySQL面試篇]索引

索引是什么?有什么好處? 索引類似于書籍的目錄,可以減少掃描的數據量,提高查詢效率。 如果查詢的時候,沒有用到索引就會全表掃描,這時候查詢的時間復雜度是On如果用到了索引,那么查詢的時候&a…

低代碼平臺的版本管理深度解析

引言 在當今快速發展的軟件開發領域,低代碼平臺憑借其可視化界面和拖拽功能,極大地減少了手動編碼的工作量,顯著提高了開發效率和質量。它提供了豐富的預構建模塊、組件和服務,讓開發者能夠根據業務需求和邏輯進行組合與配置&…

Springboot項目由JDK8升級至JDK17全過程教程【文末附源碼】

1. 前言 最近一直想把我的開源項目maple-boot升級到jdk17版本,然后接入Spring AI。拖延癥犯了一直拖拖拖,最近時間空閑較多,開始陸續著手升級。 整個升級過程 計劃分為3步。 step1:先將項目升級到jdk17,使用正常ste…

同步與異步:軟件工程中的時空藝術與實踐智慧-以蜻蜓hr人才系統舉例-優雅草卓伊凡

同步與異步:軟件工程中的時空藝術與實踐智慧-以蜻蜓hr人才系統舉例-優雅草卓伊凡 概念解析:時空維度的編程范式 在軟件開發的宇宙中,同步(Synchronous)與異步(Asynchronous)是兩種根本不同的執行模式,它們塑造了程序與時間和空間…

TF-IDF算法的代碼實踐應用——關鍵詞提取、文本分類、信息檢索

回顧:TF-IDF算法詳解與實踐總結 上一篇文章我們深入剖析了TF-IDF的原理與細節,但實踐才是檢驗真理的唯一標準!今天,我們將從“紙上談兵”轉向“實戰演練”:通過純Python手寫實現與調用sklearn工具包兩種方式&#xff0…

前端面試寶典---事件循環面試題

瀏覽器進程模型與 JavaScript 執行機制 現代瀏覽器采用多進程架構,包含瀏覽器進程、渲染進程、網絡進程等多個核心進程。每個標簽頁會獨立創建一個渲染進程,負責頁面內容的解析、渲染和執行腳本代碼。 JavaScript 的單線程特性 JavaScript 采用單線程…

postman調用接口報錯401, Unauthorized, Invalid Token. null解決辦法

1、先登錄系統,F12找到token并復制 2、postman里選中Authorization,下拉選中選擇Bearer Token,把復制好的token黏貼到右側輸入框,如下所示: 3、如果是json格式的參數拷貝到Body中,如下所示: 4、 接口調用成功

C++----剖析list

前面學習了vector和string,接下來剖析stl中的list,在數據庫中學習過,list邏輯上是連續的,但是存儲中是分散的,這是與vector這種數組類型不同的地方。所以list中的元素設置為一個結構體,將list設計成雙向的&…

為什么已經有 Nginx 了,還需要服務網關?

在當前微服務架構中,雖然 Nginx 是一個高性能的反向代理和負載均衡服務器,但在實際使用中仍然存在諸多局限性。為了滿足運維效率、功能統一治理以及與微服務生態集成的需求,通常會在 Nginx 和業務服務之間引入一層基于 Java 實現的服務網關&a…

Kendo UI 中,ViewModel、DataSource 和 Grid的關系。Kendo 框架發起 HTTP 請求

Kendo UI 中,ViewModel、DataSource 和 Grid的關系 在 Kendo UI 中,ViewModel、DataSource 和 Grid 是構建動態數據應用的核心組件,三者協同工作實現數據的綁定、管理和展示。 一、三者關系圖解 #mermaid-svg-3lWxu2zWB23wDYEz {font-family…

宇樹開源 Qmini 雙足機器人,可通過 3D 打印動手制作,使用樹莓派作為主控制器

Unitree Qmini 是一款由宇樹科技設計并開源的低成本雙足機器人,開發者可以完全通過 3D 打印進行復刻。Qmini 專為業余愛好者、教育工作者和研究人員設計,使用戶能夠快速上手,并以類似樂高的模塊化方式組裝自己的機器人。該項目為機器人技術提…

解決華為云服務器無法ping通github問題

在push代碼到github上的時候,發現顯示22端口無法連接,在已經開放了端口,防火墻關閉的情況下仍然無法連接到GitHub。 發現是服務器和github斷連,選擇 sudo vim /etc/hosts 添加一下代碼 # GitHub Start140.82.121.4 gith…

關于electron-vite koffi 讀取 dll 打包等問題得記錄

koffi const koffi require(‘koffi’) import iconv from ‘iconv-lite’;const libPath path.resolve(__dirname, ‘…/…/resources/dll/sss.dll’) const yktLib koffi.load(libPath) const ret yktLib.func(‘string sss(string Url, string Data, string OutData)’…

【開發技術】.Net使用FFmpeg視頻特定幀上繪制內容

目錄 一、目的 二、解決方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg調用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 濾鏡來繪制 ROI 三、總結 一、目的 當前市場上有很多目標檢測智能識別的相關算法,當前調用一個醫療行業的AI識別算法后返回…

通過關鍵字批量抓取淘寶商品數據實現方法途徑分享--API

item_search 按關鍵字搜索淘寶商品item_search_tmall 按關鍵字搜索天貓商品item_search_pro 高級關鍵字搜索淘寶商品item_search_img 按圖搜索淘寶商品(拍立淘)item_search_shop 獲得店鋪的所有商品 一、引言 在電商領域,獲取淘寶商品數據對…

用 Lazarus IDE 寫一個郵件客戶端軟件,能收發郵件,編寫郵件

下面是一個使用Lazarus IDE開發的基本郵件客戶端實現方案,包含收發郵件和編寫郵件的核心功能。我們將使用Synapse庫(跨平臺的網絡通信庫)來處理郵件協議。 步驟1:安裝依賴 安裝Synapse庫: 下載地址:https:…

第二部分-IP及子網劃分

目錄 一、什么是IP? 1.1.IP地址的由來 1.2.IP地址的表示 1.3.IP地址的構成 1.4.IP地址的分類 1.5.IP地址類型 1.6.IP地址的計算 1.7.私網IP地址 1.8.特殊IP地址 二、子網劃分 2.1.什么是子網劃分及為什么要進行子網劃分? 2.2.如何進行子網劃分? 實例: …

【javascript】泡泡龍游戲中反彈和查找匹配算法

引言 泡泡龍游戲的核心玩法依賴于物理碰撞與顏色匹配的算法實現。反彈效果需要模擬泡泡與邊界或障礙物的彈性碰撞,確保軌跡符合物理規律;匹配算法則需快速檢測相鄰同色泡泡,觸發消除邏輯。高效的處理方式直接影響游戲流暢度和玩家體驗。 以…

如何使用deepseek滿血版

deepseek 訪問方式 DeepSeek滿血版可通過官方網站或官方應用商店下載安裝。確保設備滿足最低系統要求,如操作系統版本和硬件配置。 賬號注冊與登錄 訪問平臺后完成賬號注冊流程,提供必要信息并驗證郵箱或手機號。登錄后進入用戶中心,查看…

網絡管理【Linux/Unix/Windows】命令大全

在跨平臺網絡運維中,管理員常需快速切換Windows與Linux環境下的命令操作。本文整合了核心網絡管理命令的跨平臺對照表,涵蓋連通性測試、路由追蹤、DNS解析、ARP管理、會話監控等高頻場景。無論您負責服務器維護、網絡排障還是安全審計,此表可…