Centos7下mysql8.0读写分离的配置

1.前言

1.关于读写分离的原理,这里不做太多赘述。主要从服务器去读取主服务的binlog日志,完成数据同步的过程。

这里我在mac开启了2个虚拟机,ip分别为192.168.31.109 ,192.168.31.208系统为centos

2.配置主从分离之前,需要安装mysql,并关闭防火墙,用mysql客户端连接测试是否可以连接成功。

2.配置

1.进入主服务器/etc 文件夹,编辑my.cnf文件

[mysqld]

## 设置server_id,同一局域网中需要唯一

server_id=101 

## 指定不需要同步的数据库名称

binlog-ignore-db=mysql  

## 开启二进制日志功能

log-bin=mall-mysql-bin  

## 设置二进制日志使用内存大小(事务)

binlog_cache_size=1M  

## 设置使用的二进制日志格式(mixed,statement,row)

binlog_format=mixed  

## 二进制日志过期清理时间。默认值为0,表示不自动清理。

expire_logs_days=7  

## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。

## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致

slave_skip_errors=1062

2.重启主服务器

systemctl restart mysqld

3.进入mysql命令行,添加同步数据的用户,并授权

mysql -uroot -p;
create user 'slave'@'%' IDENTIFIED BY 'Dcdell88@';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

由于mysql8.0密码的加密插件有改变,如果在从服务器出现4 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection的错误的时候,请按照下面的命令添加用户,并且需要重新开启同步。

ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'Dcdell88@';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

4.进入从服务器,编辑my.cnf文件,配置文件如下

[mysqld]

## 设置server_id,同一局域网中需要唯一

server_id=102

## 指定不需要同步的数据库名称

binlog-ignore-db=mysql  

## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用

log-bin=mall-mysql-slave1-bin  

## 设置二进制日志使用内存大小(事务)

binlog_cache_size=1M  

## 设置使用的二进制日志格式(mixed,statement,row)

binlog_format=mixed  

## 二进制日志过期清理时间。默认值为0,表示不自动清理。

expire_logs_days=7  

## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。

## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致

slave_skip_errors=1062  

## relay_log配置中继日志

relay_log=mall-mysql-relay-bin  

## log_slave_updates表示slave将复制事件写进自己的二进制日志

log_slave_updates=1  

## slave设置为只读(具有super权限的用户除外)

5.重启从服务器

systemctl restart mysqld

6.查看主服务的状态

show master status;

 这里需要记录,fileGtid_set 和Position这两个字段,后面配置从服务器需要用到。

7.进入从服务器,配置主从服务信息 相关的字段解释如下,操作在mysql命令行下进行的。

master_host:主数据库的IP地址;

master_port:主数据库的运行端口;

master_user:在主数据库创建的用于同步数据的用户账号;

master_password:在主数据库创建的用于同步数据的用户密码;

master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;

master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;

master_connect_retry:连接失败重试的时间间隔,单位为秒。

change master to master_host='192.168.31.109', master_user = 'slave', master_password='Dcdell88@', master_port=3306 , master_log_file='mall-mysql-bin.000001',master_log_pos=1219, master_connect_retry=30;

8.在从服务器开启主从同步

start slave;

9.查看从服务器的主从同步的状态

Show slave status \G;

 如果出现图中所示的Slave_IO_Running: Connecting 需要重新到主服务添加用户,并且,重新配置主从服务。添加用户可以看第三部后面的指令进行。

然后我们主服务器,创建表,添加数据,就可以看到从数据库会进行自动同步。

我的博客,如果有帮到您的话,请点赞并关注吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值