环境说明:
主机(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 [email protected] 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值为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服务。