当前位置:   article > 正文

使用rpm升级mysql_之前的mysql数据库不是rpm安装的能用rpm升级吗

之前的mysql数据库不是rpm安装的能用rpm升级吗

介绍

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

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

为了应该组件中出现的漏洞,组建的厂商会不定期的发布新的版本,去修复老版本中的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();
  • 1

mysql -V
  • 1
  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  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
  • 1
  • 2
  • 3

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  1. 备份数据库
    为防止升级出现故障以及人为的错误操作,升级前对数据库进行备份。
# mysqldump -uroot -p --add-drop-database  --event --routines -A -Y -B >/opt/mysql5.6/mysql_all_backup.sql
  • 1
  1. 关闭缓存
SQL> set global innodb_fast_shutdown=0
  • 1

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

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

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

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

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%]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

升级完成后,启动数据库,使用命令检查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
  • 2
  • 3
  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.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82

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

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

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

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

使用mysql_upgrade升级后问题解决
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号