写在最前边 :php
本次测试,属于我的练习的过程,只有过程, 没有总结.mysql
测试环境 :sql
os : windows 7数据库
mysql : 5.5.47 windows
环境 : phpstudy 2016服务器
复制的基本步骤:ide
1 配置一个数据库实例做为master测试
2 配置一个数据库实例做为slave.spa
3 将slave链接到master日志
实验环境说明 :
本次实验使用的phpstudy自带的mysql,
须要的准备工做,
将phpstudy目录下的mysql文件夹总体复制一份,拷贝到当前目录下便可,原始的做为master,复制的做为slave,
测试的目录结构大体以下:
E:\
---phpsudy
---- MYSQL
---- MYSQL1
重点 : 在拷贝的MYSQL1文件夹中,注意修改配置文件的相关,参数,一些默认的文件存储路径,避免在启动实例的时候,提示一些没必要要的错误.
****** 配置 master my.ini 实例 *******
# 以下是比较关键的信息, 在my.ini文件中添加没有的便可. # 这个是终端链接的端口 [client] port=3306 [mysqld] # 这个是实例启动时端口 port=3306 # 这个是数据存放的目录 basedir="E:/phpStudy/MySQL/" datadir="E:/phpStudy/MySQL/data/" # 这些关于日志的配置 log-bin =master-bin log-bin-index = master-bin.index # 服务的id号 server-id = 1
修改后请重启服务.
****** 配置 slave my.ini 实例 *******
## 以下是比较关键的信息, 在my.ini文件中添加没有的便可. # 这个是终端链接的端口 [client] port=3307 [mysqld] # 这个是实例启动时端口 port=3307 # 这个是数据存放的目录,注意此处的目录不一样于master的目录 master(MYSQL) <----> slave(MYSQL1) basedir="E:/phpStudy/MySQL1/" datadir="E:/phpStudy/MySQL1/data/" # 这些关于日志的配置, relay-log-index 中继日志索引文件 ; relay-log 中继日志文件. relay-log-index = slave-relay-bin.index relay-log = slave-relay-bin # 服务的id号 server-id = 2
修改后请重启服务.
启动master mysql
经过dos,手动进入目录 phpstudy->mysql->bin ,目录下 ,执行 mysqld.exe 不须要加载任何参数.
---- 建立一个复制用于
master > create user repl_user;
master > grant replication slave on *.* to repl_user identified by 'xyzzy';
****** 链接 master 与 slave *****
在slave服务下
mysql> change master to -> master_host ='192.168.1.3', # 这个是我本地局域网内的ip地址, -> master_port=3306, # master的端口 -> master_user ='repl_user', # 在master 上建立的能够复制的帐号. -> master_password='xyzzy'; Query OK, 0 rows affected (0.22 sec)
mysql> start slave; #启动slave 服务 Query OK, 0 rows affected (0.00 sec)
********** 测试环节 ********
1 master 和slave的状态,
show master status\g;
show slave status\G;
2 测试数据 (在master服务下执行.)
2.1 建立数据库
mysql> create table tal(text text); Query OK, 0 rows affected (0.14 sec)
2.2 插入数据
mysql> insert into tal values("zhangchao"); Query OK, 1 row affected (0.09 sec)
2.3 强制刷新日志文件
mysql> flush logs; Query OK, 0 rows affected (0.24 sec)
2.4 验证结果(在slave服务下)
mysql> select * from tal; +-----------------+ | text | +-----------------+ | zhangchao | +-----------------+
容易出错的地方 :
一 在链接 master 和slave的环节中,
master_host 实际生产环境中配置的是一个外网环境的ip地址,为了测试,我就用本地的了,
有些书上写的是 master_host = master_id ; 这样的写法, 致使的结果是 在slave服务器上提示错误,
在show slave status ,提示没法正常链接远程主机, 这个是按照课本实际时出现的错误,
二 在配置环节中,
log-bin 和 log-bin-index 建议是手写一个, 若是是系统分配的会是主机名称, 若是系统环境有所改动,
那么复制时,slave就会找不到相应的日志文件.