linux系统mysql主从配置

1、原理php

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

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

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

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

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

 

2、操做步骤vim

按照原理,咱们开启mysql主从复制,咱们大致须要作如下操做:服务器

1)开启master的二进制日志测试

2)开启slave的二进制日志spa

3)将slave指向master

4)开始复制

 

3、开启master二进制日志

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

vim /etc/my.cnf

2)添加二进制日志配置,开启二进制(master-bin只是日志文件名称,能够本身指定)

log-bin=master-bin
server-id=1

注意:server-id是要指定的,否则会报错,每一台指定一个惟一标识符

 

4、受权

咱们须要给slave配置一个用户/密码的权限

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

这行命令的意思是:容许在某个IP地址的某个用户某个密码当前数据库全部库全部表进行复制操做

注意:以上配置了权限,咱们须要刷新如下权限使用命令:

 

mysql>flush privileges;

 

或者直接重启mysql服务:

service mysql restart;

 

5、查看如下master的状态

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

show master status;

能够看到相似以下信息:

+-------------------+----------+--------------+------------------+-------------------+

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+-------------------+----------+--------------+------------------+-------------------+

| master-bin.000001 |     1516 |              |                  |                   |

+-------------------+----------+--------------+------------------+-------------------+

 

File: 日志文件名称

Position: 日志所在位置

 

6、开启slave的二进制日志

进入slave的服务器

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

vim /etc/my.cnf

2)添加二进制日志配置,开启二进制(relay-bin只是日志文件名称,能够本身指定)

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

注意:server-id是要指定的,否则会报错,每一台指定一个惟一标识符

 

7、将slave指向master

mysql>CHANGE MASTER TO
>MASTER_HOST='master所在服务器的IP',
>MASTER_USER='master受权的帐号',
>MASTER_PASSWORD='master受权的密码',
>MASTER_LOG_FILE='master的日志文件名',
>MASTER_LOG_POS=master的日志所在位置;

 

8、开始主从复制

在slave上执行

mysql>start slave;

咱们能够查看slave的运行状态:

show slave status\G;

能够看到相似以下内容:

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: master的IP地址
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000001
          Read_Master_Log_Pos: 1516
               Relay_Log_File: slave-bin.000004
                Relay_Log_Pos: 1117
        Relay_Master_Log_File: master-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
......    

注意:

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

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

若是有主从复制有错误信息其实也能够看到

 

9、测试

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

 

10、注意点

1)开启了主从复制,slave库若是写入数据的话,可能致使数据回滚从而主从复制线程中断,能够经过如下方式解决:

mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;

2)若是要中止slave的复制可使用命令:

mysql>stop slave;

3)因为主从复制是基于I/O的日志,因此会存在必定延时,若是对数据一致性要求很是高的话,简单的主从复制在实际环境中会存在问题 

 

参考文章:

1)https://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label0

2)https://www.linuxidc.com/Linux/2014-02/96945.htm

相关文章
相关标签/搜索