centosmysql備份資料庫
想知道你的mysql裝在哪裡嗎?CentOS7一般是裝在/var/lib/mysql中的
在完成遷移之前,先用下面的指令來停止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
② 伺服器(centos)意外損壞,mysql資料庫.frm和.idb和ibdata1都在的情況下,怎麼恢復數據
這個很正常
你虛擬機上安裝個MySQL資料庫
然後把之前的ibdata1拷貝過去
當然你這樣的.frm和.idb也拷貝過去
最後就是導出各個資料庫的備份為sql格式
不然會像你說的那樣導出資料庫是不完整的 因為他記錄一些東西放在ibdata1.bin還是什麼格式中 忘記了