mysql在线升级更新步骤
问题:
mysql使用软件包安装,如何实现在线更新,而不需要拷贝数据库
解决:
使用mysql的in-place upgrade进行更新,本次更新为5.6.40版本,原数据库文件在/alidata/server
下面
方法:
- 首先最好先备份一下数据库,防止更新失败可以还原(当然更新成功就不需要了)
mysqldump -u root -p --add-drop-table --all-databases --force > data-for-upgrade.sql
cd ~
(到个人根目录下)wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
(注意下载的是Linux - Generic)cd /alidata/server
sudo tar zxvf ~/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
(将mysql软件包解压到/alidata/server目录下)mv mysql-5.6.40-linux-glibc2.12-x86_64 mysql-5.6.40
(更改文件夹名称)mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
mysqladmin -u root -p shutdown
(或者sudo /etc/init.d/mysqld stop
反正就是关闭数据库)sudo unlink mysql
(注:这里的mysql是/alidata/server/mysql-5.5.37文件夹的软链接,就是将原来的软链接删除 也可用sudo rm mysql
)sudo ln -s mysql-5.6.40 mysql
(给文件夹创建软链接)cd mysql
sudo chown -R mysql.mysql /alidata/server/mysql-5.6.40
scripts/mysql_install_db --user=mysql
sudo mv data data-bak
(将mysql源码中的data目录修改为data-bak)sudo cp -r ../mysql-5.5.37/data data
(将原数据库中的data目录拷贝到新mysql中)mysqld_safe --user=mysql --datadir=/alidata/server/mysql/data
(指定mysql数据的目录)sudo /etc/init.d/mysqld start
(启动mysql,如果不启动或未修改mysql文件夹的权限会报错的)mysql_upgrade -u root -p
(回车后输入mysql密码,注意这里的密码还是原来数据库的root密码)sudo /et/init.d/mysqld restart
(更新成功后,重新启动mysql,使更新生效)mysql -V
(查看当前mysql版本号,或进入mysql进行查看mysql -uroot -p
)
参考:
https://dev.mysql.com/doc/refman/5.6/en/upgrading.html https://dev.mysql.com/doc/refman/5.6/en/binary-installation.html http://it.xiaomantu.com/web/server/350.html