Windows操作系统下的MySQL主从复制

来源:互联网 发布:数据库模型 编辑:程序博客网 时间:2024/05/29 16:46

环境说明:

主机(master):192.168.2.135

从机(slave):192.168.2.35


主机配置:

1.进入mysql安装目录下:打开my.ini文件

2.编辑my.ini文件:

[mysqld]
port  = 3306
server-id=135
binlog-do-db=databaseName #将要操作的数据库名称
log-bin=mysql-log

*配置好后,重启Master 的 MySQL服务!!!

通过cmd进入mysql安装目录bin下:

登录mysql:mysql -u用户名 -p密码 (mysql -uroot -p****)

给要连接的从服务器设置权限:grant replication slave,reload,super on *.* to root@192.168.2.35 identified by '******';

*ps: 给从机192.168.2.35添加权限,用户名:root,密码:******

输入命令 show master status; 找到File 和 Position 的值记录下来;

从机配置:

1.进入mysql安装目录下:打开my.ini文件

2.编辑my.ini文件:

[mysqld]
port  = 3306
server-id=35 #(不能与主机相同)
replicate-do-db=databaseName#将要操作的数据库名称

*配置好后,重启Slave 的 MySQL服务!!!

在mysql5.1以上版本中是不支持master设置的,如果添加了master设置,数据库就无法重启了;

通过cmd进入mysql安装目录bin下:

登录mysql:mysql -u用户名 -p密码 (mysql -uroot -p****)

在从服务器上测试:mysql -u root -p ****** -h 192.168.2.135,查看能否连接主数据库成功,如果成功,则一定要退出来,否则一直设置的是主数据库;

修改对主数据库的连接的参数:mysql>change master to master_host='192.168.2.135',master_user='root',master_password='******', master_log_file='mysql-bin.000002',master_log_pos=367;

ps: master_log_file和master_log_pos的值分别为之前在主机运行show master status时记录下的File和Position的结果

如果报错误,说slave线程正在运行,不能设置,这样的话,执行mysql>stop slave; 停止slave线程,然后再设置连接的参数;

设置完之后,执行 mysql> start slave; 开启slave线程;执行mysql> show slave status\G   (没有分号),查看

Slave_IO_Running: Yes
Slave_SQL_Running: Yes


报错处理:

Slave_IO_Running值为no或connecting

查看从机执行change master to ... 指令后输出的Last-IO-Error节点内容:


原因测试连接主数据库之后没有退出来,造成接下来的所有步骤都是对主数据库的操作;



原因

配置mysql主从时,由于是拷贝的mysql目录,导致主从mysql uuid相同, Slave_IO无法启动,报错信息如下:

The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different forreplication to work.


解决办法:修改mysql data 目录下auto.cnf 文件中uuid的值,使两台mysql不同即可,修改后重启mysql服务。

1 0
原创粉丝点击