使用rpm升级mysql

介绍

随着互联网技术不停的发展,一些应用程序在使用的过程中,其中的漏洞就会慢慢的被发现。不法分子就会利用这些漏洞对我们的应用程序进行攻击、获取企业的信息等。

其中数据库服务器是企业应用中很重要的一环,其中保存着企业,用户的重要数据库。所以对于数据库的漏洞更加应该重视。

为了应该组件中出现的漏洞,组建的厂商会不定期的发布新的版本,去修复老版本中的bug和漏洞。我们只需下载新版本的程序升级即可。

mysql数据库跨版本升级

由于以前的项目使用的数据库是mysql 5.6.X版本,随着业务的发展,发现5.6.X版本中已经无法满足业务的需要,比如,5.6.X中许多函数就无法使用。而且在实际生产中,安全厂商对5.6.X进行漏洞扫描,5.6.X存在漏洞。

考虑到上面的两个原因,这里决定将mysql 5.6跨版本升级到mysql 5.7

  1. 下载mysql 5.7
    mysql的安装文件从官方网站下载,官网地址:https://downloads.mysql.com/archives/community/

  2. 查看当前mysql版本

select version();

mysql -V
  1. 查看mysql 5.6的sql_mode参数
mysql> show variables like "sql_mode";
+---------------+--------------------------------------------+
| Variable_name | Value                                      |
+---------------+--------------------------------------------+
| sql_mode      | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
1 row in set (0.07 sec)
  1. 解压mysql 5.7安装文件
    在mysql服务器上新建一个目录,用于报错mysql 5.7安装包解压文件
# cd /opt
# mkdir /opt/mysql5.7
# tar xf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar -C mysql5.7

mysql5.7的压缩文件会解压出10个rpm文件

[root@server opt]# ll mysql5.7
总用量 533048
-rw-r--r-- 1 7155 31415  27768112 12月 19 2019 mysql-community-client-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415    318972 12月 19 2019 mysql-community-common-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415   4085448 12月 19 2019 mysql-community-devel-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415  47521016 12月 19 2019 mysql-community-embedded-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415  23354680 12月 19 2019 mysql-community-embedded-compat-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 131015588 12月 19 2019 mysql-community-embedded-devel-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415   2596180 12月 19 2019 mysql-community-libs-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415   1353080 12月 19 2019 mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 183618644 12月 19 2019 mysql-community-server-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 124193252 12月 19 2019 mysql-community-test-5.7.29-1.el7.x86_64.rpm

  1. 备份数据库
    为防止升级出现故障以及人为的错误操作,升级前对数据库进行备份。
# mysqldump -uroot -p --add-drop-database  --event --routines -A -Y -B >/opt/mysql5.6/mysql_all_backup.sql
  1. 关闭缓存
SQL> set global innodb_fast_shutdown=0

关闭此缓存的原因是为了避免版本不通而导致的缓存差异

  1. 关闭mysql 5.6数据库
# systemctl stop mysql

注意:测试发现,升级时不关闭数据库也可以,升级完成后数据库会被重新启动,若升级时关闭了数据库,升级完成后记得重新启动数据

  1. 升级mysql
    升级mysql比较简单,直接使用rpm -Uvh 进行升级即可,
    在升级时需要注意,mysql 5.7的安装包需要依赖perl-JSON组件,所以需要安装此组件,使用yum源安装即可
# yum  install perl-JSON

perl-JSON依赖包安装完成后使用命令进行升级mysql

[root@server mysql5.7]# rpm -Uvh mysql-community-*.rpm
警告:mysql-community-client-5.7.29-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql-community-common-5.7.29-1.e################################# [  6%]
   2:mysql-community-libs-5.7.29-1.el7################################# [ 12%]
   3:mysql-community-client-5.7.29-1.e################################# [ 18%]
   4:mysql-community-server-5.7.29-1.e警告:/etc/my.cnf 已建立为 /etc/my.cnf.rpmnew 
