注意事项:
1.只支持GA版本之间进行升级
2.如果小版本太低,先升级到最新小版本,再进行跨版本升级
3.考虑好回退方案
4.制定好升级方案和升级步骤,尽可能降低停机时间
升级过程规划:
1.备份保存,(冷备需要停止业务,热备无需停止)
2.最新程序安装
3.原有程序关闭(页面显示维护)
4.最新程序启动(加载原有程序实现挂库升级并采用跳过授权表及远程连接方式启动)
5.升级数据结构
6.确认新程序可以正常重启
7.功能测试(反复核验数据库相关功能是否正常)
8.升级完毕(取消维护页面,恢复正常线上业务)
数据库服务版本升级 mysql 5.6 --> 5.7 --> 8.0 部署旧版本数据库服务 mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz 步骤一:解压软件程序 cd /usr/local tar xf mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz tar xf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz ln -s mysql-5.6.48-linux-glibc2.12-x86_64 mysql56 ln -s mysql-5.7.30-linux-glibc2.12-x86_64 mysql57 步骤二:创建数据目录信息 mkdir -p /data/3356/data /data/3357/data chown -R mysql.mysql /data/ 步骤三:进行初始化操作 mv /etc/my.cnf /tmp mysql-5.6初始化: /usr/local/mysql56/scripts/mysql_install_db --user=mysql --datadir=/data/3356/data --basedir=/usr/local/mysql56 mysql-5.7初始化: /usr/local/mysql57/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/3357/data --basedir=/usr/local/mysql57 步骤四:编写配置文件 cat >>/etc/my56.cnf<<EOF [mysqld] port=3356 user=mysql basedir=/usr/local/mysql datadir=/data/3356/data/ socket=/tmp/mysql3356.sock EOF cat >>/etc/my57.cnf<<EOF [mysqld] port=3357 user=mysql basedir=/usr/local/mysql datadir=/data/3357/data/ socket=/tmp/mysql3357.sock EOF 步骤五:启动数据库服务 cat >>/etc/systemd/system/mysqld3356.service<<EOF [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql56/bin/mysqld --defaults-file=/etc/my56.cnf LimitNOFILE=5000 EOF cat >>/etc/systemd/system/mysqld3357.service<<EOF [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/etc/my57.cnf LimitNOFILE=5000 EOF systemctl daemon-reload systemctl start mysqld56 systemctl start mysqld57
5.6.48 ->5.7.30 本地升级
步骤一:数据库服务原有程序关闭
systemctl stop mysqld3356(测试环境)
#优雅终止:可以继续接收数据,没有数据再断开
vim /my.cnf(线上环境)
[mysqld]
innodb_fast_shutdown=0
systemctl stop mysqld3356
步骤二: 实现挂库升级
cat /etc/my56.cnf
[mysqld]
port=3356
user=mysql
basedir=/usr/local/mysql57 -- 加载新的数据库服务程序
datadir=/data/3356/data/
socket=/tmp/mysql3356.sock
/usr/local/mysql57/bin/mysqld_safe --defaults-file=/etc/my56.cnf --skip-grant-tables --skip-networking & #第一次登录免密
步骤三:数据库目录结构升级操作
/usr/local/mysql57/bin/mysql_upgrade -S /tmp/mysql3356.sock --force
步骤四:正常运行启动新的版本数据库服务
vim /etc/systemd/system/mysqld57.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/etc/my56.cnf
LimitNOFILE=5000
systemctl start mysqld57
然后就可以使用之前的旧密码登录了!
5.7.30 ->8.0.26 本地升级
步骤一:数据库服务原有程序关闭
systemctl stop mysqld3357
步骤二:实现挂库升级
cat /etc/my56.cnf
[mysqld]
port=3356
user=mysql
basedir=/usr/local/mysql -- 加载新的数据库服务程序
datadir=/data/3356/data/
socket=/tmp/mysql3356.sock
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my56.cnf --skip-grant-tables --skip-networking & #第一次登录免密
步骤三:正常运行启动新的版本数据库服务
vim /etc/systemd/system/mysqld80.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my56.cnf
LimitNOFILE=5000
systemctl start mysqld80