<
Mysql Centos 备份导入导出
>
上一篇

IOS Xcode打包
下一篇

Mysql Operations

MySQL 备份实践

原数据库截图


备份导出

mysqldump -u用户 -p密码 数据库名 > (目录)导出文件名
不过不建议密码输入在命令行,并且centos也会给出警告

mysqldump -uroot -p vip-manager > vip-manager-bak.sql


备份导入

mysql -u root -p

mysql> create database jiaxintestbak01;

mysql> use jiaxintestbak01;

mysql> source /mnt/data/mysql_data/jiaxintest.sql;


常见问题之表情包保存

Exception: MySQL Error: Incorrect string value: ‘\xF0\x9F\x90\xB1’ for column ……

Emoji表情符号为4个字节的字符,而 utf8 字符集只支持1-3个字节的字符,所以无法写入数据库。(mysql版本需要高于5.5.3)

mb4的意思是most bytes 4,专门为兼容四个字节的。utf8mb4是向下兼容utf8的,所以即便修改了字段的字符集也不会影响线上数据。

字符集介绍

 character_set_client:客户端来源数据使用的字符集   
 character_set_connection:连接层字符集  
 character_set_database:当前选中数据库的默认字符集  
 character_set_server:默认的内部操作字符集  
 character_set_results:查询结果字符集  
 character_set_system:系统元数据(字段名等)字符集  

服务器端配置:修改my.cnf数据库配置

vim /etc/my.cnf 添加如下配置

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

有的人遇到了备份后表情包无法正常展示(ps 我没有遇到。。。)
所以建议排查
1、设置库编码
` mysql> show variables like “%char%”;`
2、重新备份导入

为此我特地去重现了一遍

总结以下四种情况

本地重现

操作一

操作二

操作三

Mac默认无my.cnf 配置文件 针对mac端,并且没有my-default.cnf的用户

操作四

写在最后的话:在备份时设置系统的编码,而非备份后再修改编码格式,避免对历史数据造成影响

my.cnf 附件📎 点击下载

Top
Foot