• Mysql 基于GTID的主从复制(实操)


    实现环境:
      Master 主:192.168.0.102 (Mysql 5.6.36)
      Slave  从 :192.168.0.103 (Mysql 5.6.36)

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

    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 = 102 #指定服务ID
        gtid_mode = on #开启GTID模式
        enforce_gtid_consiste = on #强制GTID一致性(开启后CREATE TABLE ……SELECT ,创建临时表的语句不能再使用了)
        log_slave_updates = on #将中继日志执行的结果写入到二进制日志中(5.7后在主库上可以不开,5.7强制开启)

    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 = 103 #指定服务ID
        relay_log = /data/mysql/relay-bin #启动中继日志
        gtid_mode = on #开启GTID模式
        enforce_gtid_consistency = on #强制GTID一致性(开启后CREATE TABLE ……SELECT ,创建临时表的语句不能再使用了)
        #log_slave_update = on #在中继日志执行后写入到二进制日志中
        #read_only = on #开启只读模式
        #master_info_repository = TABLE #建议开启,有利于数据安全
        #relay_log_info_repository = TABLE #建议开启,有利于数据安全

    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=2 --triggers --routines --all-databases > 101_full.sql

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

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

    9.初始复制链路 (在Slave上执行)
      # mysql
      mysql> change master to master_host='192.168.0.102',
        -> master_user='repl',
        -> master_password='123456',
        -> master_auto_position=1;

    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啦

  • 相关阅读:
    开启safe_mode之后对php系统函数的影响
    解析posix与perl标准的正则表达式区别
    教你在不使用框架的情况下也能写出现代化 PHP 代码
    杭州逆行崩溃小伙首度回应
    PHP命令行脚本接收传入参数的三种方式
    PHP魔术方法使用总结
    Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能
    重定向
    P2141 珠心算测验
    T2695 桶哥的问题——吃桶
  • 原文地址:https://www.cnblogs.com/chenqs/p/7352119.html
Copyright © 2020-2023  润新知