上篇简单介绍了如何在Windows环境下建立配置MySQL集群,这里用一个实现注册功能的小Demo通过jdbc的方式连接到MySQL集群中。
外部程序想要远程连接到mysql集群,还需要做的一个操作就是设置sql节点的mysql可以被远程连接。
具体操作为:
mysql> grant all privileges on MySQL_Cluster_Test.* to root@'%' identified by '';
mysql> flush privileges;
表示将MySQL_Cluster_Test这个数据库中所有的表授权给所有机器,登录名为root,密码为空。如果只指定某台机器可以连接此数据节点,那把“%”换成相应IP即可。
UserDAO代码:
public class UserDAO{
/**
* 添加用户
* @param name 用户名
* @param age 用户年龄
* @return
*/
public boolean AddUser(String name,int age){
boolean result=false;//返回值默认为false
Connection conn=null;//创建数据库连接对象Connection
PreparedStatement pstmt=null;//创建预处理对象PreparedStatement
try {
//注册驱动
Class.forName(com.mysql.jdbc.Driver);
//建立连接
conn=DriverManager.getConnection(jdbc:mysql://192.168.25.48:3306/MySQL_Cluster_Test,root,);
}catch (Exception e){
e.printStackTrace();
}
try{
String sql=insert into T_User (Name,Age) values(?,?);
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setInt(2, age);
int count=pstmt.executeUpdate(); //更新数据库并返回受影响行数
if(count>0){
result=true;
}
}catch(Exception e){
e.printStackTrace();
}
return result;
}
/**
* 查询所有用户
* @return List
*/
public List QueryAllUsers(){
List userList=new ArrayList();
Connection conn=null;
Statement stmt=null;
try {
//注册驱动
Class.forName(com.mysql.jdbc.Driver);
//建立连接
conn=DriverManager.getConnection(jdbc:mysql://192.168.25.48:3306/MySQL_Cluster_Test,root,);
}catch (Exception e){
e.printStackTrace();
}
try {
String sql = select * from T_User;
stmt=conn.createStatement();
ResultSet rs =stmt.executeQuery(sql);
while(rs.next()){
User tmpUser=new User();
tmpUser.setName(rs.getString(Name));
tmpUser.setAge(rs.getInt(Age));
userList.add(tmpUser);
}
} catch (SQLException e) {
e.printStackTrace();
}
return userList;
}
}
如果前面的MySQL集群配置好的话,就可以实现多个服务器上发布的外部程序都可以共享、操作整个集群中的数据。但此时的MySQL集群还无法实现负载均衡和读写分离的效果,只起到了数据备份的作用。后面将继续研究如何实现MySQL集群的负载均衡和读写分离。