searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

MySQL 数据库升级与 mysql_upgrade 工具使用

2024-10-14 09:40:25
89
0

mysql_upgrade 是 MySQL 提供的一个重要工具,用于在升级 MySQL 版本后执行数据库和表的检查与更新,确保系统正常运行。其主要功能包括:

  1. 系统表检查与更新:mysql_upgrade 会检查并更新 MySQL 系统数据库中的表(如 mysql 数据库中的用户权限表),确保它们与当前 MySQL 版本兼容。
  2. 用户表检查与更新:对用户自定义的表进行结构检查,确保表结构适应 MySQL 新版本的要求,例如处理数据类型的变化等。
  3. 存储引擎调整:在升级过程中,mysql_upgrade 会检测并根据需要更新表的存储引擎,使其与新版本兼容。
  4. 信息收集与报告:mysql_upgrade 生成详细的升级报告,帮助用户了解升级进程及数据库状态。

使用方法

mysql_upgrade 的基本语法如下:

css
<button class="flex gap-1 items-center py-1">复制代码</button>
mysql_upgrade [options]

常用选项包括:

  • -u--user:指定 MySQL 用户名。
  • -p--password:指定 MySQL 用户密码。
  • --host:指定 MySQL 服务器主机地址。
  • --port:指定 MySQL 服务器端口。

操作步骤

  1. 停止 MySQL 备控服务:在主从架构中,建议优先升级从节点,以减少对生产环境的影响。

  2. 升级准备

    • 备份二进制包和数据。
    • 根据要升级的 MySQL 版本,调整配置参数。
  3. 替换二进制包并运行 mysql_upgrade

    • 启动新版本的 MySQL 后,运行 mysql_upgrade,并检查升级日志。对于 MySQL 8.0.16 及之后的版本,mysql_upgrade 不再需要手动调用,MySQL 会自动执行相应的操作。
    • 例如:
    csharp
    <button class="flex gap-1 items-center py-1">复制代码</button>
    [root@mysql ~]# mysql_upgrade -u root -pYourPassword -S /mysql/data/3306/mysql.sock[root@mysql ~]# mysql_upgrade -uroot -pxxxxx -S /mysql/data/3306/mysql.sock
     
    Checking if update is needed.
    Checking server version.
    Running queries to upgrade MySQL server.     
    Upgrading system table data.               #升级系统表数据
    Checking system database.                  #检查系统数据库(升级系统数据库sys、mysql、performance_schema、information_schema)
    mysql.columns_priv                        OK
    mysql.component                           OK
    mysql.db                                  OK
    mysql.default_roles                       OK
    mysql.engine_cost                         OK
    mysql.func                                OK
    mysql.general_log                         OK
    mysql.global_grants                       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.password_history                    OK
    mysql.plugin                              OK
    mysql.procs_priv                          OK
    mysql.proxies_priv                        OK
    mysql.role_edges                          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
    Found outdated sys schema version 1.5.2.
    Upgrading the sys schema.
    Checking databases.                       #检查数据库
    itpuxdb.bm                                OK
    itpuxdb.dd                                OK
    itpuxdb.dq                                OK
    itpuxdb.gj                                OK
    itpuxdb.gw                                OK
    itpuxdb.itpux11                           OK
    itpuxdb.itpux12                           OK
    itpuxdb.itpux_m1                          OK
    itpuxdb.itpux_m5                          OK
    itpuxdb.itpux_obj                         OK
    itpuxdb.itpux_sales                       OK
    itpuxdb.itpux_yg                          OK
    itpuxdb.jl                                OK
    itpuxdb.yg                                OK
    sys.sys_config                            OK
    Upgrade process completed successfully.   
    Checking if update is needed.

    典型的输出日志包括:

    • 升级系统表数据(如 mysql.user 表等)。
    • 检查并升级系统数据库(如 sys、mysql、performance_schema、information_schema)。
    • 对用户数据库进行结构检查并升级。
  4. 重启 MySQL:确保新版本 MySQL 启动正常。

  5. 检查数据库状态:登录 MySQL,检查数据库表结构、数据同步状态等是否正常。

  6. 主从切换:在完成从库升级后,主库执行主从切换,继续重复上述步骤升级剩余从库。

  7. 集群检查:所有节点升级完成后,切换回原主库,检查集群运行状态。

注意事项

  • 数据备份:在执行升级操作前,一定要备份所有数据,避免因升级失败导致的数据丢失。
  • 权限问题:mysql_upgrade 通常需要以具有足够权限的用户身份执行,确保对所有数据库和表具有操作权限。
  • 时间消耗:对于大型数据库或复杂结构,升级可能需要较长时间,应提前做好预估和准备。

通过优化后的步骤,可以减少 MySQL 升级中的风险,提高操作效率,同时确保数据库的兼容性与稳定性。

