eclipse设置utf8编码_技术分享 | MySQL 8.0:字符集从 utf8 转换成 utf8mb4
整理 MySQL 8.0 文档时发现一个变更:
默认字符集由 latin1 变为 utf8mb4。想起以前整理过字符集转换文档,升级到 MySQL 8.0 后大概率会有字符集转换的需求,在此正好分享一下。
当时的需求背景是:
部分系统使用的字符集是 utf8,但 utf8 最多只能存 3 字节长度的字符,不能存放 4 字节的生僻字或者表情符号,因此打算迁移到 utf8mb4。迁移方案一1. 准备新的数据库实例,修改以下参数:
[mysqld]
## Character Settings
init_connect='SET NAMES utf8mb4'
#连接建立时执行设置的语句,对super权限用户无效
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
#设置服务端校验规则,如果字符串需要区分大小写,设置为utf8mb4_bin
skip-character-set-client-handshake
#忽略应用连接自己设置的字符编码,保持与全局设置一致
## Innodb Settings
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = ON
#允许索引的最大字节数为3072(不开启则最大为767字节,对于类似varchar(255)字段的索引会有问题,因为255*4大于767)
2. 停止应用,观察,确认不再有数据写入
可通过 show master status 观察 GTID 或者 binlog position,没有变化则没有写入。
3. 导出数据
先导出表结构:
mysqldump -u -p --no-data --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --databases testdb > /backup/testdb.sql
后导出数据:
mysqldump -u -p --no-create-info --master-data=2 --flush-logs --routines --events --triggers --default-character-set=utf8mb4 --single-transaction --set-gtid-purged=OFF --database testdb > /backup/testdata.sql
4. 修改建表语句
修改导出的表结构文件,将表、列定义中的 utf8 改为 utf8mb4
5. 导入数据
先导入表结构:
mysql -u -p testdb < /backup/testdb.sql
后导入数据:
mysql -u -p testdb < /backup/testdata.sql
6. 建用户
查出旧环境的数据库用户,在新数据库中创建
7. 修改新数据库端口,启动应用进行测试
关闭旧数据库,修改新数据库端口重启,启动应用迁移方案二1. 修改表的字符编码会锁表,建议先停止应用
2. 停止 mysql,备份数据目录(也可以其他方式进行全备)
3. 修改配置文件,重启数据库
[mysqld]
## Character Settings
init_connect='SET NAMES utf8mb4'
#连接建立时执行设置的语句,对super权限用户无效
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
#设置服务端校验规则,如果字符串需要区分大小写,设置为utf8mb4_bin
skip-character-set-client-handshake
#忽略应用连接自己设置的字符编码,保持与全局设置一致
## Innodb Settings
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = ON
#允许索引的最大字节数为3072(不开启则最大为767字节,对于类似varchar(255) 字段的索引会有问题,因为255*4大于767)
4. 查看所有表结构,包括字段、修改库和表结构,如果字段有定义字符编码,也需要修改字段属性,sql 语句如下:修改表的字符集:
alter table t convert to character set utf8mb4;
影响:拷贝全表,速度慢,会加锁,阻塞写操作
修改字段的字符集(utf8mb4 每字符占 4 字节,注意字段类型的最大字节数与字符长度关系):
alter table t modify a char CHARACTER SET utf8mb4;
影响:拷贝全表,速度慢,会加锁,阻塞写操作
修改 database 的字符集:
alter database sbtest CHARACTER SET utf8mb4;
影响:只需修改元数据,速度很快5. 修改 JDBC url characterEncoding=utf-8
社区近期动态
No.1
Mycat 问题免费诊断
诊断范围支持:
Mycat 的故障诊断、源码分析、性能优化
服务支持渠道:
技术交流群,进群后可提问
QQ群(669663113)
社区通道,邮件&电话
osc@actionsky.com
现场拜访,线下实地,1天免费拜访
关注“爱可生开源社区”公众号,回复关键字“Mycat”,获取活动详情。
No.2
社区技术内容征稿
征稿内容:
格式:.md/.doc/.txt
主题:MySQL、分布式中间件DBLE、数据传输组件DTLE相关技术内容
要求:原创且未发布过
奖励:作者署名;200元京东E卡+社区周边
投稿方式:
邮箱:osc@actionsky.com
格式:[投稿]姓名+文章标题
以附件形式发送,正文需注明姓名、手机号、微信号,以便小编及时联系
喜欢点"分享",不行就"在看"
eclipse设置utf8编码_技术分享 | MySQL 8.0:字符集从 utf8 转换成 utf8mb4相关推荐
- mysql 如何设置延迟启动_技术分享 | MySQL 网络延时参数设置建议
作者:毛思平 工作11年,从事数据库工作7年,主要在金融行业.主要是做oracle,mysql.现在在农行软开中心主要做数据库应用方面的研究. 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授 ...
- 发布json数据_技术分享 | MySQL 8.0.17 GA 发布!
昨日 MySQL 官网正式发布 8.0.17 / 5.7.27 / 5.6.45 三个(维护)版本,距离上一个 GA 版本(8.0.16)发布时隔仅 88 天! MySQL 各开发团队的博客网站,同一 ...
- angular select设置默认选中_技术分享 | Charset 和 Collat??ion 设置对 MySQL 性能的影响...
原创: 管长龙 译 作者:Vadim Tkachenko 通过测试,比较 MySQL 5.7.25 和 MySQL 8.0.15 之间字符集和校验规则的设置所带来的性能差异.测试环境 系统 | Ubu ...
- MySQL8.0 物理克隆接口_技术实战 MySQL 8.0.17 克隆插件分享-爱可生
原标题:技术实战 MySQL 8.0.17 克隆插件分享-爱可生 背景 很神奇,5.7.17 和 8.0.17,连续两个17小版本都让人眼前一亮.前者加入了组复制(Group Replication) ...
- mysql优化说出九条_技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢?
原标题:技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢? 背景 2019-01-11 9:00-10:00 一个 MySQL 数据库把 CPU 打满了. 硬件配置:256G 内存,48 ...
- mysql 客户端_技术分享 | MySQL 客户端连不上(1045 错误)原因全解析
作者:Carlos Tutte.Marcos Albe 翻译:管长龙 在我们学习 MySQL 或从事 MySQL DBA 工作期间,时常会遇到:"我尝试连接到 MySQL 并且收到1045 ...
- mysql内连接简写_技术分享 | MySQL 的 join_buffer_size 在内连接上的应用
本文详细介绍了 MySQL 参数 join_buffer_size 在 INNER JOIN 场景的使用,OUTER JOIN 不包含.在讨论这个 BUFFER 之前,我们先了解下 MySQL 的 I ...
- left join 索引失效无条件_技术分享 | MySQL 优化:JOIN 优化实践
近期刚好学习了丁奇老师的<MySQL 实战 45 讲>中的 join 优化相关知识,又刚刚好碰上了一个非常切合的 join 查询需要优化,分析过程有些曲折,记录下来留作笔记.问题 SQL ...
- mysql5驱动_技术分享 | MySQL 8 和 MySQL 5.7 在小型设备的内存消耗分析
原创: 管长龙 译 作者:Peter Zaitsev 虽然我们经常在较大规模的系统上运行 MySQL ,但我们常常在最小的云实例上运行MySQL,或者只在我们的笔记本电脑上运行它.在这些情况下,MyS ...
- mysql 行锁 超时_技术分享 | MySQL 行锁超时排查方法优化
作者:xuty 本文来源:原创投稿 * 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源. 一.大纲 #### 20191219 10:10:10,234 | com.ali ...
最新文章
- LATEX 在section层级目录上也加上虚线
- 搭建WEB服务详解(二)
- 神策数据全面支持苹果 ASA,全域归因方案再升级
- jqgrid学习(三)
- API网关正在经历身份危机
- 网页爬虫的设计与实现(Java版)
- 一些会遗忘的代码属性
- CMD应用 qtp/winshell/cmd的交互
- movingpandas时空数据分析——旧金山出租车轨迹数据集处理
- 改版更新后的领英职场不能搜索开发客户怎么办?两种方法加一个工具解决
- c语言程序设计电子英汉词典,C语言程序设计课程设计-电子英汉词典设计.doc
- 2019第十四届中国竞争情报国际年会将于4月在上海召开
- 图文讲解Python数据可视化神器
- DNS 文件传输协议
- 超级表格终于上线「文件转让」功能!文件调动容易解决!
- 正则表达式及bash脚本(一)
- Impala的命令COMPUTE STATS
- 老调重弹之Java引用类型
- 援非洲,清华曹丰泽:我要证明,理想主义的路是走得通的!
- 2023年全国最新会计专业技术资格精选真题及答案36