mysql8.0配置远程连接和主从复制

1.什么是mysql的主从复制?

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

2.为什么需要主从复制?

1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。

2、做数据的热备

3、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。

3.mysql复制原理

原理:

​ (1)master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中;

​ (2)slave服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件

​ (3)同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

也就是说:

从库会生成两个线程,一个I/O线程,一个SQL线程;
I/O线程会去请求主库的binlog,并将得到的binlog写到本地的relay-log(中继日志)文件中;
主库会生成一个log dump线程,用来给从库I/O线程传binlog;
SQL线程,会读取relay log文件中的日志,并解析成sql语句逐一执行;

在这里插入图片描述

4.下面我们实际操作一下mysql的主从分离

配置mysql的远程连接:

在这里插入图片描述

新安装的mysql不支持远程连接 报错如上 要先进行以下操作进行配置

1.在安装Mysql数据库的主机上登录root用户

在这里插入图片描述
2.依次执行如下命令:

use mysql;   
select host from user where user='root';

可以看到当前主机配置信息为localhost.

在这里插入图片描述

3.将Host设置为通配符%

Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。 user=root Host=localhost,表示只能通过本机客户端去访问。而%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果Host=%,表示所有IP都有连接权限。

注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产环境的IP进行设置;

update user set host = '%' where user ='root';

在这里插入图片描述

此时我们再次执行 select host from user where user=‘root’; 会发现我们的 host 已设置成为 %
在这里插入图片描述

4.Host修改完成后记得执行flush privileges使配置立即生效

flush privileges;

此时我们已经成功远程连接mysql了 下面我们一起来配置一下主从分离

主从分离:

#操作系统:
centos7
#mysql版本:
8.0
#两台虚拟机:
192.168.199.130(主)
192.168.199.131(从)

1、 首先我们要先配置主服务器

(1)vi /etc/my.cnf(编辑服务器上的mysql配置文件,一般都存储在这儿,如果没有可以根据自己的配置文件)

#在 [mysqld] 模块中添加如下配置信息 
log-bin=master-bin #二进制文件名称 
binlog-format=ROW  #二进制日志格式,有row、statement、mixed三种方式
server-id=1		   #要求各个服务器的id必须不一样 
binlog-do-db=xxx   #同步的数据库名称

binlog-format的参数说明:
row:把改变的内容复制过去,而不是把命令在从服务器上执行一遍。
statement:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。
mixed:默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
(MySQL默认采用基于语句的复制,效率比较高。)

在这里插入图片描述

(2)#重启mysql服务

service mysqld restart

(3)配置从服务器登录主服务器的账号授权

	首先登陆主服务器的mysql
	mysql -u 账号 -p 密码

在这里插入图片描述

  • 创建用户:
create user '账号'@'从服务器IP' identified by '密码';

在这里插入图片描述

  • 赋予连接权限:
GRANT REPLICATION SLAVE ON *.* TO '账号'@'从服务器IP';:这里的账号和创建用户的账号是一致的

在这里插入图片描述

  • 刷新权限:
flush privileges;

刷新之后我们执行

show master status;

在这里插入图片描述
会发现我们在主服务器配置的信息已经生效,此时我们需要把 file 以及的 position这两个参数记录下来,下面要用到

2.我们再来配置从服务器

(1)vi /etc/my.cnf 同配置主服务器一样的操作(编辑服务器上的mysql配置文件,一般都存储在这儿,如果没有可以根据自己的配置文件)

#在 [mysqld] 模块中添加如下配置信息 
log-bin=master-bin	#二进制文件的名称
binlog-format=ROW	#二进制文件的格式
server-id=2			#服务器的id 每个服务器不能一样

(2)重启mysql服务

service mysqld restart

(3)从服务器建立连接(使用主服务器创建的repl用户及密码):

建立连接之前我们要先知道主服务器的 master 的配置信息 

登录主服务器的mysql 执行 show master status; 上面有写到
在这里插入图片描述
切换到从服务器进行以下操作

建立连接:

change master to master_host='主服务IP',
master_port=3306,
master_user='用户名',
master_password='密码',
master_log_file='master-bin.000005',
master_log_pos=0;

在这里插入图片描述

启动slave:

start slave

在这里插入图片描述

查看slave的状态

show slave status\G(注意没有分号)

在这里插入图片描述

到这里,我们的主从分离已全部配置完成,下面我们就可以愉快的进行开发测试了!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值