mysql 字符集测试_MySQL多字符集备份恢复测试

目的:测试单mysql实例在多字符集的数据库环境中备份恢复的乱码问题

准备工作:

CREATE DATABASE `utf8_db` /*!40100 DEFAULT CHARACTER SET utf8 */;

CREATE DATABASE `latin_db` /*!40100 DEFAULT CHARACTER SET latin1*/;CREATE TABLE utf8_db.`utab` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(50) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8CREATE TABLE latin_db.`ltab` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(50) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1

#模拟utf8客户端插入数据

SELECT @@character_set_client,@@character_set_connection

SET  character_set_client = 'utf8';

SET character_set_connection= 'utf8';

insert into utf8_db.utab(name) values('tom'),('老张');

#模拟latin1客户端插入数据

SELECT @@character_set_client,@@character_set_connection

SET  character_set_client = latin1;

SET character_set_connection= latin1;

select @@character_set_client,@@character_set_connection;

insert into latin_db.ltab(name) values('jery'),('小李');

#mysqldump 导出

#对于mysql实例存在不同字符集的数据库,设置选项--default-character-set不同的值,导出的结果不同

#使用latin1 导出

mysqldump --default-character-set=latin1 -N -B latin_db uft8_db > /tmp/latin1.sql

导出结果ltab表中中文的数据正常,utab表中文是乱码

#使用utf8 导出

mysqldump --default-character-set=utf8 -N -B latin_db uft8_db > /tmp/utf8.sql

导出结果utab表中中文的数据正常,ltab表中文是乱码

#使用biarny导出

mysqldump --default-character-set=binary -N -B latin_db uft8_db > /tmp/utf8.sql

导出结果utab表中中文的数据正常,ltab表中中文的数据正常

#mysqldump文件导入

由于mysql数据库实例的client编码为utf8(已经配置在my.cnf中),所以mysqldump导出文件会生成如下的hint(加粗部分):

DROP TABLE IF EXISTS `utab`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `utab` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(50) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

/*!40101 SET character_set_client = @saved_cs_client */;

这些hint并不会影响字符为utf8表的数据导入,但是会影响字符为latin1的表的数据导入(在这种情况下,latin1表中的中文字符会变成乱码)。

结论:

对于mysql实例存在不同字符集的数据库,使用mysqldump的导出的时候,一定要根据数据库字符集的不同单独导出数据库并设置对应的--default-character-set值。在数据导入时,对于数据库与mysql实例默认字符不一致的数据库,

一定要修改mysqldump文件中hint的character_set_client值

#使用binary导出,基于实例的恢复

#mysql实例备份

innobackupex --user=root --no-lock --defaults-file=/etc/my.cnf /backup/

#mysql实例还原

innobackupex --apply-log  --defaults-file=/etc/mysql/my6006.cnf /backup/2014-08-12_13-12-30/

innobackupex --copy-back  --defaults-file=/etc/mysql/my6006.cnf /backup/2014-08-12_13-12-30/

实例还原后,不同字符集的数据库和在各自不同编码的客户端下,都没有乱码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019年12月份最热门 Github 开源项目整理

12306 :12306 Star 25912 这个项目基本上是紧随着 12306 网站的功能更新而更新的,支持 12306 的所有基本功能。 ​ architect-awesome:网址 Star 41507 一套非常全面的后端架构师技术图谱,从数据结构与算法着手,带你学习后端技术的方方面面。 ​ chinese-poetry:网…

zoj 3640 概率dp

题意:一只吸血鬼,有n条路给他走,每次他随机走一条路,每条路有个限制,如果当时这个吸血鬼的攻击力大于等于某个值,那么就会花费t天逃出去,否则,花费1天的时间,并且攻击力增…

mysql 快照能否恢复某个表_mysql全库备份恢复某个表

早上小红过来问我说网站的一个功能没了,看了下数据库,少了个表。好吧,心里mmp,开始恢复数据环境: 全库备份 恢复某一个表1.1 查看备份数据[aiyeaiye mysql_backup]$ls -lhtotal 16G-rw-r--r-- 1 root root 5.4G May 21 00:58 2018…

【APICloud系列|9】APICloud自定义APPloader一个月未更新,快速更新的办法

时间比较紧,简单写一下流程。 1.登录APICloud后台,找到模块,自定APPLoader,直接编译ANdroid版本,下载到本地。 2.找到当时创建自定义apploader的文件夹,将下载的安装包复制过来,并重新命名为load.apk,删除原来的安装包。 3.修改load.conf配置文件.并保存关闭。 版本号从…

java行情一年比一年差_推动Java前进? 一个定义。 一年回顾。

java行情一年比一年差这篇文章是许多其他“年终”博客文章和评论之一。 但这并不是这样。 我试图总结一下我在2011年对Oracle和Java的了解,并且还试图解释“将Java向前推进”对我的意义以及我认为应该更好或更简单的改变。 感谢您全年关注我的博客,也感谢…

Pascal's Triangle II

Given an index k, return the kth row of the Pascals triangle. For example, given k 3,Return [1,3,3,1]. Note:Could you optimize your algorithm to use only O(k) extra space? Hide TagsArray方法一&#xff1a;保存所有二位数组 class Solution {public:vector<…

珍藏多年的视频文案网站

