1 官方推荐的两种升级方式:
创新互联是网站建设专家,致力于互联网品牌建设与网络营销,专业领域包括成都网站设计、做网站、电商网站制作开发、成都小程序开发、微信营销、系统平台开发,与其他网站设计及系统开发公司不同,我们的整合解决方案结合了恒基网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,且不断评估并优化我们的方案,为客户提供全方位的互联网品牌整合方案!in-place upgrade
logical upgrade
2 升级之前:
备份所有数据库,包括系统库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:
设置数据库关闭方式为slow方式,缓存中的数据在关闭之前全部落地:
[root@Darren1 data]# mysql -uroot -p147258 -e 'set global innodb_fast_shutdown=0;'
停止数据库服务:
[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
启动数据库服务:
[root@Darren1 ~]# mysqld_safe --user=mysql --datadir=/data/mysql/mysql3306/data &
检查所有库中所有表的兼容性:
[root@Darren2 data]# mysql_upgrade -uroot -p147258
检查结束后会在datadir目录下生成mysql_upgrade_info文件,记录了数据库版本。
停止数据库服务:
[root@Darren1 data]# mysqladmin -uroot -p147258 shutdown
启动数据库服务:
[root@Darren1 ~]# mysqld_safe --user=mysql --datadir=/data/mysql/mysql3306/data &
把启动5.7.16的启动脚本mysql.server复制到/etc/init.d/下,替代旧的mysqld.
[root@Darren1 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
方法二:logical-upgrade
把mysql所有库导出来:
[root@Darren1 local]# mysqldump -uroot -p --add-drop-table --routines --events --all-databases --force >/tmp/data-for-upgrade.sql
停数据库服务:
[root@Darren1 local]# mysqladmin -uroot -p shutdown
创建新的目录存放5.7.16:
[root@Darren1 ]# mkdir -p /data/mysql/mysql3307/{data,logs,tmp}
[root@Darren1 data]# chown -R mysql:mysql /data/mysql/mysql3307
删除旧的软链接,重新创建软连接:
[root@Darren1 mysql]# ln -s /opt/mysql/mysql-5.7.16-linux-glibc2.5-x86_64 /usr/local/mysql
复制新的配置文件,并修改端口号为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配置文件,启动数据库服务:
[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';
导入之前备份数据:
[root@Darren1 bin]# mysql -uroot -p -S /tmp/mysql3307.sock --force
检查兼容性:
[root@Darren1 bin]# mysql_upgrade -uroot -p -S /tmp/mysql3307.sock
关闭服务器:
[root@Darren1 bin]# mysqladmin -uroot -p shutdown -S /tmp/mysql3307.sock
用5.7.16二进制包重新建立3307实例,把旧的5.7.14版本的3306实例数据导出,然后导入3307实例中,测试3307实例确保没有问题,然后删除3306实例,把3307实例端口改为3306.
4 降级演示:5.7.16降级5.7.14
方法一:in-place downgrade
设置数据库关闭方式:
[root@Darren1 local]# mysql -uroot -p -e 'set global innodb_fast_shutdown=0;'
停止数据库服务:
[root@Darren1 local]# mysqladmin -uroot -p shutdown
删除redolog文件:
[root@Darren1 data]# rm -rf /data/mysql/mysql3306/data/ib_logfile*
删除5.7.16软链接,并重新创建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
启动数据库服务:
[root@Darren1 local]# mysqld_safe --user=mysql --datadir=/data/mysql/mysql3306/data &
降级检查:
[root@Darren1 local]# mysql_upgrade -uroot -p
停止数据库服务,重新启动数据库服务:
[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
[root@Darren1 bin]# ./mysql_upgrade -uroot -p147258 --skip-version-check -S /tmp/mysql3307.sock
以上步骤,部分省略,可参考5.7官方文档。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。