设定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连接的信息。