[mysql] 主从复制配置

时间:2022-09-21 12:41:49

须知


> master 服务器 ip:192.168.56.102
slave 服务器 ip:192.168.56.103
master mysql 配置文件地址:/etc/my.cnf
slave mysql 配置文件地址:/etc/my.cnf

master 服务器配置说明


  1. 命令行进入 mysql
  2. create user replslave; //创建新用户
  3. GRANT REPLICATION SLAVE ON . TO ‘replslave’@’192.168.56.%’ IDENTIFIED BY ‘admin’;

    replslave 用户必须具有 REPLICATION SLAVE 权限,除此之外没有必要添加不必要的权限,密码为 admin。
    说明一下192.168.56.%,这个配置是指明 replslave 用户所在服务器,这里 % 是通配符,表示 192.168.56.0-192.168.56.255的 Server 都可以以 replslave 用户登陆主服务器。
    当然你也可以指定固定 Ip 。

  4. 编辑配置 mysql 配置文件

    1. vi /etc/my.cnf
    2. 在 [mysqld] 下输入以下内容
      1. server-id=102 //给数据库服务的唯一标识,一般为大家设置服务器 Ip 的末尾号
      2. log-bin=master-bin
      3. log-bin-index=master-bin.index
  5. 重启 mysql 服务器 service mysqld restart
  6. 进入 mysql 命令行 查看 master 状态show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+

| master-bin.000001 | 154 | | | |
+-------------------+----------+--------------+------------------+-------------------+

从 slave 服务器配置


  1. vi /etc/my.cnf
  2. 在 [mysqld] 标签下,输入以下内容,然后重启 mysql 服务

    server-id=103
    relay-log-index=slave-relay-bin.index
    relay-log=slave-relay-bin

  3. 进入 mysql 命令行,输入以下内容

    change master to master_host=’192.168.56.102’,
    master_port=3306,
    master_user=’replslave’,
    master_password=’admin’,
    master_log_file=’master-bin.000001’,
    master_log_pos=154; # 与 master 服务器中 Position 的值一致即可。

  4. 启动 Slave :start slave;

  5. 查看 slave 状态:show slave status;

问题


  1. Could not find first log file name in binary log index file

解决方法 1:
master 服务器在命令行中输入:flush log,然后使用 show master status;查看最新文件。
在 slave 服务器命令行中输入:

  1. stop slave;
  2. change master to master_log_file=’newfile’;
  3. start slave;

解决方法 2:
master 服务器在命令行中输入:flush log,然后使用 show master status;查看最新文件。
在 slave 服务器命令行中输入:
1. stop slave;
2. change master to master_host=’192.168.56.102’,
master_port=3306,
master_user=’replsave’,
master_password=’admin’,
master_log_file=’newfile’,
master_log_pos=154;
3. start slave;

参考1:Mysql主从配置,实现读写分离