0%

MySQL主从服务器的配置

记录基于binlog的MySQL主从服务器配置过程。

整体步骤

*主数据库

  1. 修改配置文件:开启binlog、设置server-id,然后重启数据库;
  2. 创建用于同步的数据库用户;
  3. 导出数据库。

从数据库

  1. 修改配置文件:设置server-id,然后重启数据库;
  2. 导入数据到到从库;
  3. 配置主数据库地址、用户名、密码;
  4. 启用同步。

详细步骤

主数据库配置

  1. 查看主数据库是否开启binlog:

    1
    2
    3
    4
    5
    6
    7
     mysql> show variables like "%log_bin%";
    +---------------------------------+-------+
    | Variable_name | Value |
    +---------------------------------+-------+
    | log_bin | OFF |
    | ...... | ... |
    +---------------------------------+-------+

    默认是关闭的。

  2. 修改配置文件,开启binlog,并配置server-id:

    1
    2
    server-id              = 1
    log_bin = /var/log/mysql/mysql-bin.log

    server-id是一个正整数,要求每台数据库都不一样即可。
    log_bin的值是一个路径,表示binlog文件的保存位置。

  1. 保存配置后重启数据库,然后再次查看binlog是否开启:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mysql>  show variables like "%log_bin%";
    +---------------------------------+--------------------------------+
    | Variable_name | Value |
    +---------------------------------+--------------------------------+
    | log_bin | ON |
    | log_bin_basename | /var/log/mysql/mysql-bin |
    | log_bin_compress | OFF |
    | log_bin_compress_min_len | 256 |
    | log_bin_index | /var/log/mysql/mysql-bin.index |
    | log_bin_trust_function_creators | OFF |
    | sql_log_bin | ON |
    +---------------------------------+--------------------------------+
    7 rows in set (0.00 sec)

    log_bin是ON表示binlog已经开启。

  2. 创建用于同步数据的用户。在主数据库执行:

    1
    2
    create user 'repl'@'172.17.0.%' identified by '123123';
    grant REPLICATION SLAVE on *.* to 'repl'@'172.17.0.%';

    这个用户只需要REPLICATION SLAVE权限即可。

  1. 导出数据库:
    1
    mysqldump -h 127.0.0.1 -u root -p  --databases study --master-data > study.sql
    参数中包含--master-data,导出的sql文件会记录binlog文件名和位置。例如:
    1
    CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=2273;

从数据库配置

  1. 配置server-id:

    1
    server-id              = 2

    注:从库可以不启用binlog。

  2. 重启从数据库。

  3. 创建数据库并导入从主库导出的数据:

    1
    source study.sql;
  4. 配置主数据库的地址、账号和密码:

    1
    change master to MASTER_HOST='172.17.0.6', MASTER_USER='repl', MASTER_PASSWORD='123123';

    注:不用写binlog的文件名和位置,因为导出的sql已经包含了。

  1. 开启同步:
    1
    start slave;
    完事~
    现在在主库增加删除修改数据,从库会自动同步。如果没有,可以看看从库状态,会有提示:
    1
    show slave status\G;