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同步的故障。

原文地址:https://www.cnblogs.com/sdgtxuyong/p/14676682.html