博学笃行·盛德日新

mysql在线升级更新步骤


MySQL

问题:

mysql使用软件包安装,如何实现在线更新,而不需要拷贝数据库

解决:

使用mysql的in-place upgrade进行更新,本次更新为5.6.40版本,原数据库文件在/alidata/server下面

方法:

  1. 首先最好先备份一下数据库,防止更新失败可以还原(当然更新成功就不需要了) mysqldump -u root -p --add-drop-table --all-databases --force > data-for-upgrade.sql
  2. cd ~ (到个人根目录下)
  3. wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz(注意下载的是Linux - Generic)
  4. cd /alidata/server
  5. sudo tar zxvf ~/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz(将mysql软件包解压到/alidata/server目录下)
  6. mv mysql-5.6.40-linux-glibc2.12-x86_64 mysql-5.6.40 (更改文件夹名称)
  7. mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
  8. mysqladmin -u root -p shutdown (或者 sudo /etc/init.d/mysqld stop 反正就是关闭数据库)
  9. sudo unlink mysql (注:这里的mysql是/alidata/server/mysql-5.5.37文件夹的软链接,就是将原来的软链接删除 也可用sudo rm mysql
  10. sudo ln -s mysql-5.6.40 mysql (给文件夹创建软链接)
  11. cd mysql
  12. sudo chown -R mysql.mysql /alidata/server/mysql-5.6.40
  13. scripts/mysql_install_db --user=mysql
  14. sudo mv data data-bak (将mysql源码中的data目录修改为data-bak)
  15. sudo cp -r ../mysql-5.5.37/data 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 http://it.xiaomantu.com/web/server/350.html

评论