zoukankan      html  css  js  c++  java
  • Mysql 基于日志点的主从复制(实操)

    实现环境:
      Master 主:192.168.100.165 (Mysql 5.6.36)
      Slave 从 :192.168.100.156 (Mysql 5.6.36)

    步骤
    1.在主DB服务器上建立复制账号 (在Master上执行)
      # mysql
      mysql> CREATE USER 'rpl'@'192.168.100.%' identified by '123456';
      mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.100.%';

    2.主服务器配置 (在Master上执行)
      # vim /etc/my.cnf
        [mysqld]
        basedir = /usr/local/mysql
        datadir = /data/mysql
        port = 3306

        # binary logging #
        log-bin = /data/mysql/log-bin #启动二进制日志

        # replice #
        server_id = 165 #指定服务ID

    3.从服务器配置 (在Slave上执行)
      # vim /etc/my.cnf
        [mysqld]
        basedir = /usr/local/mysql
        datadir = /data/mysql
        port = 3306

        # binary logging #
        log-bin = /data/mysql/mysql-bin #启动二进制日志

        # replice #
        server-id = 156 #指定服务ID
        relay_log = /data/mysql/relay-bin #启动中继日志
        #log_slave_update = on #在中继日志执行后写入到二进制日志中
        #read_only = on #开启只读模式

    4.重启主MYSQL (在Master上执行)
      # service mysqld restart
      # #添加一些测试数据用于验证结果
      # mysql
      mysql> CREATE DATABASE CHEN;
      mysql> USE CHEN;
      mysql> CREATE TABLE T1 (ID INT);
      mysql> INSERT INTO T1 VALUES (1),(2),(3);
      mysql> q

    5.重启从MYSQL (在Slave上执行)
      # service mysqld restart

    6.备份主数据库(如果主从上的数据库版本一样,可以全备) (在Master上执行)
      # mysqldump --single-transaction --master-data --triggers --routines --all-databases >> /root/165_full.sql
      # #记录MASTER_LOG_FILE和MASTER_LOG_POS 的值;
      # more /root/165_full.sql #找到这样一句话:CHANGE MASTER TO MASTER_LOG_FILE='log-bin.000003', MASTER_LOG_POS=520;

    7.将主数据库备份传输到从数据库中 (在Master上执行)
      # scp /root/165_full.sql root@192.168.100.156:/root

    8.将主数据库的备份导入到从数据库中 (在Slave上执行)
      # mysql -uroot -p < /root/165_full.sql

    9.初始复制链路 (在Slave上执行)
      # mysql
      mysql> change master to master_host='192.168.100.165',
        -> master_user='repl',
        -> master_password='123456',
        -> MASTER_LOG_FILE='log-bin.000003' #从备份中查找
        -> MASTER_LOG_POS=520; #从备份中查找

    10.启动当检查结果
      mysql> start slave; (在Slave上执行)

      mysql> show slave status G (在Slave上执行) 进程启动
      mysql> show processlist; (在Slave上执行) 两个系统进程
      mysql> show processlist; (在Master上执行) 一个系统进行

      mysql> SELECT * FROM `chen`.t1; (在Master上执行) 查检结果是否一致
      mysql> SELECT * FROM `chen`.t1; (在Slave上执行) 查检结果是否一致

      mysql> INSERT INTO `chen`.t1 VALUES (4); (在Master上执行)

      mysql> SELECT * FROM `chen`.t1; (在Master上执行) 查检结果是否一致
      mysql> SELECT * FROM `chen`.t1; (在Slave上执行) 查检结果是否一致

    如果都没有问题,那就OK啦

  • 相关阅读:
    postman使用详解
    如何测试一个水杯
    selenium3(java)之屏幕截图操作
    C语言随机点名程序
    关于测试执行的一些总结与思考
    小议SQL数据插入
    BS架构和CS架构的区别
    Oracle伪列(ROWNUM)的使用
    Loadrunner学习资料
    【Apache运维基础(2)】主配置文件说明
  • 原文地址:https://www.cnblogs.com/chenqs/p/7352113.html
Copyright © 2011-2022 走看看