zoukankan      html  css  js  c++  java
  • Mysql5.7基于日志主从复制

    主从同步概念

    主从同步是异步复制


    Mysql两种复制类型:

    基于二进制日志

    使用GTID完成基于事务的复制

    基于日志三种方式:


    Mysql5.7需要注意的问题:

    老版本方法创建mysql用户
    #mysql5.7之前版本,新建并赋权限
    grant replication slave on *.* to 'dba'@'192.168.25.%' identified by '123456';

    查看警告

    show warnings;之后发现这个创建用户的方法已经被抛弃,将来版本可能被移除

    删除mysql用户

    drop user 'dba'@'192.168.25.%';

    查看mysql中的用户

    select user,host from mysql.user;

    新建用户

    在master服务器上新建用户,登录mysql后执行以下语句

    create user 'dba'@'192.168.25.%' identified by '123456'#新建用户,允许登录的ip地址段:192.168.25.% 用户名:dba 密码:123456
    grant replication slave on *.* to dba@'192.168.25.%';    #赋权限

    备份Master数据

    首先vi /etc/my.cnf添加如下两行

    log-bin=mysql-bin
    server-id=4

    cd /tmp    #备份到tmp文件夹下
    #备份到文件all.sql
    mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases -uroot -p -h 192.168.25.4 > all.sql

    将备份的all.sql复制到从服务器上

    scp all.sql [root@]192.168.25.5: mp[all.sql]

    Slaver数据库备份数据还原

    mysql -uroot -p -h 192.168.25.5 < all.sql

    主从配置

    more all.sql

    登录后执行以下语句

     change master to master_host='192.168.25.4',    #主服务器ip
     master_user='dba',      #主服务器建的主从复制mysql用户
     master_password='123456',     #主从复制用户名密码
     master_log_file='mysql-bin.000005',    #mysqldump的备份文件中有
     master_log_pos=129058;     #mysqldump的备份文件中有

     

    这就完成了主从复制的配置,查看主从配置

    show slave status G;

    发现Slave_IO_Running和Slave_SQL_Running进程都没有启动,启动进程

    start slave;

     

     如果某个进程启动失败,查看Last_IO_Error会有提示(例如:防火墙开了连接不上,虚拟机克隆mysql的pid一样需要重新initialize等)

    主从同步属性

    配置好主从同步后会多一个数据库performance_schema

    一下表为主要从数据库配置表

    连接从数据库,查看从服务器replication_applier_configuration表配置

    select * from replication_applier_configuration;

     改变同步延迟

    stop slave;

    change master to master_delay=3600;

    start slave;

    查看主从同步延迟,为3600秒

    查看配置表   select * from replication_applier_configuration;

    查看slave状态   show slave status /G;

    配置好后查看状态

    select * from replication_applier_status;

    连接mycat插入操作,会发现主数据库有,从数据库并没有,再次查看表replication_applier_status

    多线程复制replication_applier_status_by_coordinator,因为不存在多线程,所以无数据。

     查看正在工作的线程,这里只有一条。

    查看进程列表

     查看连接配置表(即一开始配置的change master属性)

    select * from replication_connection_configuration G;

    查看连接状态

     select * from replication_connection_status G;

  • 相关阅读:
    如何学习go源码
    最近打仁王2
    如何在时间复杂度为O(n)空间复杂度为O(1)的情况下完成链表的逆置
    漏洞复现-shellshock-bash破壳
    漏洞复现-aria2-任意文件写入
    漏洞复现-apereo-cas-4.1-rce
    漏洞复现-cgi-httpoxy
    漏洞复现-weblogic_weak_password-getshell
    sqlserver2008安装教程
    mysql内一些可以延时注入的查询语句
  • 原文地址:https://www.cnblogs.com/aeolian/p/9077362.html
Copyright © 2011-2022 走看看