0条评论
0 / 1000
lvcx12
3文章数
0粉丝数
lvcx12
3 文章 | 0 粉丝
lvcx12
3文章数
0粉丝数
lvcx12
3 文章 | 0 粉丝
原创

MySQL 数据库升级与 mysql_upgrade 工具使用

2024-10-14 09:40:25
89
0

mysql_upgrade 是 MySQL 提供的一个重要工具,用于在升级 MySQL 版本后执行数据库和表的检查与更新,确保系统正常运行。其主要功能包括:

  1. 系统表检查与更新:mysql_upgrade 会检查并更新 MySQL 系统数据库中的表(如 mysql 数据库中的用户权限表),确保它们与当前 MySQL 版本兼容。
  2. 用户表检查与更新:对用户自定义的表进行结构检查,确保表结构适应 MySQL 新版本的要求,例如处理数据类型的变化等。
  3. 存储引擎调整:在升级过程中,mysql_upgrade 会检测并根据需要更新表的存储引擎,使其与新版本兼容。
  4. 信息收集与报告:mysql_upgrade 生成详细的升级报告,帮助用户了解升级进程及数据库状态。

使用方法

mysql_upgrade 的基本语法如下:

css
<button class="flex gap-1 items-center py-1">复制代码</button>
mysql_upgrade [options]

常用选项包括:

  • -u--user:指定 MySQL 用户名。
  • -p--password:指定 MySQL 用户密码。
  • --host:指定 MySQL 服务器主机地址。
  • --port:指定 MySQL 服务器端口。

操作步骤

  1. 停止 MySQL 备控服务:在主从架构中,建议优先升级从节点,以减少对生产环境的影响。

  2. 升级准备

    • 备份二进制包和数据。
    • 根据要升级的 MySQL 版本,调整配置参数。
  3. 替换二进制包并运行 mysql_upgrade

    • 启动新版本的 MySQL 后,运行 mysql_upgrade,并检查升级日志。对于 MySQL 8.0.16 及之后的版本,mysql_upgrade 不再需要手动调用,MySQL 会自动执行相应的操作。
    • 例如:
    csharp
    <button class="flex gap-1 items-center py-1">复制代码</button>
    [root@mysql ~]# mysql_upgrade -u root -pYourPassword -S /mysql/data/3306/mysql.sock[root@mysql ~]# mysql_upgrade -uroot -pxxxxx -S /mysql/data/3306/mysql.sock
     
    Checking if update is needed.
    Checking server version.
    Running queries to upgrade MySQL server.     
    Upgrading system table data.               #升级系统表数据
    Checking system database.                  #检查系统数据库(升级系统数据库sys、mysql、performance_schema、information_schema)
    mysql.columns_priv                        OK
    mysql.component                           OK
    mysql.db                                  OK
    mysql.default_roles                       OK
    mysql.engine_cost                         OK
    mysql.func                                OK
    mysql.general_log                         OK
    mysql.global_grants                       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.password_history                    OK
    mysql.plugin                              OK
    mysql.procs_priv                          OK
    mysql.proxies_priv                        OK
    mysql.role_edges                          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
    Found outdated sys schema version 1.5.2.
    Upgrading the sys schema.
    Checking databases.                       #检查数据库
    itpuxdb.bm                                OK
    itpuxdb.dd                                OK
    itpuxdb.dq                                OK
    itpuxdb.gj                                OK
    itpuxdb.gw                                OK
    itpuxdb.itpux11                           OK
    itpuxdb.itpux12                           OK
    itpuxdb.itpux_m1                          OK
    itpuxdb.itpux_m5                          OK
    itpuxdb.itpux_obj                         OK
    itpuxdb.itpux_sales                       OK
    itpuxdb.itpux_yg                          OK
    itpuxdb.jl                                OK
    itpuxdb.yg                                OK
    sys.sys_config                            OK
    Upgrade process completed successfully.   
    Checking if update is needed.

    典型的输出日志包括:

    • 升级系统表数据(如 mysql.user 表等)。
    • 检查并升级系统数据库(如 sys、mysql、performance_schema、information_schema)。
    • 对用户数据库进行结构检查并升级。
  4. 重启 MySQL:确保新版本 MySQL 启动正常。

  5. 检查数据库状态:登录 MySQL,检查数据库表结构、数据同步状态等是否正常。

  6. 主从切换:在完成从库升级后,主库执行主从切换,继续重复上述步骤升级剩余从库。

  7. 集群检查:所有节点升级完成后,切换回原主库,检查集群运行状态。

注意事项

  • 数据备份:在执行升级操作前,一定要备份所有数据,避免因升级失败导致的数据丢失。
  • 权限问题:mysql_upgrade 通常需要以具有足够权限的用户身份执行,确保对所有数据库和表具有操作权限。
  • 时间消耗:对于大型数据库或复杂结构,升级可能需要较长时间,应提前做好预估和准备。

通过优化后的步骤,可以减少 MySQL 升级中的风险,提高操作效率,同时确保数据库的兼容性与稳定性。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0