溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql 升級和降級

發(fā)布時間:2020-07-27 21:22:03 來源:網(wǎng)絡(luò) 閱讀:6984 作者:Darren_Chen 欄目:數(shù)據(jù)庫

1 官方推薦的兩種升級方式:

in-place upgrade

logical upgrade


2 升級之前:

備份所有數(shù)據(jù)庫,包括系統(tǒng)庫mysql

[root@Darren1 ~]# mysqldump -uroot -p147258 -A -B  -F --master-data=2 --events --single-transaction>/tmp/mysqlall.bak

下載5.7.16二進制包,上傳解壓到/opt/mysql/目錄下


3升級演示:5.7.14升級到5.7.16


方法一: in-place upgrade:

設(shè)置數(shù)據(jù)庫關(guān)閉方式為slow方式,緩存中的數(shù)據(jù)在關(guān)閉之前全部落地:

[root@Darren1 data]# mysql -uroot -p147258 -e 'set global innodb_fast_shutdown=0;'


停止數(shù)據(jù)庫服務(wù):

[root@Darren1 data]# mysqladmin -uroot -p147258 shutdown


把之前5.7.14的軟鏈接/usr/local/mysql刪除,重新建立5.7.16軟鏈接:

[root@Darren1 local]# rm -rf /usr/local/mysql

[root@Darren1 local]# ln -s /opt/mysql/mysql-5.7.16-linux-glibc2.5-x86_64 /usr/local/mysql


啟動數(shù)據(jù)庫服務(wù):

[root@Darren1 ~]# mysqld_safe --user=mysql --datadir=/data/mysql/mysql3306/data &


檢查所有庫中所有表的兼容性:

[root@Darren2 data]# mysql_upgrade -uroot -p147258


檢查結(jié)束后會在datadir目錄下生成mysql_upgrade_info文件,記錄了數(shù)據(jù)庫版本。

停止數(shù)據(jù)庫服務(wù):

[root@Darren1 data]# mysqladmin -uroot -p147258 shutdown


啟動數(shù)據(jù)庫服務(wù):

[root@Darren1 ~]# mysqld_safe --user=mysql --datadir=/data/mysql/mysql3306/data &

把啟動5.7.16的啟動腳本mysql.server復(fù)制到/etc/init.d/下,替代舊的mysqld.

[root@Darren1 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld



方法二:logical-upgrade


把mysql所有庫導(dǎo)出來:

[root@Darren1 local]# mysqldump -uroot -p --add-drop-table --routines --events --all-databases --force >/tmp/data-for-upgrade.sql


停數(shù)據(jù)庫服務(wù):

[root@Darren1 local]# mysqladmin -uroot -p shutdown


創(chuàng)建新的目錄存放5.7.16:

[root@Darren1 ]# mkdir -p /data/mysql/mysql3307/{data,logs,tmp}

[root@Darren1 data]# chown -R mysql:mysql /data/mysql/mysql3307


刪除舊的軟鏈接,重新創(chuàng)建軟連接:

[root@Darren1 mysql]# ln -s /opt/mysql/mysql-5.7.16-linux-glibc2.5-x86_64 /usr/local/mysql


復(fù)制新的配置文件,并修改端口號為3307:

[root@Darren2 mysql3307]# cp /etc/my.cnf /data/mysql/mysql3307/my3307.cnf

[root@Darren2 mysql3307]# sed -i 's#3306#3307#g' my3307.cnf


指定配置文件初始化:

[root@Darren1 bin]# ./mysqld --initialize --defaults-file=/data/mysql/mysql3307/my3307.cnf 


查看錯誤日志,找到密碼:

[root@Darren1 bin]# cat /data/mysql/mysql3307/data/error.log |grep password

2016-11-24T14:35:59.219125Z 1 [Note] A temporary password is generated for root@localhost: kU+Ve&lo6a/j


指定3307配置文件,啟動數(shù)據(jù)庫服務(wù):

[root@Darren1 bin]# ./mysqld_safe --defaults-file=/data/mysql/mysql3307/my3307.cnf &


指定sock文件登陸,輸入前面查看的密碼:

[root@Darren1 bin]# mysql -uroot -p -S /tmp/mysql3307.sock

Enter password:   


重新修改密碼:

mysql>alter user user() identified by '147258';


導(dǎo)入之前備份數(shù)據(jù):

[root@Darren1 bin]# mysql -uroot -p -S /tmp/mysql3307.sock --force </tmp/data-for-upgrade.sql   


檢查兼容性:

[root@Darren1 bin]# mysql_upgrade -uroot -p -S /tmp/mysql3307.sock


關(guān)閉服務(wù)器

[root@Darren1 bin]# mysqladmin -uroot -p shutdown -S /tmp/mysql3307.sock

用5.7.16二進制包重新建立3307實例,把舊的5.7.14版本的3306實例數(shù)據(jù)導(dǎo)出,然后導(dǎo)入3307實例中,測試3307實例確保沒有問題,然后刪除3306實例,把3307實例端口改為3306.


4 降級演示:5.7.16降級5.7.14


方法一:in-place downgrade


設(shè)置數(shù)據(jù)庫關(guān)閉方式:

[root@Darren1 local]# mysql -uroot -p -e 'set global innodb_fast_shutdown=0;'                       

停止數(shù)據(jù)庫服務(wù):

[root@Darren1 local]# mysqladmin -uroot -p shutdown


刪除redolog文件:

[root@Darren1 data]# rm -rf /data/mysql/mysql3306/data/ib_logfile*


刪除5.7.16軟鏈接,并重新創(chuàng)建5.7.14軟連接:

[root@Darren1 local]# rm -rf /usr/local/mysql

[root@Darren1 local]# ln -s /opt/mysql/mysql-5.7.14-linux-glibc2.5-x86_64 /usr/local/mysql


啟動數(shù)據(jù)庫服務(wù):

[root@Darren1 local]# mysqld_safe --user=mysql --datadir=/data/mysql/mysql3306/data &


降級檢查:

[root@Darren1 local]# mysql_upgrade -uroot -p


停止數(shù)據(jù)庫服務(wù),重新啟動數(shù)據(jù)庫服務(wù):

[root@Darren1 local]# mysqladmin -uroot -p shutdown

[root@Darren1 local]# mysqld_safe --user=mysql --datadir=/data/mysql/mysql3306/data &



方法二:logical downgrade


備份降級前的所有庫和表:

[root@Darren1 ~]# mysqldump -uroot -p147258 --add-drop-table --routines --events --all-databases --force> /tmp/data-for-downgrade.sql

初始化:

[root@Darren1 bin]# ./mysqld --defaults-file=/data/mysql/mysql3307/my3307.cnf --initialize

[root@Darren1 bin]# ./mysqld_safe --defaults-file=/data/mysql/mysql3307/my3307.cnf &

[root@Darren1 bin]# mysql -uroot -p -S /tmp/mysql3307.sock

mysql>alter user user() identified by '147258';

[root@Darren1 bin]# ./mysql -uroot -p147258 -S /tmp/mysql3307.sock</tmp/data-for-downgrade.sql

[root@Darren1 bin]# ./mysql_upgrade -uroot -p147258 --skip-version-check -S /tmp/mysql3307.sock

以上步驟,部分省略,可參考5.7官方文檔。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI