技术开发 频道

MySQL Replication 实作

  设定SlaveDB

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

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

  [mysqld]

  # Replication on Slave DB

  server-id=2

  Tips:

  如果有多部 Slave DB,每一个 DB 必须设不同的 server-id 值,这就类似主机 IP 地址一样,如果 DB 未指定

  server-id 时,系统默认为 0。

  在 Slave DB 不需要开启 binary logging,不过,如果有开启此参数时,可以作数据库备份以及数据库异常的回复

  作业,同时对其他不同的 Slave DB,可以切换为 Master DB。

  现有数据库从Master至Slave的复制

  如果MasterDB已存有数据,请在锁住tables后继续使用下述方法将数据库复制到SlaveDB。

  停止 MySQL 然后 tar 数据库目录,在 Master DB 执行下述:

  shell> service mysqld stopshell> cd /var/lib/mysql

  shell> tar -czf ~/my_db.tar.gz

  shell> service mysqld start

  shell> mysql -u root -pmysql> UNLOCK TABLES;

  先关闭SlaveDB的MySQL将上述的tar档复制到SlaveDB后解压缩,最后重新以--skip-slave启动MySQL,在SlaveDB执行下述:

  shell> service mysqld stopshell> cd /var/lib/mysql

  shell> tar -xzf ~/my_db.tar.gzshell> mysqld_safe --skip-slave &

  记得,数据库完成复制后,就可以恢复MasterDB的数据库存取操作,在MasterDB使用下述指令,解除数据表锁定:

  mysql> UNLOCK TABLES;

  在SlaveDB 设定Master连接参数

  在SlaveDB执行下述statements:

  mysql> CHANGE MASTER TO

  -> MASTER_HOST='10.10.10.112',

  -> MASTER_USER='repl',

  -> MASTER_PASSWORD='replpass',

  -> MASTER_LOG_FILE='mysql-bin.000001',

  -> MASTER_LOG_POS=5752;

  mysql> START SLAVE;

  以上请输入来自MasterDB的抄写点数据。

  到这里,SlaveDB已经完成与MasterDB的抄写设置,第一次作抄写时,你可以发现在SlaveDB的MySQL资料库目录/var/lib/mysql,有两个档案master.info及relay-log.info,这两个纪录有关与MasterDB连接的信息。

0
相关文章