MySQL主从数据库配置

使用工具

MySQL数据版本:5.6.36-log、
两台云服务器(Linux系统)

首先,需要在Linux系统下安装MySQL,具体步骤可以参考这里,并且确保两台主机可以相互访问,可以直接ping一下。

配置Master

  • Linux环境下,MySQL的配置文件在/ect/my.cnf,直接打开并编辑该文件:vim /etc/my.cnf
  • [mysqld]下输入配置
    1
    2
    3
    4
    5
    log-bin=mysql-bin
    server-id=2
    binlog-ignore-db=information_schema
    binlog-ignore-db=mysql
    binlog-do-db=rwtest

这里的server-id用于标识唯一的数据库,这里设置为2在设从库需要设置为其他值

binlog-ignore-db:表示同步的时候ignore的数据库
binlog-do-db:指定需要同步的数据库

  • 重启MySQLservice mysqld restart
  • 登录MySQL并对访问用户进行授权:Slave机器需要File权限和REPLICATION SLAVE权限,当然也可以授予全部权限。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    grant file on *.* to 'root'@'%' identified by 'your password';
    grant replication slave on *.* to 'root'@'%' identified by 'your password';
    flush privileges;
    -------------------------------------------
    grant all privileges on *.* to 'root'@'%' identified by 'your password';
    flush privileges;
  • 完成后,可以查看下Master的状态:show master status

    1
    2
    3
    4
    5
    6
    7
    mysql> show master status;
    +------------------+----------+--------------+----------------------------------+-------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+----------------------------------+-------------------+
    | mysql-bin.000001 | 2272 | rwtest | information_schema,mysql | |
    +------------------+----------+--------------+----------------------------------+-------------------+
    1 row in set (0.03 sec)

这里的FilePositionSlave中都要用到,Binlog_Do_DB指需要同步的数据库,Binlog_Ignore_DB指不需要同步的数据库,就是刚才配置的值。

配置Slave

  • 同样在[mysqld]下对配置文件进行编写

    1
    2
    3
    4
    5
    6
    7
    8
    9
    log-bin=mysql-bin
    server-id=3
    binlog-ignore-db=information_schema
    binlog-ignore-db=mysql
    replicate-do-db=rwtest
    replicate-ignore-db=mysql
    log-slave-updates
    slave-skip-errors=all
    slave-net-timeout=60
  • 配置完毕后同样重启一下MySQL,并进入设置其对应的Master

    1
    2
    3
    4
    mysql> stop slave; #关闭Slave
    mysql> change master to master_host='Master主机IP',master_user='刚才授权的用户',master_password='your password',master_log_file='mysql-bin.000001', master_log_pos=2272;
    mysql> start slave; #开启Slave

master_log_filemaster_log_pos都是Master的状态值。必须对应

  • 登录slave的数据库,查看slave的状态:show slave status \G
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    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: mysql-bin.000001
    Read_Master_Log_Pos: 2272
    Relay_Log_File: izwz9fcvpu481xh55cegx0z-relay-bin.000002
    Relay_Log_Pos: 1339
    Relay_Master_Log_File: mysql-bin.000001
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    Replicate_Do_DB: rwtest
    Replicate_Ignore_DB: mysql
    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: 2272
    Relay_Log_Space: 1530
    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:
    Replicate_Ignore_Server_Ids:
    Master_Server_Id: 2
    Master_UUID: de20814f-2fb8-11e7-8f61-5254002b91a1
    Master_Info_File: /var/lib/mysql/master.info
    SQL_Delay: 0
    SQL_Remaining_Delay: NULL
    Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
    Master_Retry_Count: 86400
    Master_Bind:
    Last_IO_Error_Timestamp:
    Last_SQL_Error_Timestamp:
    Master_SSL_Crl:
    Master_SSL_Crlpath:
    Retrieved_Gtid_Set:
    Executed_Gtid_Set:
    Auto_Position: 0
    1 row in set (0.03 sec)

如果状态中含有没有报Error,则表示配置成功了。

接下来你通过可视化工具连接两个数据库,在主库中进行增删改操作,从库中也会有相应的操作,而在从库中进行此类操作对主库无效。

文章目录
  1. 1. 使用工具
  2. 2. 配置Master
  3. 3. 配置Slave
|