mysql-connector-java 插入 utf8mb4 字符失败问题处理分析

By | 2019-05-17

问题说明 业务数据库实例的编码由 utf8 修改为 utf8mb4 后, java 业务插入表情符等宽字符(4 字节)的时候一直报错以下相关的错误: ### Cause:java.sql.SQLException:Incorrect string value:\xF0\x9F\x98\x8E for column nick_name at row 1 ;uncategorized SQLException for SQL[]; SQL state [HY000]; error code[1366];Incorrect string value: \xF0\x9F\x98\x8E for column nick_name at row 1 程序及数据库运行的版本及环境如下所示: Centos 7.6 kernel-3.10.0-957.1.3.el7.x86_64 mysql-connector-java-5.1.46 Percona-Server-5.6.38-rel83.0-Linux 测试环境中使用同样的 mysql-connector-java 版本, 程序可以正常插入. 所不同的是测试环境修改完编码后重启了 MySQL 服务, 线上环境仅做以下修改, 重启程序而不重启 MySQL 服务: set… Read More »

linux 系统 bad pmd 错误处理

By | 2019-05-08

问题说明 近期一台主机报以下 kernel 警告信息: May 4 22:19:52 cztest kernel: mm/memory.c:413: bad pmd ffff9f1b3127e710(80000010ba8008e7) May 4 22:19:52 cztest telegraf: fatal error: s.freeindex > s.nelems May 4 22:19:52 cztest telegraf: goroutine 33796712 [running]: …… May 4 22:19:52 cztest kernel: ————[ cut here ]———— May 4 22:19:52 cztest kernel: WARNING: CPU: 16 PID: 1646 at mm/mmap.c:3042 exit_mmap+0x196/0x1a0 May… Read More »

linux 系统 page allocation failure 问题处理

By | 2019-04-28

问题说明 近期一台主机报以下 kernel 警告信息: Apr 28 05:30:51 cztest kernel: swapper/13: page allocation failure: order:5, mode:0x4020 Apr 28 05:30:51 cztest kernel: Pid: 0, comm: swapper/13 Not tainted 3.4.24-x86_64 #3 Apr 28 05:30:51 cztest kernel: Call Trace: Apr 28 05:30:51 cztest kernel: <IRQ> [<ffffffff8109b77b>] warn_alloc_failed+0xeb/0x130 Apr 28 05:30:51 cztest kernel: [<ffffffff8105611e>] ? __wake_up+0x4e/0x70 Apr 28 05:30:51 cztest… Read More »

linux 系统 rcu_bh self-detected stall 问题处理

By | 2019-04-26

问题说明 近期几台 linux 机器都报了以下 kernel 提示: Apr 24 21:02:09 cztest kernel: INFO: rcu_bh self-detected stall on CPU { 0} (t=0 jiffies) Apr 24 21:02:09 cztest kernel: Pid: 0, comm: swapper/0 Not tainted 3.4.95.R620.CentOS6.5-x86_64.OpenBeta.KVM #1 Apr 24 21:02:09 cztest kernel: Call Trace: Apr 24 21:02:09 cztest kernel: <IRQ> [<ffffffff810bbca2>] __rcu_pending+0x192/0x4e0 Apr 24 21:02:09 cztest kernel: [<ffffffff810a1e70>]… Read More »

linux 系统 xfs_vm_releasepage 警告问题处理

By | 2019-03-27

问题说明 最近的几台机器在同一天的不同时段都出现以下警告信息: Mar 26 20:55:03 host1 kernel: WARNING: at fs/xfs/xfs_aops.c:1045 xfs_vm_releasepage+0xcb/0x100 [xfs]() Mar 26 20:55:03 host1 kernel: Modules linked in: nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack iptable_filter ip_tables ebtable_filter ebtables ip6table_ filter ip6_tables devlink bridge stp llc xt_multiport sunrpc dm_mirror dm_region_hash dm_log dm_mod intel_powerclamp coretemp intel_rapl iosf_mbi kvm_intel kvm irqbypa ss crc32_pclmul ghash_clmulni_intel aesni_intel lrw gf128mul glue_helper… Read More »

TokuDB 使用问题汇总

By | 2019-02-19

简单介绍 TokuDB 引擎提供很好的压缩比(笔者环境中的数据在默认的 zlib 设置下压缩比大致为 InnoDB:TokuDB ~= 5:1), 以及快速增加, 删除, 重命名列, 热更索引等特性, 这些特性很适合日志记录类的表来使用, 该类表可以仅做主从复制, 不做定期的备份. 如果需要备份可以参考 AliSQLBackup, 其基于 xtrabackup-2.3.5版本, 可以同时备份 InnoDB 和 TokuDB 引擎的表. 另外innodb_buffer_pool_size 和 tokudb_cache_size 两个参数的值需要按需分配, 如果没有多少 InnoDB 表, 最好调小 innodb_buffer_pool_size 的值. 更多基础的特性说明可以参考以前的文章: TokuDB 使用简单说明. 下述的问题列表则主要介绍在使用 TokuDB 的过程中碰到的一些问题, 后期碰到的问题也会在该列表中持续更新. 问题列表 修改分区表耗时长问题处理 转换 InnoDB 大表到 TokuDB 崩溃问题 修改 tokudb_data_dir 参数出现不能找到文件错误 temp 锁占用不能启动问题 修改分区表耗时长问题处理 详见… Read More »

使用 mmm-manager 管理云环境中的 MySQL 双主实例

By | 2019-01-28

介绍说明 在之前的工具中, mha_switch 和 mha_manager_consul 的使用都是建立在虚 ip 漂移的基础上实现的高可用方案. 不过在云环境中, 目前很多的云厂商还不支持虚 ip 漂移的功能, SLB(负载均衡)等没有类似 haproxy 的 backup 模式, 所以不适用于单 master 读写的场景. 如果使用 SLB 代理多 master, 则很难保证数据一致性问题(比如主从延迟). 一些组织在使用云环境的时候可能首要考虑数据安全性, 这种情况下可能不会考虑 RDS 之类的服务, 而是在云主机中自建 MySQL 实例, 并且最好占用整个宿主机. 如果自建实例, 就一定需要考虑高可用方案, 在不支持虚 ip 漂移的情况下, dns 服务或者绑 hosts 文件是个可选的方案, 在故障切换的时候做好对应的记录修改即可, 不过这种方式需要业务做对应调整, 在业务复杂的场景下, 需要保证修改记录的准确性和及时性. mmm-manager 则提供了另一种方案用来管理双主满足高可用的需求. 不过该方案依赖一些编程语言驱动的特性支持. 对于不支持特性的编程语言, mmm-manager 提供了更新 redis key 值,… Read More »