一:环境介绍及说明
主库所在的操作系统:win7
主库的版本:mysql-5.6.40-winx64.zip
主库的ip地址:127.0.0.1
主库的端口:3306
从库所在的操作系统:win7
从库的版本:mysql-5.6.40-winx64.zip
从库的ip地址:127.0.0.1
从库的端口:3307
二:window7上安装并启动两个mysql数据库
下载完成解压到任意目录.以下是我的解压目录:
E:\mysql\mysql-5.6.40-winx64\mysql_master(第一个目录)
E:\mysql\mysql-5.6.40-winx64\mysql_slave(第二个目录)
安装第一个mysql
在第一个目录中将my-default.ini文件重命名为my.ini,并将文件中 [mysqld] 下几个配置修改如下:
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=E:\mysql\mysql-5.6.40-winx64\mysql_master
# 设置mysql数据库的数据的存放目录
datadir=E:\mysql\mysql-5.6.40-winx64\mysql_master\data
打开cmd或以管理员的身份打开cmd,然后进入E:\mysql\mysql-5.6.40-winx64\mysql_master\bin\目录,执行以下命令:
mysqld --install mysql_master
注:MySQL1 为重命名的数据库名称;
以上步骤执行完成之后,选择"计算机"-"右键"-"管理"-"服务与应用程序"-"服务",能查看到刚才的MySQL1,说明安装成功.
若是要删除数据库,进入E:\mysql\mysql-5.6.40-winx64\mysql_master\bin\目录,可以执行以下命令:
mysqld --remove mysql_master
回到cmd,还是进入D:\ProgramFiles\MySQL5.6.22\mysql_master\bin\目录,可以执行以下命令:
net start mysql_master 启动数据库
net stop mysql_master 关闭数据库
mysql -h localhost -P3306 -u root -p登陆数据库 注意:因为端口号修改了,所以必须以这种方式登陆,-P必须大写,否则无法登陆;
至此第一个数据库就可以使用了;
安装第二个mysql
将第一个目录mysql_master中的所有文件复制到第二个目录mysql_slave中;
然后打开mysql_slave目录中的my.ini文件,修改三个配置:
basedir =E:\mysql\mysql-5.6.40-winx64\mysql_slave
datadir =E:\mysql\mysql-5.6.40-winx64\mysql_slave\data
port=3307
进入E:\mysql\mysql-5.6.40-winx64\mysql_slave\bin\目录,执行以下命令:
mysqld --install mysql_slave
注:MySQL2为重命名的数据库名称;
以上步骤执行完成之后,选择"计算机"-"右键"-"管理"-"服务与应用程序"-"服务",能查看到刚才的MySQL2,说明安装成功.
至此第二个数据库就可以使用了;
备注:net start mysql_slave 报错,解决方法:
检票注册表中是否配置成功,运行regedit打开注册表 找到 HEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/
E:\mysql\mysql-5.6.40-winx64\mysql_slave\bin\mysqld mysql_slave
三:mysql配置主从服务
1:主库(master)的安装及配置
修改mysql_master\my.ini文件
[client]
port=3307
default-character-set=utf8
[mysqld]
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
port =3306
character_set_server=utf8
basedir=E:\mysql\mysql-5.6.40-winx64\mysql_master
datadir=E:\mysql\mysql-5.6.40-winx64\mysql_master\data
[WinMySQLAdmin]
E:\mysql\mysql-5.6.40-winx64\mysql_master\bin\mysqld.exe
修改mysql_slave\my.ini文件
[client]
port=3307
default-character-set=utf8
[mysqld]
server_id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
port =3307
basedir=E:\mysql\mysql-5.6.40-winx64\mysql_slave
datadir=E:\mysql\mysql-5.6.40-winx64\mysql_slave\data
[WinMySQLAdmin]
[WinMySQLAdmin]
G:\Mysql\mysql-5.6.38-winx64\bin\mysqld.exe\bin\mysqld.exe
2:进入mysql_master\bin net start mysql_master 启动服务
进入mysql_slave\bin net start mysql_slave启动服务
3、关联主库(master)与从库(slave)
上面我们已经把master和slave相关配置文件都已添加,并分别启动了master与slave,现在我们分别登录到master和slave的mysql中,
master的mysql 执行命令 show master status查看master的状态
slave的mysql 执行命令 show slave status查看slave的状态
我们可以发现 ,master的状态下,生成了一个二进制的日志文件,而slave下是空的,所以我们现在就要把主库与从库关联起来。只需要让从库(slave)知道主库(master)
的地址就可以了。
首先我们需要在主库(master)中创建一个用户用于与从库同步的用户名和密码(这里我创建一个test用户,密码为mysql),并给test用户授权,以用于主库操作从库
相关命令:
create user test;
grant replication slave on *.* to '从库用户名(test)'@'从库主机地址(127.0.0.1)'identified by '密码(mysql)';
flush privileges;
现在我们切到从库(slave),把主库与从库联系起来。
执行以下命令:
change master to
master_host='127.0.0.1',master_port=3306,master_user='test',master_password='mysql',master_log_file='master-bin.000001',master_log_pos=0;
然后执行命令 start slave 开启主从同步
然后执行命令查看 slave的状态
show slave status \G;
至此,主从跟踪已经开启,并全部配置完成
4、验证主从同步
我们进入master和slave并查看他们的数据库,如下图:
然后我们在主库中创建一个数据库user,看一下从库有没有变化