Mysql5.7升级

Mysql5.7升级

𝓓𝓸𝓷 Lv6

Upgrading MySQL Binary or Package-based Installations on Unix/Linux

How to upgrade MySQL binary and package-based installations on Unix/Linux. In-place and logical upgrade methods are described

本文采用In-Place Upgrade方式升级Mysql5.7数据库

一、停止应用
二、检查数据库连接

Mysql升级之前先检查数据库连接状况

1
show processlist;
三、检查XA事务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
检查XA事务:
SELECT * FROM information_schema.innodb_trx;

如果想了解更多关于特定XA事务的信息,可以通过SELECT * FROM information_schema.innodb_xa;语句来查询该事务的详细信息。需要提供事务ID(transaction ID)作为参数。


若要结束或中止一个XA事务,可以使用以下命令,其中'transaction_id'应替换为要结束/中止的事务的ID。
ROLLBACK PREPARED 'transaction_id';

此外,还可以使用以下命令来查看已经完成的XA事务日志:
SHOW ENGINE INNODB STATUS\G;
在输出结果中,可以找到"TRANSACTIONS"部分,其中包含了已经完成的XA事务的详细信息。


# XA检查是否有值
mysql> XA RECOVER;
Empty set (0.00 sec)

# 若有值,则需要 COMMIT 或 ROLLBACK xid
# mysql> XA COMMIT xid;
# 或
# mysql> XA ROLLBACK xid;

四、备份数据库

备份可以采用逻辑备份或冷备份方式进行备份,建议采用冷备份

1
mysqldump -uroot -p -S /tmp/mysql_3306.sock -A -R -E --triggers --master-data=2 --single-transaction > /opt/Mysql_Full_`date +%Y%m%d`.sql
五、配置缓慢关闭数据库,保证数据完整性

With a slow shutdown, InnoDB performs a full purge and change buffer merge before shutting down, which ensures that data files are fully prepared in case of file format differences between releases.

1
2
3
4
mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"

[root@server01 soft]# mysql -uroot -p -S /tmp/mysql_3306.sock -e 'set global innodb_fast_shutdown=0'
Enter password:
六、关闭数据库
1
shutdown
七、冷备份
1
2
[root@server01 ~]# cd /data
[root@server01 data]# cp database database.20240118.bak
八、替换旧的Mysql目录

如何/usr/local/mysql使用的软链接,直接删除这个软链接然后再将新的Mysql目录链接到这里

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
[root@server01 data]# cd /usr/local
[root@server01 local]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
drwxr-xr-x. 9 mysql mysql 129 Jan 18 08:57 mysql
drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
drwxr-xr-x. 5 root root 49 Jan 17 15:25 share
drwxr-xr-x. 2 root root 6 Apr 11 2018 src


[root@server01 local]# mv mysql mysql.20240118.bak
[root@server01 local]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
drwxr-xr-x. 9 mysql mysql 129 Jan 18 08:57 mysql.20240118.bak
drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
drwxr-xr-x. 5 root root 49 Jan 17 15:25 share
drwxr-xr-x. 2 root root 6 Apr 11 2018 src



[root@server01 soft]# tar xvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
[root@server01 soft]# chown -R mysql.mysql /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64/

[root@server01 soft]# cd /usr/local/

[root@server01 local]# ln -s mysql-5.7.44-linux-glibc2.12-x86_64 mysql

[root@server01 local]# ll
total 0
drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 games
drwxr-xr-x. 2 root root 6 Apr 11 2018 include
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
lrwxrwxrwx. 1 root root 35 Jan 18 10:39 mysql -> mysql-5.7.44-linux-glibc2.12-x86_64
drwxr-xr-x. 9 mysql mysql 129 Jan 18 08:57 mysql.20240118.bak
drwxr-xr-x. 9 mysql mysql 129 Jan 18 10:37 mysql-5.7.44-linux-glibc2.12-x86_64
drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
drwxr-xr-x. 5 root root 49 Jan 17 15:25 share
drwxr-xr-x. 2 root root 6 Apr 11 2018 src


九、启动Mysql

–defaults-file参数必须放在–user参数的前面,否则会失效,Mysql启动不会选择/etc/mysql_3306.cnf参数文件

1
[root@server01 mysql]# mysqld_safe --defaults-file=/etc/mysql_3306.cnf --user=mysql &
十、升级Mysql

