1.主机从机说明

master主机A:192.168.200.132

slave从机B   :192.168.200.130

2.主机上配置
  • 打开配置文件my.cnf修改以下内容:

server-id = 1log-bin = mysql-bin

修改完毕重启数据库:service mysqld restart

  • 进入到数据库,创建一个专门传输binlog的用户:

  • grant replication slave on *.* to'repl'@'192.168.200.130' identified by '123';

用户名字叫做repl,密码是123。

接下来执行:

flush tables with read lock;
flush privileges;
show master status;

解释:


第一句:把表的读锁死,一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行。解锁用unlock tables;
第二句:刷新权限;
第三句:一定要用笔记住File和Position列的内容,一会要用到。

3.备份数据库
  • 把主机A的所有数据库备份出来,假设A有4个database,分别是mysql,test,db1,z,那么通过命令mysqldump一个个的全部备份出来,比如:

    mysqldump -uroot -p123 db1  > /test/db1.sql

    mysqldump -uroot -p123 mysql  > /test/mysql.sql

    mysqldump -uroot -p123 test > /test/test.sql

    mysqldump -uroot -p123 z > /test/z.sql

  • 通过rsync把数据库的备份数据传输到从机B:

rsync -av /testA/  192.168.200.130:/testB/

  • 在从机B的mysql创建和主机A的mysql相同的database,既然主机A的database有mysql,test,db1,z,那就去创建好

  • 然后把主机A传输过来的数据分别导入对应的database中

    mysql db1 < /testB/db1.sql 

    mysql mysql < /testB/mysql.sql  

    mysql test < /testB/test.sql  

    mysql z < /testB/z.sql   

4.从机上配置
  • 打开配置文件my.cnf修改以下内容

server-id = 2              //这个数不用管值不能和主一样
log-bin=mysql-bin

可选参数(2选1,或者不写那就整体的同步):replicatedo_wild_do_table=test.%,test2.% 和 replicatedo_wild_ignore_table=test.%,test2.% 

修改完毕重启数据库:service mysqld restart

  • 登陆从的mysql

     slave stop;      
     change master to master_host='192.168.200.132',
     master_port=3307, master_user='repl', master_password='123', 
     master_log_file='mysql-bin.000010', master_log_pos=319; 
     slave start;

解释:slave stop停掉数据库 (为了配置以下参数)            注意,第二个语句最后的两个值就要看主的实际的File和Position列的内容

从上查看从的状态: show slave status\G;

有2个yes就表示成功了

5.测试

记得解除主机A的mysql锁头:unlock tables;