欢迎使用CSDN-markdown编辑器

2017-01-07 19:02:59来源:CSDN作者:qq_31461549人点击

因为学习研究需要,最近在一台服务器上配置了两个mysql来研究一些复制相关的东西,之前也有使用过复制,在使用5.5.53版本的mysql之后有一些微小的变化,这里只是做一下简单的记录方便以后回顾。
系统配置:
windows7 64位
mysql5.5.53
配置路径:
主库 d:/mysql-5.5.53-winx64
从库 d:/mysql-5.5.53-winx64-slave
由于下载的mysql是绿色版的,需要进行mysqld进行配置服务,我们假设需要进行复制的数据库是test数据库,首先我们需要设置my-medium.ini,之前在5.0版本中应该是my.ini,由于文件中代码较多,我仅列出需要修改或新增的参数。

[mysqld]log-bin = mysql-binserver-id   = 1binlog-do-db = test

之后在主库Bin目录下按住shift右键打开命令行输入

mysqld install MySQL1 --defaults-file=d:/mysql-5.5.53-winx64/my-medium.ini

从库我们也先需要设置my-medium.ini,但是有一些不同的地方

[client]port        = 3307[mysqld]port        = 3307log-bin = slaveserver-id   = 2replicate-do-db = testbasedir = d:/mysql-5.5.53-winx64-slavedatadir = d:/mysql-5.5.53-winx64-slave/data

相同

mysqld install MySQL2 --defaults-file=d:/mysql-5.5.53-winx64-slave/my-medium.ini

至此两个mysql服务已经注册完成,可以使用net start或者在计算机的右键菜单管理中开启服务。

在开始复制之前,我们还需要做一些准备工作:
①复制用户,在主库中我们需要先创建一个拥有replication权限的用户,可以参考以下的代码

grant replication slave,replication client on *.* to repl_user@'localhost' identified by 'password';

②同步主从数据库test数据库中的数据
③记录主库的复制情况

show master status/G

记录file和position
④从库指定复制位置

change master to master_host='127.0.0.1',master_port=3306,master_user='repl_user',master_password='password',master_log_file='mysql-bin.000036',master_log_pos=365;

需要注意,在开始执行复制之前,我们还需要保持主从库的一致性,可以使用mysqldump等工具帮助你进行数据库之间的同步。
⑤开始复制

start slave;

在进行配置的时候,还是产生了很多的问题,我也在这里总结一下:
一、从库服务启动失败,或阻塞在启动状态
在启动服务的时候,有两次阻塞在了启动状态,这基本是由于mysqld配置服务的原因,具体的原因可以在从库data目录下的PC用户名.err文件中查阅。

...170105 10:28:50 [ERROR] D:/mysql-5.5.53-winx64-slave/bin/mysqld: unknown variable 'default-file=D:/mysql-5.5.53-winx64-slave/meduim.ini'

对于上例的错误,在cmd中删除服务再注册就好了。

sc delete mysql2

二、在从库启动主库的服务
之前一直使用5.0的mysql没有遇到过这个问题,在5.5.53版本中,即使没有设置path,在从库bin中打开cmd启动mysql依然会启用主库的服务,这也是我一段时间以来一直没有发现从库并没有配置正确的原因。可以使用以下启动命令来保证启动服务的正确。

mysql -u root --port 3307 -p

如果已经打开了多个cmd窗口,在使用过程中分不清到底哪个是主库哪个是从库,除了检查slave状态以外,也可以使用查看端口的方法

show variables like 'port';

三、复制的意外断开
主从库的复制会有很多原因断开,除了被一些优化软件kill进程以外,也有可能是因为在change master的时候并没有指定relay-log或者relay-log-index,之后又改变了计算机用户名,之后在主库上新建的binlog文件将改变名字导致复制失败。

四、其他进行复制开始的方式
在配置新的slave的时候,如果不想使用mysqldump等方式进行备份还原,也可以在change master的时候直接指定log_file为log_file.000001,log_pos为0开始复制,需要注意的是这只能在主库没有清理过binlog的时候使用,并且当日志文件过多过大的时候会导致效率的低下。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台