################################# [ 24%]
   5:mysql-community-devel-5.7.29-1.el################################# [ 29%]
   6:mysql-community-embedded-5.7.29-1################################# [ 35%]
   7:mysql-community-embedded-devel-5.################################# [ 41%]
   8:mysql-community-test-5.7.29-1.el7################################# [ 47%]
   9:mysql-community-libs-compat-5.7.2################################# [ 53%]
  10:mysql-community-embedded-compat-5################################# [ 59%]
正在清理/删除...
  11:MySQL-test-5.6.48-1.el7          ################################# [ 65%]
  12:MySQL-embedded-5.6.48-1.el7      ################################# [ 71%]
  13:MySQL-devel-5.6.48-1.el7         ################################# [ 76%]
  14:MySQL-client-5.6.48-1.el7        ################################# [ 82%]
  15:MySQL-server-5.6.48-1.el7        ################################# [ 88%]
  16:MySQL-shared-compat-5.6.48-1.el7 ################################# [ 94%]
  17:MySQL-shared-5.6.48-1.el7        ################################# [100%]

升级完成后,启动数据库,使用命令检查mysql当前版本

[root@server mysql5.7]# systemctl start mysqld
[root@server mysql5.7]# mysql -V
mysql  Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using  EditLine wrapper
  1. 使用mysql_upgrade检查当前版本与升级版本的不兼容性
    检查的过程如下,
[root@server mysql5.7]# mysql upgrade -uroot -p111111 --force
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1049 (42000): Unknown database 'upgrade'
[root@server mysql5.7]# mysql_upgrade -uroot -p111111
mysql_upgrade: [Warning] Using a password on the command line interface can be insecure.
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Upgrading the sys schema.
Checking databases.
sys.sys_config                                     OK
up.acct_loan_record                                OK
up.acct_loan_record_app                            OK
up.acct_loan_record_sync                           OK
up.accumulation_fund                               OK
up.act_ge_bytearray                                OK
up.act_ge_property                                 OK
up.act_hi_actinst                                  OK
up.act_hi_attachment                               OK
up.act_hi_comment                                  OK
up.act_hi_detail                                   OK
up.act_hi_identitylink                             OK
up.act_hi_procinst                                 OK
up.act_hi_taskinst                                 OK
up.act_hi_varinst                                  OK
up.act_re_deployment                               OK
up.act_re_model                                    OK
up.act_re_procdef                                  OK
up.act_ru_event_subscr                             OK
up.act_ru_execution                                OK
up.act_ru_identitylink                             OK
up.act_ru_job                                      OK
up.act_ru_task                                     OK
up.act_ru_variable                                 OK
up.active_award_record                             OK
up.active_award_record0917                         OK
up.active_cookie_info                              OK
up.active_cookie_info0917                          OK
up.active_mch_transfer_serial0917                  OK
up.active_transfer_serial                          OK
up.active_transfer_serial0917                      OK
up.activity_award_level                            OK
up.activity_award_pool                             OK
up.activity_award_pool0917                         OK
up.activity_award_pool_20200609                    OK
up.activity_award_pool_new                         OK
up.activity_award_pool_temp                        OK
......
Upgrade process completed successfully.
Checking if update is needed.

mysql_upgrade检查完成后要重启mysql数据库

[root@server mysql5.7]# systemctl restart mysqld

若升级完后,为使用mysql_upgrade进程检查,则在使用时可能会报错,这里给出一个遇到的错误:

在使用查询mysql参数配置
SQL> show variables like "sql_mode";
若未使用mysql_upgrade进行检查,则会报如下错误
ERROR 1146 (42S02): Table 'performance_schema.session_variables' doesn't ...

使用mysql_upgrade升级后问题解决

总结:
到此mysql升级完成,其中需要注意:
1、升级前一定要备份数据库。
2、升级完成后,使用mysql_upgrade进行新旧版本数据库兼容性的检查。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值