`
dengyin2000
  • 浏览: 1219568 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Set up mysql replication and control slave thread

阅读更多

1. Environment

  
  In 192.168.1.202

  Database: BILLING
  DB Account: root
  DB Password:


  In 192.168.1.204
  Database: BILLING
  DB Account: root
  DB Password:

  We need to replicate the following tables from 192.168.1.204 to 192.168.1.202.
  users
  plan
  profile

2. Steps


  Because we need replicate the data from 204 to 202, So, Mysql server in 204 is master, and the 202 is slave.
 
  a. Ssh to 204, Open /etc/mysql/my.cnf mysql configuration file. Make sure the following two lines is uncommented.

           server-id               = 1
           log_bin                 = /var/log/mysql/mysql-bin.log

  b. Ssh to 202, Open /etc/mysql/my.cnf mysql configuration file. Make sure it has following lines.

        server-id=2
        log-slave-updates
        read-only=1
        replicate-do-db=BILLING
        replicate-do-table=BILLING.users
        replicate-do-table=BILLING.plan
        replicate-do-table=BILLING.profile
        relay-log-purge=1

  c. Connect to master mysql server, Create a mysql user for replication.
 
        mysql> grant replication slave on *.* to 'rep'@'%' identified by 'rep';

  d. Lock the tables on master mysql server, So we can dump the master server's data and import to slave server. Make master and slave has the same data.
 
        mysql> flush tables with read lock;

  e. Show master status, and record the data.

        mysql> show master status;
        +------------------+----------+--------------+------------------+
        | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
        +------------------+----------+--------------+------------------+
        | mysql-bin.000002 |      228 |              |                  |
        +------------------+----------+--------------+------------------+
        1 row in set (0.00 sec)
 
  f. Connect to slave server and run the following commands. Notice, the data of MASTER_LOG_FILE and MASTER_LOG_POS come from step 6.

        mysql> CHANGE MASTER TO
            -> MASTER_HOST='192.168.1.204',
            -> MASTER_USER='rep',
            -> MASTER_PASSWORD='rep',
            -> MASTER_LOG_FILE='mysql-bin.000002',
            -> MASTER_LOG_POS=228;
        Query OK, 0 rows affected (0.01 sec)   

  g. Start the slave thread.

        mysql> start slave;

  h. OK, the replication is completed, Don't forget to unlock the master's tables.

        mysql> unlock tables;



3. Start/Stop slave thread by Java code.

We can start/stop the slave thread by java code(actually by JDBC). First create a user with all privileges.

mysql> GRANT ALL PRIVILEGES ON *.* TO slave@"%"  IDENTIFIED BY 'slave';

OK, Now, We have a user which use to start/stop slave thread. The following code is how to start/stop slave thread.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;


public class Slave {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String connString = "jdbc:mysql://192.168.1.202:3306/RMC_BILLING";
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            Connection connection = DriverManager.getConnection(connString, "slave", "slave");
            PreparedStatement ps = connection.prepareStatement("start slave");
            //The next line is used to stop the slave.
            //PreparedStatement ps = connection.prepareStatement("stop slave");
            int executeUpdate = ps.executeUpdate();
            System.out.println(executeUpdate);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}


在项目中有这样的需求, 就是想控制定期的slave thread。 在网上找到了http://forums.mysql.com/read.php?26,43705,43705#msg-43705  上面有两种方式。 不过都比较复杂。 后面不知道怎么就突然想到了 是不是可以用jdbc去做。 然后马上写了个Main跑了一下, 果然可以。

 

参考: http://www.ningoo.net/html/2007/mysql_replication_configuration.html

分享到:
评论
2 楼 dengyin2000 2008-03-14  
bluemeteor 写道
如果有DBA,写个shell更好些

这里面是有介绍用shell配合corn来做。  但是现在项目需要在代码中控制。
1 楼 bluemeteor 2008-03-14  
如果有DBA,写个shell更好些

相关推荐

    mysql replication搭建.docx

    MySQL Replication 是一种数据复制机制,它允许将一个MySQL服务器(主服务器或Master)的数据异步复制到一个或多个其他MySQL服务器(从服务器或Slave)。这种机制主要用于实现数据库负载均衡、提高读取性能以及备份...

    完整精品数据库课件 MySQL从入门到精通 第18章 MySQL Replication(共27页).ppt

    MySQL Replication是MySQL数据库系统中的一个重要特性,它允许数据从一个主服务器(master)自动同步到一个或多个从服务器(slaves)。这种技术主要用于数据备份、负载均衡和高可用性设置,确保即使在主服务器出现...

    MySql Replication Tutorial

    MySql Replication Tutorial,关于MySql Replication 的 PPT

    MySQL Replication一主多从环境搭建.docx

    MySQL Replication是一种数据库复制技术,允许数据从一个MySQL服务器(主服务器)实时同步到其他一个或多个MySQL服务器(从服务器)。这种技术对于实现高可用性、负载均衡和数据备份至关重要。以下是对一主多从环境...

    MySQL Group Replication 详细搭建部署过程

    MySQL Group Replication 详细搭建部署过程 MySQL Group Replication 是一种基于组的复制技术,用于容错系统中。它由多个服务器(节点)组成,每个节点都可以独立执行事务,而读写事务则会在于 group 内的其他节点...

    利用JDBC和MySQL Replication实现数据库集群

    针对这一情况,提出在现有硬件的基础上利用JDBC规范与MySQL Replication实现数据库集群从而解决数据访问瓶颈。其主要方法是在进行JDBC连接之前实现负载均衡,所有SQL请求由负载均衡器进行统一调度。在数据库端利用...

    深入理解MySQL Group Replication.pdf

    深入理解MySQL Group Replication MySQL Group Replication是一种高可用性和高性能的解决方案,旨在提供数据库的高可用性和高性能。它是MySQL数据库的一部分,旨在提供高可用性和高性能的解决方案。 背景: 数据库...

    MySQL Replication Tips and Tricks

    - `SET SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;` #### 四、分析二进制日志 文档还提供了如何使用`mysqlbinlog --hexdump`命令来解析二进制日志文件的例子。例如: 1. **查询事件头**: - `#06042020:16:02 ...

    mysql-replication配置文档

    MySQL复制(replication)是一种将数据从一个MySQL服务器(主服务器)实时同步到另一个或多个服务器(从服务器)的技术,这种技术有助于实现高可用性、负载均衡和数据备份。在MySQL中,复制主要分为单向异步复制和...

    mysql replication修改库名及复制单个表

    在深入探讨如何通过MySQL Replication实现库名修改与单个表的复制之前,我们先来了解MySQL Replication的基本概念及其工作原理。MySQL Replication是一种数据复制机制,它允许从一台服务器(主服务器)向另一台或多...

    第18章 MySQL Replication PPT

    MySQL复制(Replication)是MySQL数据库系统中一种强大的功能,它允许数据从一个服务器(主服务器)异步地复制到一个或多个其他服务器(从服务器)。这种架构为高可用性、负载均衡和数据备份提供了基础。 在MySQL ...

    mysql-replication mysql数据库主从复制步骤

    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; ``` #### 5. 获取主服务器的二进制日志位置和偏移量 - 使用以下命令获取二进制日志的位置和偏移量: ```sql SHOW MASTER STATUS; ``` ###...

    MySQL 5.7 Replication 相关新功能说明

    MySQL 5.7版本在复制(Replication)方面引入了多项新特性,这些特性极大地提升了数据库复制的性能、稳定性和可管理性。以下是对这些新功能的详细说明: 1. **GTID(Global Transaction Identifier)全局事务标识符...

    MySQL-Master_Slave_repl.txt

    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs This error generally occur when we clone the master to slaver. Delete auto.cnf of mysql, and then ...

    Ubuntu上MySQL的Replication配置

    胖子摸索出来的,Ubuntu上MySQL的Replication配置,的简单记录步骤

    mysql replication 配置(主从复制读写分离)

    mysql> grant replication slave on *.* to 'slave'@'192.168.0.7' identified by '123456'; mysql> flush privileges; // 生效 ``` 2. **MySQL配置文件调整** - 在`/etc/my.cnf`中添加或修改以下配置项: ```...

    搭建MySQL的MasterSlave架构

    MySQL的Master-Slave架构是一种常见的数据库高可用性和负载均衡解决方案。它允许数据从一个主服务器(Master)实时同步到一个或多个从服务器(Slave)。在这种架构中,所有的写操作都在主服务器上执行,而从服务器则...

Global site tag (gtag.js) - Google Analytics