5g元年&#xff0c;视频需要的文案网站你值得拥有 一、TOPYS | 全球顶尖创意分享平台 网址链接&#xff1a;TOPYS:https://www.topys.cn/ TOPYS立志打造一个多元、完备的泛创意知识产品系统和学习平台&#xff0c;试图成为A Creative Institution&#xff0c;希望借由创意的学…

mysql keepalived双主双活_mysql高可用架构方案之中的一个(keepalived+主主双活)

Mysql双主双活keepalived实现高可用文件夹1、前言... 42、方案... 42.1、环境及软件... 42.2、IP规划... 42.3、架构图... 43、安装设置MYSQL半同步... 54、Keepalived实现MYSQL的高可用... 111、前言近期研究了下高可用的东西&#xff0c;这里总结一下mysql主主双活的架构方案…

基于Rx-netty和Karyon2的云就绪微服务

Netflix Karyon提供了一个干净的框架来创建可用于云的微服务。 在您的组织中&#xff0c;如果您使用包含Eureka的Netflix OSS堆栈进行服务注册和发现&#xff0c;使用Archaius进行资产管理&#xff0c;那么很可能会使用Karyon创建微服务。 Karyon最近发生了很多变化&#xff0…

中软国际 问题一php的优缺点

PHP的优点&#xff1a;  1. 跨平台&#xff0c;性能优越&#xff0c;跟Linux/Unix结合别跟Windows结合性能强45%&#xff0c;并且和很多免费的平台结合非常省钱&#xff0c;比如LAMP(Linux/Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合&#xff0c;或者数据应用…

vue项目安装less_部署vue项目、安装mongodb

一、node运行环境1、npm install -g n 通过npm 全局安装node2、sudo n 8.16.0 设置node版本Password:install : node-v8.16.0mkdir : /usr/local/n/versions/node/8.16.0fetch : https://nodejs.org/dist/v8.16.0/node-v8.16.0-darwin-x64.tar.gz#############################…

电脑正常启动黑屏,安全模式正常启动的解决办法

今天早上起来&#xff0c;打开电脑&#xff0c;输入账号信息进入后发现是黑屏&#xff0c;本以为电脑卡顿等等看&#xff0c;我看还是黑屏就关机重启了几次发现还是黑屏&#xff0c;然后进入安全模式下发现页面能打开&#xff0c;但是我们都知道安全模式只会加载一些必要的程序…

NHibernate实例化类部分属性

NHibernate 为习惯SQL的开发者提供了接口&#xff0c;将查询的结果转变为持久化对象。虽然该方法不是很提倡。 GetCurrentSession().CreateSQLQuery(sql)参数sql就是实际要执行的sql语句。 如果需要将结果转化为持久换对象&#xff0c;那需要提供对象类型。 GetCurrentSession(…

2.4 万余门在线课程免费开放!大量计算机相关课程.(赶紧收藏)

日前,教育部印发指导意见,面向全国高校免费开放全部优质在线课程和虚拟仿真实验教学资源。 截至 2 月 2 日,教育部组织了 22 个在线课程平台制定了多样化在线教学解决方案,免费开放包括 1291 门国家精品在线开放课程和 401 门国家虚拟仿真实验课程在内的在线课程 2.4 万余门…

osgi和spring区别_OSGI和Spring动态模块–简单的Hello World

osgi和spring区别在此姿势中&#xff0c;我们将采用使用OSGi进行的第一个实现&#xff0c;并使用Spring Dynamic Modules改进应用程序。 Spring动态模块&#xff08;Spring Dm&#xff09;使基于OSGi的应用程序的开发更加容易。 这样&#xff0c;服务的部署就容易得多。 您可以…

mysql binary blob区别_SQL中binary 和 varbinary的区别 blob

binary 和 varbinary固定长度 (binary) 的或可变长度 (varbinary) 的 binary 数据类型。binary [ ( n ) ]固定长度的 n 个字节二进制数据。N 必须从 1 到 8,000。存储空间大小为 n4 字节。varbinary [ ( n ) ]n 个字节变长二进制数据。n 必须从 1 到 8,000。存储空间大小为实际…

线上测试bug工具

根据每个公司性质的不同&#xff0c;规模的不同&#xff0c;所用到的bug管理工具也可能不同。你们用的bug管理工具是什么呢&#xff1f; 1. JIRA&#xff08;付费&#xff09; IRA的生产者把JIRA定义为Professional Issue Tracker&#xff0c;即它是一个专业的问题跟踪管理的…

关于bolg

云笔记挺好用的&#xff0c;博客不更了。转载于:https://www.cnblogs.com/usedrosee/p/4434618.html

Java Micro Framework:您无法忽略的新趋势

什么是Java微框架&#xff0c;为什么要使用它们&#xff1f; 每种语言都有权衡。 对于Java&#xff0c;要成为一种安全&#xff0c;经过严格测试&#xff0c;向后兼容的语言&#xff0c;就要在敏捷性和精简性方面做出一些牺牲。 毫无疑问&#xff0c;它有一些冗长和冗长的内容…

springboot mysql时区设置_java/springboot/mysql时区问题解决方案

解决步骤&#xff1a;先理清楚逻辑数据从mysql查出-->进入docker(没容器化跳过)-->进入相应的应用程序(比如java或者框架springboot之类的)-->程序处理完输出返回给前端或者页面-->展示第一步:先查mysql所以先进入mysql控制台&#xff0c;select now(),时区没问题则…