zoukankan      html  css  js  c++  java
  • mysql5.7 主从复制

    安装linux  centos 7

    安装完毕后,修改网卡地址,关闭防火墙,关闭selinux

    网卡:

    vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

     改为静态ip获取,关键的是,这5行。

    #BOOTPROTO=dhcp

    BOOTPROTO=static
    IPADDR=172.16.0.231
    NETMASK=255.255.255.0
    GATEWAY=172.16.0.1
    DNS1=114.114.114.114


    UUID=9a7ae773-bfe9-48b0-862b-f34ab7777e00
    DEVICE=enp0s3
    ONBOOT=yes

    关闭防火墙

     systemctl disable firewalld

    systemctl stop firewalld

    关闭selinux

    vim  /etc/selinux/config ,

    将SELINUX=enforcing改为disabled。

    安装mysql5.7

    安装rpm -ivh mysql57-community-release-el7.rpm,更新repo的源,

    安装 yum install mysql-server

    安装完毕后,启动systemctl start mysqld

    第一次进去改密码:

     cat /var/log/mysqld.log | grep password

    mysql -uroot -p 回车后,输入密码,好像第一次在p后直接加密码,登录不了。

    //进去后,修改密码强度策略,此策略修改不保存,下次启动后,还会复原。

    set global validate_password_policy  = 0;   

    // 改密码

    alter user root@localhost identified by 'xxxxxxxxx';

    //授予远程权限

     GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "xxxxxx";

    flush privileges;


    按以上步骤,建立两台这样的服务器

    分别命名为M1,和M1S1,

    M1

    在M1,上,

    修改 vim /etc/my.cnf

    在mysqld节点,加入:

    [mysqld]

    server-id=1

    log-bin=master.bin

    重启mysql

    systemctl restart mysqld

    进入控制台:

    mysql -uroot -p

     

    建立用户rep,密码abc123456

    需要修改密码强度策略

    create user 'rep'@'%' identified by 'abc123456';

    赋予权限

    grant replication slave on *.* to 'rep'@'%';

    刷新权限

    flush privileges;

    可以用本地的sqlyog测试是否rep登录,测试时,可以ssh隧道,ip地址填写localhost

     

    登录后,查看master的状态值

    show master status;

    查看到File 和 pos信息,记下来,后续备用,

    这样,基本搞成主服务器

    :半同步复制

    show variables like "%have_dynamic_loading%";

    show plugins ; 查看插件

    安装主服务器master 插件

    install plugin rpl_semi_sync_master soname 'semisync_master.so';

    临时开启

    set persist rpl_semi_sync_master_enabled=on;

    修改my.cnf 永久开启,在mysqld节点

    rpl_semi_sync_master_enabled=ON
    rpl_semi_sync_master_timeout=10000
    rpl_semi_sync_master_trace_level=32
    rpl_semi_sync_master_wait_for_slave_count=1
    rpl_semi_sync_master_wait_no_slave=ON
    rpl_semi_sync_master_wait_point=AFTER_SYNC
    rpl_stop_slave_timeout=31536000


    M1S1

    修改my.cnf

    在【mysqld】节点:

    加入 server-id=2

    然后登录

    进去后,执行

    change master to master_host="172.16.0.230",master_port=3306,master_user="rep",master_password="abc123456",master_log_file="master.000001",master_log_pos=154 ;

    这里 master_log_file ,为上文中 提到的show master status中的 file,pos为上文提到的pos。

     

    start slave;

     

    show slave status G;

    查看

     

     两个yes,即为正常。

    :安装半同步插件 

    install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

    临时开启

    set persist rpl_semi_sync_slave_enabled=on;

    永久开启,修改my.cnf文件

    rpl_semi_sync_slave_enabled=ON

    rpl_semi_sync_slave_trace_level=32


     create database zhouyi2;

    mysql > use zhouyi2;
    mysql > source 
    ootzy0101.sql

    若不正常

    stop slave;

    然后找原因,

    第一个YEs,往往是,配置通信的故障,

    第二yes是,数据库sql同步的故障。

  • 相关阅读:
    有用网站
    html5页面布局总结
    video和audio支持格式
    关于浏览器缓冲
    java常见面试题汇总
    jvm常用相关参数
    规律字符串拼接
    线程基础知识
    Kafka学习
    Redis学习
  • 原文地址:https://www.cnblogs.com/sdgtxuyong/p/14676682.html
Copyright © 2011-2022 走看看