MySQL5.7升级到8.0(二):配置和参数

Note:这里面是升级到8.0,需要DBA参与修改部分或注意部分

1.配置文件.cnf变化

以下参数变化

expire-logs-days  =>  binlog_expire_logs_seconds # 替换 expire-logs-days
tx_isolation      =>  transaction_isolation
tx_read_only      =>  transaction_read_only
innodb_undo_logs  =>  innodb_rollback_segments
have_query_cache  = no      # 永远为 NO
expire-logs-days 后续可能废弃, 使用 binlog_expire_logs_seconds  (目前还支持)

以下参数不再支持

innodb_stats_sample_pages
innodb_locks_unsafe_for_binlog
innodb_file_format   
innodb_file_format_check
innodb_file_format_max
innodb_large_prefix
ignore_builtin_innodb
skip-symbolic-links  # 默认即 skip-symbolic-links.
sync_frm             # 8.0 版本去掉了 .frm 文件, 内置在 ibd 文件中
sql_log_bin          # 仅支持会话级别设置
query_cache_xxx      # 缓存相关的系统变量
metadata_locks_cache_size
metadata_locks_hash_instances
date_format
datetime_format
time_format
max_tmp_tables

2.系统表变化

INNODB_LOCKS      => data_locks
INNODB_LOCK_WAITS => data_lock_waits

3.binlog变化

binlog命令

mysqlbinlog --verbose --base64-output=decode-rows mysql-bin.0000xx

binlog格式

# original_commit_timestamp=1587435300248124 (2020-04-21 10:15:00.248124 CST)
# immediate_commit_timestamp=1587435300248124 (2020-04-21 10:15:00.248124 CST)
/*!80001 SET @@session.original_commit_timestamp=1587435300248124*//*!*/;
/*!80014 SET @@session.original_server_version=80019*//*!*/;
/*!80014 SET @@session.immediate_server_version=80019*//*!*/;

4.权限与密码

权限

密码

mysql > show global variables like '%auth%plugin%';                            
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | caching_sha2_password |
+-------------------------------+-----------------------+

mysql > alter user 'user'@'xxx' identified with mysql_native_password by 'pass';
# mysql -h infodb6 -P 3397 -u root -p
Enter password: 
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/local/mysql/lib/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
[mysqld]
default_authentication_plugin = mysql_native_password

5.表变更

没有 frm 文件

没有整形宽度

mysql root@[localhost:s3397 percona] > show warnings\G
*************************** 1. row ***************************
  Level: Warning
   Code: 1681
Message: Integer display width is deprecated and will be removed in a future release.

mysql root@[localhost:s3397 percona] > show create table tests\G
*************************** 1. row ***************************
       Table: tests
Create Table: CREATE TABLE `tests` (
  `id` int NOT NULL AUTO_INCREMENT,
  `host` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
  `port` smallint NOT NULL DEFAULT '3306',
  `tag` varchar(100) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
  `location` varchar(50) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `unq_hostmark` (`host`,`port`,`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

DATETIME和时区

大小写敏感

innodb 变更

6.索引变更

7.默认编码变成UTF8MB4

去掉了 UTF8 编码, 使用 UTF8MB3 代替以前的 UTF8, 8.0 中建议使用 UTF8MB4 编码. 默认的编码亦从 latin1 改为 utf8mb4, 默认的编码排序规则从 latin1_swedish_ci 改为 utf8mb4_0900_ai_ci;

8.mysqldump 备份

使用较低的 5.7.x8.0.x 版本进行 mysqldump 备份的时候, 默认指定了 sql 模式 NO_AUTO_CREATE_USER, 包含此模式的 dump 文件在恢复的时候都会失败, 需要手动删除该模式.

9.主从复制

升级步骤

mysql版本:低版本5.7.26 高版本8.0.20

1.执行升级程序

/data/mysql5.7/bin/mysql -h {} -P {} -u {} -p

show variables like 'innodb_fast_shutdown';

set global innodb_fast_shutdown=0;

shutdown;

exit;

/usr/local/mysql3307/bin/mysqld_safe –defaults-file=/data/mysql3308/conf/my.cnf –user=mysql –lc-messages-dir=/usr/local/mysql3307/share –lc-messages=en_US &

2.问题总结

basedir = /data/mysql3308
skip_ssl
default_authentication_plugin=mysql_native_password
#query_cache_limit = 1M
#sql_mode = NO_AUTO_CREATE_USER
#default-time_zone = '+8:00'
#innodb_support_xa = 1
#query_cache_min_res_unit = 4096
#query_cache_size = 0 #query_cache_type = 0
#innodb_undo_logs=128
mysqlx_port = 33080
mysqlx_socket = /data/mysql3308/mysqlx.sock

#innodb_undo_tablespaces=4

更改完配置以后。mysql启动正常,但是检查日志。有 –lc-messages报错。

[ERROR] [MY-010338] [Server] Can't find error-message file '/data/mysql3308/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
/usr/local/mysql3307/bin/mysqld_safe --defaults-file=/data/mysql3308/conf/my.cnf --user=mysql --lc-messages-dir=/usr/local/mysql3307/share --lc-messages=en_US &
>> Home

51ak

2023/04/20

Categories: mysql mysql8.0 mysql升级 Tags: 原创

《数据库工作笔记》公众号
扫描上面的二维码,关注我的《数据库工作笔记》公众号