使用java脚本向Pxc集群写入数据
批量写入pxc集群程序
导入mysql驱动包
# 批量插入数据的java脚本
package pxc_demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import com.mysql.jdbc.Driver; public class Test { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub DriverManager.registerDriver(new Driver()); String url="jdbc:mysql://10.11.0.210:3306/chinasoft"; String username="root"; String password="root"; Connection con = DriverManager.getConnection(url, username, password); String sql = "INSERT INTO students(name) values(?)"; PreparedStatement pst = con.prepareStatement(sql); while(true) { for(int i=1;i<=10;i++) { pst.setString(1, "Test"); pst.execute(); } Thread.sleep(1000); } } }
在死循环插入数据的时候查询集群的状态,可以看到集群能够很迅速的处理请求,改变批量插入的大小为100,也能正常处理
流量控制
流量控制的相关信息
向pxc集群中添加一个空的新节点,就需要全量同步数据到新节点,如果数据库很大,同步队列会触发流量控制,整个个集群就不可用直到集群同步完成
业务就会中断,正确的做法应该是拷贝数据到新节点
如何避免流控,提升硬件性能,网络带宽,网卡性能
增加线程数
Non_primary脑裂:比如pxc集群部署在a和b两个机房,如果中间线路被挖断, a机房写入数据,查询的时候分配到了b机房,就会出现数据不一致
Pxc为了避免这种情况发生,一个机房当数量少于半数会自动宕机,超过半数就会组成新的集群,机房不要部署相同数量的节点