在MySQL 8.0.16版本之前,需要手动的执行mysql_upgrade来完成该步骤的升级,
在MySQL 8.0.16版本及之后是由mysqld以In-Place方式直接升级到MySQL8.0.22

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
[root@znyz-test-app-001 ~]# tail -300f /data/database/mysql3306/data/mysql3306.err

[root@server01 mysql]# mysql_upgrade -uroot -p -S /tmp/mysql_3306.sock
Enter password:
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
The sys schema is already up to date (version 1.5.2).
Checking databases.
stamp.archive_file_record OK
stamp.b_analysis_sql OK
stamp.b_apply_seal_out OK
stamp.b_bill_rule OK
stamp.b_bill_rule_setting OK
stamp.b_device_corner OK
stamp.b_emergency_image OK
stamp.b_emergency_used_seal OK
stamp.b_execute_user OK
stamp.b_face_validate_info OK
stamp.b_key_word OK
stamp.b_print_info OK
stamp.b_remote_authorization OK
stamp.b_seal_label OK
stamp.b_seal_lowfrequency OK
stamp.b_seal_master_warning OK
stamp.b_seal_out_info OK
stamp.b_seal_out_seal_admin OK
stamp.b_seal_statement OK
stamp.b_seal_temp_video OK
stamp.b_seal_transfer_info OK
stamp.b_seal_video OK
stamp.b_seal_warning OK
stamp.b_seal_warning_image OK
stamp.b_seal_warning_longpress OK
stamp.b_use_seal_waiting OK
stamp.b_used_seal_exception OK
stamp.b_used_seal_info OK
stamp.b_used_seal_info_relation OK
stamp.b_used_seal_report OK
stamp.b_used_seal_status OK
stamp.b_used_seal_status_relation OK
stamp.b_used_seal_times OK
stamp.b_used_seal_validate OK
stamp.b_warn_seal_admin OK
stamp.c_field_mapping OK
stamp.c_field_validate OK
stamp.c_parameter OK
stamp.c_parameter_start OK
stamp.c_parameter_sync OK
stamp.c_parameter_type OK
stamp.c_parameter_type_copy1 OK
stamp.c_synchronization_history OK
stamp.c_synchronization_strategy OK
stamp.cfg_field_mapping OK
stamp.cfg_parameter OK
stamp.d_dictionary_type OK
stamp.d_dictionary_value OK
stamp.device_policy_merge OK
stamp.emergency_password_log OK
stamp.external_setting OK
stamp.f_s_disk_file OK
stamp.f_s_file OK
stamp.f_s_file_cut OK
stamp.f_s_file_pretreatment_task OK
stamp.f_s_image OK
stamp.f_s_img_ocr OK
stamp.file_credentials_detail OK
stamp.file_credentials_log OK
stamp.file_credentials_status OK
stamp.l_device_log OK
stamp.l_event_log OK
stamp.l_exception_log OK
stamp.l_login_log OK
stamp.l_seal_log OK
stamp.l_visit_log OK
stamp.log_event_type OK
stamp.lowfrequency_warning_setting OK
stamp.ocr_check_image OK
stamp.ocr_file_page OK
stamp.ocr_retry_task OK
stamp.ocr_task OK
stamp.ocr_task_file OK
stamp.ocr_task_report OK
stamp.ocr_warning_info OK
stamp.password_record OK
stamp.r_ocr_similar_word OK
stamp.r_risk_image_audit OK
stamp.r_risk_level_setting OK
stamp.r_risk_type_label OK
stamp.r_risk_type_workflow OK
stamp.r_risk_workflow_audit OK
stamp.rest_role OK
stamp.rest_user OK
stamp.rest_user_company OK
stamp.rest_user_role OK
stamp.s_auto_machine OK
stamp.s_auto_machine_admin OK
stamp.s_device OK
stamp.s_device_detail OK
stamp.s_device_policy OK
stamp.s_device_type OK
stamp.s_equipment_package OK
stamp.s_module_storage OK
stamp.s_seal_access_record OK
stamp.s_seal_box_ext OK
stamp.s_seal_cabinet OK
stamp.s_seal_cabinet_control OK
stamp.s_seal_cabinet_log_snapshot OK
stamp.s_seal_cabinet_setting OK
stamp.s_seal_console OK
stamp.s_seal_console_admin OK
stamp.s_seal_console_detail OK
stamp.s_seal_console_policy OK
stamp.s_seal_console_setting OK
stamp.s_seal_container OK
stamp.s_seal_module OK
stamp.s_seal_storage OK
stamp.s_storage_box OK
stamp.s_storage_goods OK
stamp.sc_fdfs OK
stamp.seal_admin OK
stamp.seal_area OK
stamp.seal_auth OK
stamp.seal_base OK
stamp.seal_base_model_file OK
stamp.seal_current_address OK
stamp.seal_engrave OK
stamp.seal_label OK
stamp.seal_location OK
stamp.seal_receive OK
stamp.seal_statistics OK
stamp.seal_used_statistics OK
stamp.seal_users OK
stamp.sys_aoth OK
stamp.sys_archive_template_setting OK
stamp.sys_company OK
stamp.sys_company_license OK
stamp.sys_department OK
stamp.sys_expired_policy OK
stamp.sys_file_server OK
stamp.sys_log OK
stamp.sys_menu OK
stamp.sys_menu_permission OK
stamp.sys_message OK
stamp.sys_message_content_key OK
stamp.sys_message_error_retry OK
stamp.sys_message_receive_user OK
stamp.sys_message_template OK
stamp.sys_message_template_property OK
stamp.sys_message_type OK
stamp.sys_plaintext_watermark_setting OK
stamp.sys_plaintext_watermark_workflow OK
stamp.sys_role OK
stamp.sys_role_menu OK
stamp.sys_scanner_auth_info OK
stamp.sys_seal_expired_policy OK
stamp.sys_secret_key OK
stamp.sys_security_code OK
stamp.sys_setting OK
stamp.sys_setting_backup OK
stamp.sys_setting_banner OK
stamp.sys_similar_word OK
stamp.sys_trace_log OK
stamp.sys_user OK
stamp.sys_user_app OK
stamp.sys_user_auth OK
stamp.sys_user_department OK
stamp.sys_user_external OK
stamp.sys_user_feature OK
stamp.sys_user_role OK
stamp.sys_version OK
stamp.sys_water_mark OK
stamp.sys_workflow_column OK
stamp.t_temp_file OK
stamp.theme_setting OK
stamp.transfer_used_seal_setting OK
stamp.w_form_base OK
stamp.w_workflow_apply OK
stamp.w_workflow_apply_matrix_form OK
stamp.w_workflow_base OK
stamp.w_workflow_base_matrix OK
stamp.w_workflow_base_relation OK
stamp.w_workflow_column OK
stamp.w_workflow_countersign OK
stamp.w_workflow_line OK
stamp.w_workflow_line_relation OK
stamp.w_workflow_matrix_base OK
stamp.w_workflow_matrix_detail OK
stamp.w_workflow_model OK
stamp.w_workflow_model_relation OK
stamp.w_workflow_node OK
stamp.w_workflow_node_relation OK
stamp.w_workflow_opinion OK
stamp.w_workflow_seal_log OK
stamp.w_workflow_seal_log_operator OK
stamp.w_workflow_setting OK
stamp.w_workflow_step OK
stamp.w_workflow_step_data OK
stamp.w_workflow_step_relation OK
stamp.w_workflow_step_user OK
stamp.w_workflow_user OK
stamp.websocket_message_log OK
stamp.wf_change_seal OK
stamp.wf_change_seal_status OK
stamp.wf_create_seal OK
stamp.wf_transfer_seal OK
stamp.wf_used_seal OK
stamp.wf_used_seal_relation OK
stamp.xxl_job_group OK
stamp.xxl_job_info OK
stamp.xxl_job_lock OK
stamp.xxl_job_log OK
stamp.xxl_job_log_report OK
stamp.xxl_job_logglue OK
stamp.xxl_job_registry OK
stamp.xxl_job_user OK
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.
十一、加载新的帮助表
1
2
[root@server01 mysql]# mysql -uroot -p mysql -S /tmp/mysql_3306.sock < /usr/local/mysql/share/fill_help_tables.sql
Enter password:
十二、重新启动Mysql
1
2
3
[root@server01 mysql]# mysqladmin -uroot -p shutdown -S /tmp/mysql_3306.sock

[root@server01 mysql]# mysqld_safe --defaults-file=/etc/mysql_3306.cnf --user=mysql &
  • Title: Mysql5.7升级
  • Author: 𝓓𝓸𝓷
  • Created at : 2024-07-13 16:20:25
  • Updated at : 2024-07-20 05:15:41
  • Link: https://www.zhangdong.me/mysql5.7-upgrede.html
  • License: This work is licensed under CC BY-NC-SA 4.0.
评论