CentoS8 Mysql8 数据目录迁移
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Mysql數據庫數據目錄遷移
1 聲明
本文的數據來自網絡,部分代碼也有所參照,這里做了注釋和延伸,旨在技術交流,如有冒犯之處請聯系博主及時處理。
2 數據目錄遷移簡介
一般我們是通過rpm包的方式安裝mysql,自己源碼編譯的較少。但這種方式安裝數據庫時默認的數據庫數據存儲目錄在/var/lib/mysql或者其它類似的系統級目錄。大多數情況下我們的系統盤因為各種原因分配的不夠大,這時提前安排數據庫的配額或者單獨給數據庫分配空間就顯得尤為重要。這里演示的是怎樣將原始的系統級數據目錄修改成自定義的目錄。
注:當前實驗環境 CentOS 8.2、Mysql 8.0.21
1 內核版本:
[root@localhost ~]#?
cat /proc/versionLinux version 4.18.0-193.el8.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)) #1 SMP Fri May 8 10:59:10 UTC 2020
2 redhat版本
[root@localhost ~]#
cat /etc/redhat-releaseCentOS Linux release 8.2.2004 (Core)
3 mysql版本
select @@version3 數據目錄遷移步驟
Step 1 首先通過命令查看當前數據庫的數據目錄
show variables like 'datadir'? -- 當前為/var/lib/mysql/Step 2 停止mysql數據庫服務
service mysqld stopStep 3 創建新的數據庫數據存放目錄
mkdir –p /data/mysqlStep 4 將原先的數據庫數據目錄的數據遷移到新目錄內
cp -R /var/lib/mysql/* /data/mysql/Step 5 將新的數據目錄權限賦予mysql用戶。
chown mysql:mysql -R /data/mysql/Step 6 通過mysql的主配置文件找到其它的配置文件(客戶端、服務端)
cat /etc/my.cnf其中服務端配置文件在/etc/my.cnf.d目錄下。
Step 7 修改server里的datadir和socket參數,修改部分詳見如下粗體:
vi /etc/my.cnf.d/mysql-server.cnf[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
Step 8 啟動mysql服務。
service mysqld startStep 9 再次執行查看數據目錄參數的命令查看當前數據目錄。
show variables like 'datadir'Step 10 額外驗證(新建個數據庫驗證數據文件是否存放在/data/mysql內)
CREATE DATABASE IF NOT EXISTS HouseSrc default charset utf8 COLLATE utf8_general_ci;4 問題
1 啟動mysql服務啟動報錯,報MY-010119錯,該日志內容位于/var/log/mysql/mysqld.log文件內。?如下字樣錯誤:
2021-03-29T07:28:38.644603Z 0 [Warning] [MY-010091] [Server] Can't create test file /data/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2021-03-29T07:28:38.644638Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /data/mysql/ is case insensitive
2021-03-29T07:28:38.646855Z 0 [ERROR] [MY-010119] [Server] Aborting
解決方法:
徹底禁用SELinux,需要在selinux文件里設置參數SELINUX=disabled后重啟linux服務器后再啟動mysql服務。
vi /etc/sysconfig/selinux注:查看selinux狀態的命令
/usr/sbin/sestatus –v
getenforce
2 mysql命令直連時報錯
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
解決方法:
mysql命令里加上-S參數,即指定sock
mysql -S /data/mysql/mysql.sock -uroot -proot1234總結
以上是生活随笔為你收集整理的CentoS8 Mysql8 数据目录迁移的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 模型持久化
- 下一篇: Mysql数据目录初识