mysql 主从配置的详细过程

首先我们将要有两台服务器,如果没有的话,自己配置虚拟机也是可行的,这里我是自己配置了两台centos的服务器。主服务器ip为192.168.3.130,从服务器ip为192.168.3.129。

1.配置主服务器的配置项

    1)配置项在etc目录下

mysql 主从配置的详细过程

2)打开配置项,添加其中的几个配置

mysql 主从配置的详细过程

现在我来解释一下这3个配置项的意思 。

server-id是为当前数据库设置一个id,这个id都是自己取得,只要不相同就行。

lon-bin是binlog日志,binlog日志作用是用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录(对数据库的改动),binlog日志的文件名就是mysql-bin.xxxxxx了

binlog-format指的是以什么样的形式来记录下数据库的改动,

    a.row指的是每条sql语句都会记录到binlog日志中

    b.statement指的是不会将每条sql语句记录下来,但是他会记录那些数据被修改了

    c.mixed是二者兼而有之。

配置项:

#给服务器设置一个id
server-id=130
#服务器二进制文件名称mysql-bin.xxxx
log-bin=mysql-bin
#二进制文件的格式row/statement/mixed
binlog-format=mixed

2.从服务器的配置

从服务器的配置基本上和只服务器一样但是多加了一项。

mysql 主从配置的详细过程

多加的配置项其实也很好理解。就是读取主服务器上的binlog日志,来完成主从服务器上的数据一致。

配置项:#给服务器设置一个id
server-id=129
#relaylog从主服务器中的binlog读取数据,以此来完成主从服务器的数据一致
relay-log=mysql-relay
#服务器二进制文件名称mysql-bin.xxxx
log-bin=mysql-bin
#二进制文件的格式row/statement/mixed

binlog-format=mixed

3.从服务器如何读取主服务器的binlog

1).既然到了这一步,那么问题来了,从服务器是如何去读取主服务器上的binlog呢。其实很简单,给从服务器一个账号不就ok了嘛。最简单的就是grant all privileges on *.* to [email protected]'192.168.3.129' identified by '123456';

这个是最简单的,但是权限给高了后会有很多问题,不太安全。GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%' identified by '123456';这样就ok了,只让从服务器有读binlog的权限。

2)现在问题又来了,主服务器给了权限但是从服务器怎么知道他要读那台服务器的binlog呢。只需要打开从服务器的mysql命令行。

mysql 主从配置的详细过程

master_host指的是主服务器的ip,master_user是主服务器给的权限的用户名,password自然就是密码了,master_log_file指的是binlog文件的文件名,master_log_pos 指的是从binlog的哪里开始读取。

想要知道master_log_file和master_log_pos的数据很简单,只需要按如下图去做就行了。

hmysql 主从配置的详细过程

mysql 主从配置的详细过程

3)现在检查从服务器的状态和开启从服务器的slave

mysql 主从配置的详细过程

4)如果出现配置不成功的可能很可能就是防火墙是开启的

只需要关闭防火墙即可

systemctl stop firewalld.service
mysql 主从配置的详细过程


到这里配置项工作就完成了,大家就可以开始测试了,在主服务器上创建数据库、增加数据,看看从服务器上是否和主服务器上一致。