想知道你的mysql裝在哪里嗎?CentOS7一般是裝在/var/lib/mysql中的
站在用戶的角度思考問題,與客戶深入溝通,找到東興網站設計與東興網站推廣的解決方案,憑借多年的經驗,讓設計與互聯(lián)網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網站建設、成都做網站、企業(yè)官網、英文網站、手機端網站、網站推廣、域名與空間、網頁空間、企業(yè)郵箱。業(yè)務覆蓋東興地區(qū)。
在完成遷移之前,先用下面的指令來停止mysqld服務
service mysqld stop,或者直接點sudo systemctl stop mysqld
然后用df-h指令看服務器上剩余空間是多少,假設我們新掛了一塊500G的硬盤到/data上
那么請把mysql整個文件夾拷貝到/data中,像下面這樣:
sudo cp -rf /var/lib/mysql /data/mysql,拷完以后原來的mysql文件夾就可以刪除了
然后再修改/etc/my.cnf,這個也是需要su的:
sudo vi /etc/my.cnf
里面有一個字段叫[mysqld],將datadir和socket修改成這樣:
datadir=/data/mysql
socket=/data/mysql/mysql.sock
接下來,有的人說要修改/etc/init.d/mysqld,但我的服務器不需要,直接通過
service mysqld start就可以啟動SQL服務了,遠程也可以連接上,但是:
當你使用終端mysql -u root -p的時候,就會報下面這個錯:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
這個時候,你有兩種解決辦法,一種是造一個軟連接
ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock,原因是你已經刪掉之前的mysql目錄了
另外一種辦法,是在/etc/my.cnf下面新建一個新字段:
[mysql]
socket=/data/mysql/mysql.sock
第一種方法不需要重啟mysql server,第二種方法需要重啟mysql server,
然后,你就可以成功地從終端里進入mysql了
敲黑板,不要在[mysql]下面自做主張地寫上datadir=/data/mysql,這樣會導致本地命令行登錄時報錯:Unknown Variable: datadir=/data/mysql
第一種方案的優(yōu)點:會重建數(shù)據文件,減少數(shù)據文件的占用空間。
第一種方案的缺點:時間占用長。(導入導出都需要很長的時間,并且導出后的文件還要經過網絡傳輸,也要占用一定的時間。)
第二種方案的優(yōu)點:設置完成后傳輸無人值守
第二種方案的缺點:
設置繁瑣。
傳輸中網絡出現(xiàn)異常,不能及時的被發(fā)現(xiàn),并且會一直停留在數(shù)據傳輸?shù)臓顟B(tài)不能被停止,如不仔細觀察不會被發(fā)現(xiàn)異常。
傳輸相對其他fang時間長。
異常后很難從異常的位置繼續(xù)傳輸。
第三種方案的優(yōu)點:時間占用短,文件可斷點傳輸。操作步驟少。(絕大部分時間都是在文件的網絡傳輸)
第三種方案的缺點:可能引起未知問題,暫時未發(fā)現(xiàn)。
caching_sha2_password認證插件提供更多的密碼加密方式,并且在加密方面具有更好的表現(xiàn),目前MySQL?8.0選用caching_sha2_password作為默認的認證插件,MySQL?5.7的認證插件是MySQL_native_password。如果客戶端版本過低,會造成無法識別MySQL?8.0的加密認證方式,最終導致連接問題。
MySQL存儲引擎現(xiàn)在負責提供自己的分區(qū)處理程序,而MySQL服務器不再提供通用分區(qū)支持,InnoDB和NDB是唯一提供MySQL?8.0支持的本地分區(qū)處理程序的存儲引擎。?如果分區(qū)表用的是別的存儲引擎,存儲引擎必須進行修改。要么將其轉換為InnoDB或NDB,要么刪除其分區(qū)。通過MySQLdump從5.7獲取的備份文件,在導入到8.0環(huán)境前,需要確保創(chuàng)建分區(qū)表語句中指定的存儲引擎必須支持分區(qū),否則會報錯。
MySQL?8.0的默認字符集utf8mb4,可能會導致之前數(shù)據的字符集跟新建對象的字符集不一致,為了避免新舊對象字符集不一致的情況,可以在配置文件將字符集和校驗規(guī)則設置為舊版本的字符集和校驗規(guī)則。
MySQL?8.0啟動使用的lower_case_table_names值必須跟初始化時使用的一致。使用不同的設置重新啟動服務器會引入與標識符的排序和比較方式不一致的問題。
lower_case_table_names?
要避免MySQL?8.0上的啟動失敗,MySQL配置文件中的sql_mode系統(tǒng)變量不能包含NO_AUTO_CREATE_USER。
從MySQL?5.7.24和MySQL?8.0.13開始,MySQLdump從存儲程序定義中刪除了NO_AUTO_CREATE_USER。必須手動修改使用早期版本的MySQLdump創(chuàng)建的轉儲文件,以刪除NO_AUTO_CREATE_USER。
在MySQL?8.0.11中,刪除了這些不推薦使用的兼容性SQL Mode:DB2,MAXDB,MSSQL,MySQL323,MySQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS。從5.7到8.0的復制場景中,如果語句使用到廢棄的SQL Mode會導致復制異常。
在執(zhí)行到MySQL?8.0.3或更高版本的in-place升級時,BACKUP_ADMIN權限自動授予具有RELOAD權限的用戶。
本文對MySQL 5.7到MySQL 8.0的升級過程中出現(xiàn)部分易出現(xiàn)問題進行整理:升級對MySQL版本的要求、升級都做了哪些內容、數(shù)據庫升級做了哪些步驟以及注意事項,希望對大家版本升級有幫助。