MySQL 主从配置

1. MySQL 主从配置

  • 读写分离是启动多个MySQL服务, 一台服务器 作为主服务器(master), 剩下从服务器(slave)读取主服务的 binlog然后写入数据库.
  • 配置主从服务, 可以分担单台数据库服务器的压力,
  • 实现步骤:
    • master:
      • 开启binlog 写入指定文件, 并且创建一个授权用户 用于授权 slave 来复制日志.
    • slave:
      • 设置Master 的相关配置, slave 会复制master的binlog 并写入自己的 relaylog 中, slave 会启动一个线程读取 relaylog 并写入数据库中.

2. 主从配置

  1. 准备主从两个MySQL
  • 我这里是单台服务器启动了两个MySQL 服务
[root@node10009 mysql]# ss -tanp |grep 330
LISTEN     0      128    127.0.0.1:3307                     *:*                   users:(("mysqld",pid=3646,fd=34))
LISTEN     0      128         :::3306                    :::*                   users:(("mysqld",pid=965,fd=35))
[root@node10009 mysql]# 
  1. 备份并恢复
  • 备份Master 数据, 恢复到Slave 上
  • 备份
[root@node10009 mysql]# mysqldump -uroot -p -P3306 test > /opt/back/test.sql
  • 恢复到从服务器
[root@node10009 mysql]# mysql -uroot -p -P3307 < /opt/backup/test.sql
Enter password: 
[root@node10009 mysql]# 
  1. master 配置文件
[mysqld]
server_id                              = 101
log_bin                                = /opt/app/mysql57/data/binlog/mysql_bin
  • 重启
[root@node10009 mysql]# systemctl restart mysqld
[root@node10009 mysql]# 
  • 查看master 状态
MySQL [(none)] > show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql_bin.000096 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

  • 创建用户用户用于 salve 连接到 Master
MySQL [(none)] > GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.10.%' IDENTIFIED BY 'backup';
  1. slave 配置
  • 编辑配置文件
[mysqld]
server_id                              = 102
relay_log                              = /opt/app/mysql/data/relaylog/relay_log
  • 重启
[root@node10009 mysql]# /opt/app/mysql/bin/mysqladmin -uroot -p -P3306 shutdown
[root@node10009 mysql]# /opt/app/mysql/bin/mysqld_safe --defaults-file=/opt/app/mysql/etc/my.cnf -umysql &
  • 配置slave 连接master
MySQL [test] > CHANGE MASTER TO MASTER_HOST='192.168.10.9',MASTER_USER='slave',MASTER_PASSWORD='123',MASTER_PORT=3306,MASTER_LOG_FILE='mysql_bin.000096',MASTER_LOG_POS=154;
Query OK, 0 rows affected, 2 warnings (0.03 sec)
  • 查看状态
MySQL [test] > show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.10.9
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql_bin.000096
          Read_Master_Log_Pos: 154
               Relay_Log_File: relay_log.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql_bin.000096
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
....
  1. 测试
  2. 查看主从数据
001.png
  1. master 修改数据并查看
002.png

END

你可能感兴趣的:(MySQL 主从配置)