设为首页 收藏本站
查看: 633|回复: 0

[经验分享] How To Control Mysql Replication

[复制链接]

尚未签到

发表于 2016-9-12 11:38:29 | 显示全部楼层 |阅读模式
How To Control Mysql Replication ZT
1. Environment
  
  In 192.168.1.202

  Database: RMC_BILLING
  DB Account: root
  DB Password:


  In 192.168.1.204
  Database: RMC_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
  promotion_plan
  roles
  service_settings
  credit_cards
  currency_exchange
  country
  conference_plan

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=RMC_BILLING
        replicate-do-table=RMC_BILLING.users
        replicate-do-table=RMC_BILLING.plan
        replicate-do-table=RMC_BILLING.profile
        replicate-do-table=RMC_BILLING.promotion_plan
        replicate-do-table=RMC_BILLING.roles
        replicate-do-table=RMC_BILLING.service_settings
        replicate-do-table=RMC_BILLING.credit_cards
        replicate-do-table=RMC_BILLING.currency_exchange
        replicate-do-table=RMC_BILLING.country
        replicate-do-table=RMC_BILLING.conference_plan
        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();
        }
    }

}


OK, That's all you need to do.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-271248-1-1.html 上篇帖子: mysql字符乱码解决办法 下篇帖子: 使用DOS编辑MySQL
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表