在windows上要搭建主从复制环境要先创建2个mysql服务
1正常安装第一个mysql服务
2关闭第一个服务,拷贝mysql的整个目录出来作为第二个mysql
3修改第二个mysql文件中的my.init保证端口和目录不冲突,修改server-id,server-id也要不同,还要设置要复制的数据库
server-id=2
log-bin=mysql-bin
replicate-do-db=test
4注册服务 mysqld install MySQL2 --defaults-file="E:\MySQL2\\my.ini"
5修改第二个mysql目录中data中的auto.cnf文件中的server-uuid值,保证2个mysql文件中该值不同,一样的话会报如下的错误:
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
6主库添加复制用户
create user 'rep'@'127.0.0.1' identified by 'ref';
GRANT REPLICATION SLAVE ON *.* TO 'rep'@'127.0.0.1';
7查看主库的日志到哪里了,记住position 就是查看oracle的日志的sequence
show master status;
change master to master_host='127.0.0.1',master_port=3306,master_user='rep',master_password='ref',master_log_file='mysql-bin.000001',master_log_pos=107;
9开启从库的服务
start salve
10查看slave的状态
mysql> show slave status\G;
11开始测试
-----------------主从结构的一些注意事项--------
log-bin是二进制日志文件的基本名,默认是${hostname}-bin
log-bin-index是二进制文件的索引文件名,默认${log-bin}-index
最好是配置log-bin参数,如果没有配置默认是跟机器名相关的,所以后续如果机器名有变动,会导致二进制文件找不到,产生问题。
ls
auto.cnf ib_logfile0 ib_logfile2 mysql mysql-bin.000002 mysql-bin.000004 mysql-bin.index mysqld.pid performance_schema
ibdata1 ib_logfile1 mysql-bin.000001 mysql-bin.000003 mysql-bin.000005 mysqld.err mysql-slow test
more mysql-bin.index
./mysql-bin.000001
./mysql-bin.000002
./mysql-bin.000003
./mysql-bin.000004
./mysql-bin.000005
relay-log中继日志文件位置,
relay-log-index中继日志文件索引文件,跟oracle中dg里的概念都是一样的,下面看下中继日志文件
ls
auto.cnf ib_logfile1 mysql-bin.000002 mysql-bin.index mysql-slow relay-bin.000011 test
ibdata1 ib_logfile2 mysql mysql-bin.000003 mysqld.err performance_schema relay-bin.index
ib_logfile0 master.info mysql-bin.000001 mysql-bin.000004 mysqld.pid relay-bin.000010 relay-log.info
在mysql5.1开始提供了2中复制方式,基于sql的方式和基于行的方式,这个跟oracle中的也是相同的道理,基于sql的对应于逻辑复制,基于行的方式是物理复制,通常物理复制的速度更快。