记录一下配置 MySql 的主从的过程。 修改 mast 服务器的 mysql 的配置

vim /etc/my.cnf
[mysqld]
log-bin=binary-log
server-id       = 1

log-bin 启用 mysql 的二进制日志,它为 mysql 复制提供 DDL 和 DML 的语句流,这里可以是文件名前缀和目录,默认日志文件存放在数据目录中(mysql/var/)中,然后重新启动 mysql 守护进程

mysql> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| binary-log.000001 |      106 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

然后为从服务器添加一个用户

CREATE USER yuansir@'192.168.%' IDENTIFIED BY 'yuansir';
GRANT REPLICATION SLAVE ON *.* TO yuansir@'192.168.%';

配置从服务器,修改从服务器的配置文件

vim /etc/my.cnf
[mysqld]
server-id	= 2
read_only=TRUE

这里 read_only 是为了让从服务器不 DDL 和 DML 的语句操作。重新启动 mysql 守护进程

mysql> show slave status;
Empty set (0.02 sec)

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.1.131',
    -> MASTER_USER='yuansir',
    -> MASTER_PASSWORD='yuansir';
Query OK, 0 rows affected (0.04 sec)

mysql> CHANGE MASTER TO
    -> MASTER_LOG_FILE='binary-log.000001',
    -> MASTER_LOG_POS=106;
Query OK, 0 rows affected (0.00 sec)

启动从服务器验证操作;

mysql> SLAVE START;
Query OK, 0 rows affected (0.03 sec)

确定Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes,这样说明主从已经配置成功,并正常运行了。

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.131
                  Master_User: yuansir
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binary-log.000001
          Read_Master_Log_Pos: 106
               Relay_Log_File: localhost-relay-bin.000001
                Relay_Log_Pos: 253
        Relay_Master_Log_File: binary-log.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:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 106
              Relay_Log_Space: 412
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
1 row in set (0.00 sec)

几个有用的复制配置

  • sync_binlog 某个服务器挂了,来确保服务器间数据一致性

  • innodb_support_xa 某个服务器挂了,来确保 innodb 重做日志文件和二进制文件之间一致和同步

  • expire_logs_days 设定二进制日志保存天数,过期自动删除

  • log_slave_updates 启用该选项可以在主从服务器上运行二进制日志,还记录了任何从服务器上直接执行的命令

转载请注明: 转载自Ryan 是菜鸟 | LNMP 技术栈笔记

如果觉得本篇文章对您十分有益,何不 打赏一下

谢谢打赏

本文链接地址: MySql 主从复制配置

知识共享许可协议 本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可