问题:mysql使用软件包安装,如何实现在线更新,而不需要拷贝数据库
解决:使用mysql的in-place upgrade进行更新,本次更新为5.5.58版本,原数据库文件在/alidata/server下面
方法:
首先最好先备份一下数据库,防止更新失败可以还原(当然更新成功就不需要了)
mysqldump -u root -p --add-drop-table --all-databases --force > data-for-upgrade.sql
1、cd ~ (到个人根目录下)
2、wget https://cdn.mysql.com//Downloads/MySQL-5.5/mysql-5.5.58-linux-glibc2.12-x86_64.tar.gz(注意下载的是Linux - Generic)
3、cd /alidata/server
4、sudo tar zxvf ~/mysql-5.5.58-linux-glibc2.12-x86_64.tar.gz(将mysql软件包解压到/alidata/server目录下)
5、mv mysql-5.5.58-linux-glibc2.12-x86_64 mysql-5.5.58 (更改文件夹名称)
6、mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
7、mysqladmin -u root -p shutdown (或者 sudo /etc/init.d/mysql stop反正就是关闭数据库)
8、sudo unlink mysql (注:这里的mysql是/alidata/server/mysql-5.5.38文件夹的软链接,就是将原来的软链接删除 也可用sudo rm mysql)
9、sudo ln -s mysql-5.5.58 mysql (给文件夹创建软链接)
10、cd mysql
11、sudo chown -R mysql .
12、sudo chgrp -R mysql .
13、scripts/mysql_install_db --user=mysql
14、sudo mv data/ data-bak (将mysql源码中的data目录修改为data-bak)
15、sudo cp ../mysql-5.5.37/data ./ (将原数据库中的data目录拷贝到新mysql中)
16、mysqld_safe --user=mysql --datadir=/alidata/server/mysql/data (指定mysql数据的目录)
17、sudo /etc/init.d/mysqld start (启动mysql,如果不启动或未修改mysql文件夹的权限会报错的)
18、mysql_upgrade -u root -p (回车后输入mysql密码,注意这里的密码还是原来数据库的root密码)
19、sudo /et/init.d/mysqld restart (更新成功后,重新启动mysql,使更新生效)
20、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