Kindrage's blog

本性善良, 勇气满满

  1. 配置cassandra.ymal

    设置cluster_nameseed_provider跟需要加入的集群相同

  2. 启动cassandra

    注意: 如果节点是原来就存在数据的节点(例如:用decommissionremovenode 从集群移除的节点), 则需要删除原来的所以数据和commitLog,再启动

本文介绍从cassandara 集群删除节点步骤

查看节点状态

移除节点前, 首先需要查看节点状态

1
nodetool status

根据节点状态移除节点

  • 如果节点在线 , 则使用nodetool decommission 命令使节点退役, decommission 过程中可以使用nodetool <options> netstats -H 查看进度。 decommission 会重新分配vnode, 并把本节点的数据发送到其它节点。

    注意: decommission 不会关闭节点, 所以需要在decommission 完成后手动关闭

  • 如果节点已经离线, 则使用 nodetool removenode {hostId} 直接删除节点。 removenode操作也会重新分配vnode,数据是从其它节点复制

    如果removenode 操作失败,需要使用nodetool [options] assassinate <ip_address> 强制杀死节点

emoji表情的存储问题

随着emoji表情使用越来越广泛,在mysql数据库在存储emoji表情的需求就越来越常见。mysql utf8 字符集只能存储三个字节,实际上并不是真正的UTF-8,不能存储emoji表情。所以如果mysql数据库和表的字符集都使用的utf8,在存emoji表情的时候就会出错:

1
2
3
4
5
6
7
8
9
10
11
12
Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8D\x93\xE4\xBA...' for column 'title' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3933)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2675)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1912)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2133)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2067)
at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5175)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2052)

解决办法

为了支持emoji,mysql推出了utf8mb4字符集 , 那么如何在现有字符集为utf8的数据库上使用utf8mb4呢?

阅读全文 »

java程序调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
用法:    
java [-options] class [args...]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
其中options包括:
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
-server 选择 server VM
默认 VM 是 server,
因为您是在服务器类计算机上运行。
...
"-D<名称>=<值> 设置系统属性"
...

这里重点关注jvm参数, 也就是-D这个, 其他选项就省略了.
-D开头的选项会被作为系统属性值,可以使用
System.getProperty("name") 获取.

阅读全文 »
0%