先在主数据库中创建新数据库rep_test。
然后编辑主数据库的my.ini文件
在[mysqld]节点中增加如下内容:
server-id=1 #指定唯一的ID,1至32,必须的
log-bin=mysql-log-bin #指定二进制日志存放路径,必须的
binlog-do-db=rep_test #指定要同步的数据库,必须的
#binlog-ignore-db=mysql #指定不要同步的数据库,如果指定了binlog-do-db就不用再指定该项
重启主数据库,然后在主数据库中建立一个备份账户
mysql>grant replication slave on *.* to slave@192.168.1.128 identified by 'slave' ;
mysql>flush privileges;
PS:identified by 指定的slave是账号slave@192.168.1.128 的密码
显示主服务器的状态信息,并且找到File 和 Position 的值记录下来;
mysql>show master status;
在从数据库中创建新的数据库rep_test。
然后编辑从数据库的my.ini文件
在[mysqld]节点中增加如下内容:
server-id=2 #指定唯一的ID,2至32,必须的,32313133353236313431303231363533e78988e69d8331333363396335并且不能跟主数据库一样
replicate-do-db=rep_test #指定要同步的数据库,必须的
#replicate-ignore-db=mysql #指定不要同步的数据库,
重启从数据库,设置登录主数据库的账号和密码等信息,然后启动slave
mysql>change master to master_host='192.168.1.2',master_user='slave',master_password='slave', master_log_file='mysql-bin.000002',master_log_pos=120;
mysql>start slave;
查看从数据库的信息
mysql>show slave status \G;
如果出现: Slave_IO_Running: YesSlave_SQL_Running: Yes以上两项都为Yes,那说明没问题了
测试主从复制是否有效果
在主数据库中创建一个新的数据库,然后再切换到从数据库查看是否同样多出通名的数据库
配置旧数据库的主从复制
如果一开始数据库的架构不是主从复制,并且运行一段时间后已经有数据存在,那配置的方式略有不同。
编辑主数据库的my.ini文件,加上一下内容:
binlog-do-db=landclash
重启主数据库,然后在主数据库中锁定所有的表
mysql>flush tables with read lock;
显示主服务器的状态信息,并且找到File 和 Position 的值记录下来;
mysql>show master status;
将主数据库data目录下需要做主从复制的数据库的同名目录拷贝到从数据库的data目录下
编辑从数据库的my.ini文件,加上一下内容:
replicate-do-db=landclash
重启从数据库,因为主数据库在重新配置my.ini后,日志文件变成新的文件,所以需要再次设置登录主数据库的账号和密码等信息
mysql>stop slave;
mysql>change master to master_host='192.168.1.2',master_user='slave',master_password='slave', master_log_file='mysql-bin.000003',master_log_pos=120;
mysql>start slave;
再次输入查看从数据库状态的命令
mysql>show slave status \G;
完成上述配置后,回到主数据库,将表解锁
mysql>unlock tables;
之后在主数据库的修改就能同步到从数据库上了。