Centos7配置Mysql8主从复制同步数据
1.首先需要在三台不同主机安装好mysql8,
参考:https://www.cnblogs.com/haoxuanchen2014/p/17351034.html
主库ip: 192.168.2.66
从库1ip: 192.168.2.67
从库2ip: 192.168.2.68
主库的数据表结构应该与从库的数据表结构字段完全一直;
2. 配置主库
第一步:添加配置文件 /etc/my.cnf
加多下面两句代码如下(示例):
[mysqld]
server-id=101 #[必须]服务器唯一ID
创建一个用户slave,密码为123456,并且给slave用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制;
// mysql8授权用户需要先创建,创建和授权同一条语句的话会报错
> create user slave@'%' identified by '123456';
//再授权
> GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%'WITH GRANT OPTION;
//刷新
> flush privileges;
第四步:登录Mysql数据库,执行下面SQL,记录下结果中File和Position的值
> show master status;
3. 配置从库
//这是从库和主库连接的关键一步,host是主库的ip,user是前面创建的slave用户,file和pos是主库show master status的信息
change master to
master_host='192.168.2.66',master_user='slave',master_password='123456',
master_log_file='mysql-bin.000004',master_log_pos=1145;
//执行后启动slave
start slave;
登录Mysql数据库,执行下面SQL,查看从数据库的状态;
> show slave status\G; 这样就竖着输出
两个yes则表示成功配置主从复制,Connection和No都是配置有问题;
// 查看配置不同从库的server_id;
> show variables like 'server_id';
> set global server_id=102;
// 开启防火墙
# 配置防火墙
systemctl start firewalld; #启动
systemctl stop firewalld; #停止
systemctl status firewalld; #查看状态
systemctl disable firewalld; #开机禁用
systemctl enable firewalld; #开启启动
#开放80/tcp端口 (--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload; #
firewall-cmd --zone=public --query-port=80/tcp; #查看80/tcp端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent; #删除该端口开放
firewall-cmd --zone=public --query-port=3306/tcp;