技术开发 频道

MySQL Replication 实作

  设定MasterDB

  要作抄写的MasterDB必须开启binarylogging,并且在每一个DB主机上,需设定不同的server-id值,这个值是用来辨识群组内的不同主机识别用,其值是介于1-232 。

  请关闭MySQL并修改/etc/my.cnf内容如下:

  shell> service mysqld stopshell> vi /etc/my.cnf

  [mysqld]

  # Replication on Master DB

  log-bin=mysql-bin

  server-id=1

  shell> service mysqld start

  取得MasterDB 抄写点信息

  为了要使SlaveDB作抄写,必须先在MasterDB上确定目前的数据点信息,以使SlaveDB可以从目前的数据点开始作数据抄写,如此可确保两端的数据是同步的。

  要取得 Master DB 目前数据点,必须先锁住要作作抄写数据库的所有 tables 的写入操作。

  在MasterDB执行下述SQLstatements:

  mysql> FLUSH TABLES WITH READ LOCK;Query OK, 0 rows affected (0.01 sec)

  mysql> SHOW MASTER STATUS;

  +------------------+----------+--------------+------------------+

  | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

  +------------------+----------+--------------+------------------+

  | mysql-bin.000001 | 5752 | | |

  +------------------+----------+--------------+------------------+

  1 row in set (0.00 sec)

  请记住这两项信息,后续设定SlaveDB时会用到:File -binarylog檔名

  Position - 数据点位置

  注意:

  对于 InnoDB tables,当执行 FLUSH TABLES WITH READ LOCK 时会锁定所有 table 的 COMMIT 操作。

  如果未开启 binary logging,这两字段 File & Position 则为显示空白及 4。

0
相关文章