zoukankan      html  css  js  c++  java
  • 搭建gtid主从复制

    gtid_mode = on
    enforce-gtid-consistency = on
    skip_name_resolve # 去掉域名解析
    二进制日志必须开启,且格式为ROW
    server-id必须配置成不同的
    ####################################################################################
    
    
    # 假设M机器上的mysql实例A ---->> S机器上的mysql实例B,其中M机器的ip为ip1,机器S上的ip为ip2
    # 如果在M机器上对mysql实例A进行备份数据,那么就在A机器上创建一个临时的用户来导出数据:
    grant all privileges  on *.* to 'tmp'@'ip2' identified by 'dtmp' with grant option;
    # 备份原主库或原主库的任意一个从库数据,一是普通数据,二是权限数据
    备份普通数据:
    mysql -hXXX -P3306 -utmp -ptmp -e 'show databases;' | grep -Ev 'Database|information_schema|mysql|performance_schema|sys' | xargs mysqldump -utmp -ptmp -hXXX -P3306   --single-transaction --master-data=2  --databases > data_backup.sql
    备份权限数据:
    pt-show-grants -utmp -ptmp  -hXXX -P3306  >grant_backup.sql
    然后先记录下data_backup.sql文件中类似SET @@GLOBAL.GTID_PURGED='6aadd490-f0b7-11e9-bd17-246e96923e78:1,772c2f87-f0bf-11e9-87a6-246e9698b380:1-44400'这样的数据,然后用“--”将其注释掉;
    # 备份B上的data目录
    关闭S机器上的mysql实例
    cp -r data data_of_install
    修改配置文件
    启动B上的mysql实例
    # 在B实例上创建一个导入数据的用户
    grant all privileges  on *.* to 'tmp'@'127.0.0.1' identified by 'dtmp' with grant option;
    #
    
    # 在S机器上的备份文件所在目录下(方便导入数据)登录B实例
    mysql -h127.0.0.1 -P3306 -utmp -ptmp
    # 在S机器上登录B实例后就可以导入数据了
    source ./data_backup.sql
    source ./grant_backup.sql
    # 然后在B实例上依次执行如下语句即可
    ###########################################################################
    stop slave;
    
    reset slave;
    
    reset master;
    
    SET @@GLOBAL.GTID_PURGED='6aadd490-f0b7-11e9-bd17-246e96923e78:1,772c2f87-f0bf-11e9-87a6-246e9698b380:1-44400'; # 该内容需要根据自己的备份文件中获得
    
    #############
    change master to master_host='10.10.10.10',master_port=3306,master_user='mysqlsync',master_password='123456',master_auto_position=1;
    CHANGE MASTER
    TO MASTER_HOST='主库ip', MASTER_PORT=主库端口, MASTER_USER='主库上的复制用户', MASTER_PASSWORD='主库上的复制用户的密码', MASTER_AUTO_POSITION=1; # 加快复制而设置下面这两个变量
    set global sync_binlog=0;
    set global innodb_flush_log_at_trx_commit=20000;
    # 设置从库只能读,不能写
    set global read_only=1;

  • 相关阅读:
    一个由“ YYYYMMdd ”引发的惨案 !元旦来临前的警惕
    elasticJob 自定义任务参数
    java 生成GUID
    java ArrayList和LinkedList的区别
    Linux下配置python Jupyter远程访问
    《Go并发编程实战》系列二:多线程编程
    《Go并发编程实战》系列一:多进程编程
    《Go并发编程实战》学习基础
    归并排序递归方式和非递归(Java)
    滕讯一面总结
  • 原文地址:https://www.cnblogs.com/igoodful/p/11884877.html
Copyright © 2011-2022 走看看