linux系统中mysql主从复制搭建步骤

  • 原理
  • linux系统中mysql主从复制搭建步骤_第1张图片

 

mysql主从配置的流程大体如图:

1master会将变动记录到二进制日志里面;

2master有一个I/O线程将二进制日志发送到slave;

3) slave有一个I/O线程把master发送的二进制写入到relay日志里面;

4slave有一个SQL线程,按照relay日志处理slave的数据;

  • 操作步骤

按照原理,我们开启mysql主从复制,我们大体需要做以下操作:

1)开启master的二进制日志

2)开启slave的二进制日志

3)将slave指向master

4)开始复制

  • 开启master二进制日志

1)编辑mysql的配置文件,使用命令:

vi /etc/my.cnf

2)添加二进制日志配置,开启二进制(mysql-bin只是日志文件名称,可以自己指定)

log-bin=mysql-bin
server-id=1

注意:server-id是要指定的,不然会报错,每一台指定一个唯一标识符

  • 授权

我们需要给slave配置一个用户/密码的权限,登录mysql

mysql>GRANT REPLICATION SLAVE ON *.* TO '用户名'@'slave数据库的IP地址' IDENTIFIED BY '密码';

这行命令的意思是:允许在某个IP地址的某个用户以某个密码对当前数据库的所有库和所有表进行复制操作

注意:以上配置了权限,我们需要刷新一下权限使用命令:

mysql>flush privileges;

或者直接重启mysql服务:

systemctl restart mysqld.service

  • 查看以下master的状态

其实主要是查看以下master的日志文件名字,以及文件所在的位置,使用命令:

mysql> show master status;

可以看到类似如下信息:

linux系统中mysql主从复制搭建步骤_第2张图片

 

File: 日志文件名称

Position: 日志所在位置

  •  开启slave的二进制日志

进入slave的服务器

1)编辑mysql的配置文件,使用命令:

vi /etc/my.cnf

2)添加二进制日志配置,开启二进制(relay-bin只是日志文件名称,可以自己指定)

log-bin=relay-bin
server-id=2

注意:server-id是要指定的,不然会报错,每一台指定一个唯一标识符

重启mysql服务:

systemctl restart mysqld.service

  • 将slave指向master

mysql>CHANGE MASTER TO

>MASTER_HOST='master所在服务器的IP',

>MASTER_USER='master授权的账号',

>MASTER_PASSWORD='master授权的密码',

>MASTER_LOG_FILE='master的日志文件名',

>MASTER_LOG_POS=master的日志所在位置;

  • 开始主从复制

slave上执行

mysql>start slave;

我们可以查看slave的运行状态:

show slave status\G;

可以看到类似如下内容:

 

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.147.128

                  Master_User: root

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000002

          Read_Master_Log_Pos: 154

               Relay_Log_File: localhost-relay-bin.000002

                Relay_Log_Pos: 320

        Relay_Master_Log_File: mysql-bin.000002

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes......   

 

注意:

Slave_IO_Running: YES 表示slave的日志读取线程开启

Slave_SQL_Running: YES 表示SQL执行线程开启

如果有主从复制有错误信息其实也可以看到

  • 测试

以上我们就将主从复制功能设置完毕了,我们可以通过在master里面创建数据库,或者表,插入数据等来测试一下

你可能感兴趣的:(主从复制,MySQL,mysql)