mysql 主从复制配置,主要用于双(多)机热备份,所有读写操作都在主库上执行,从库只对主库的数据进行复制。而读写分离配置,除了具备主从备份的功用,更重要的是读和写操作的分离,即主库只写,从库只读,从而减轻了单机的I/O压力。值得注意的是,主从备份不能保证历史数据的备份,因此日常的离线备份还是应该执行。

基本信息

说明
系统版本 centos 7 x64
mysql版本 5.6.35
master机 192.168.100.201
slave机 192.168.100.202

操作步骤

1. 在master主库上的配置

vim /etc/my.cnf

# 在 [mysqld] 下添加如下配置

# 给服务器起一个唯一的id
server-id=1

# 开启二进制日志
log-bin=mysql-binlog

# 指定日志格式
binlog-format=mixed

# 重启mysql
sudo service mysql restart

2. 在slave从库上的配置

vim /etc/my.cnf

# 在 [mysqld] 下添加如下配置

# 给服务器起一个唯一的id
server-id=2

# 从服务器中继日志
relay-log=mysql-relaylog

# 重启mysql
sudo service mysql restart

3. 在master主机上分配从库复制的帐号权限

GRANT REPLICATION CLIENT, REPLICATION SLAVE on *.* to USERNAME@'192.168.100.202' IDENTIFIED BY 'PASSWORD';

# 其中是 USERNAME 是帐号名,PASSWORD 是密码

4. 在master主机检查master状态

# 登录mysql后执行

show master status;

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-binlog.000001 |      354 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

记住 File 和 Position 两项值,此处分别为 mysql-binlog.000001 和 354。

注意,此命令执行后,不要再操作master主机,防止状态值变化。

5. 在slave从主机上配置

# 登录mysql后执行

change master to 
master_host=’192.168.100.201’, 
master_user=’USERNAME’, 
master_password=’PASSWORD’, 
master_log_file=’mysql-binlog.000001’, 
master_log_pos=354;

# 启动slave主库
slave start

# 此处 master_log_file 和 master_log_pos 即上文中的 File 和 Position值。

6. 在slave从库上进行状态检查

# 登录mysql后执行

show slave status\G

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.100.201
                  Master_User: backup
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-binlog.000001
          Read_Master_Log_Pos: 354
               Relay_Log_File: mysql-relaylog.000002
                Relay_Log_Pos: 286
        Relay_Master_Log_File: mysql-binlog.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 
                          ...
                          ...
                 
1 row in set (0.00 sec)


# 其中,重点看以下两项配置:

 Slave_IO_Running: Yes
Slave_SQL_Running: Yes

此两项必须都为YES,才说明主从配置成功。