我是按照下面博客中的步骤来的,最后成功了。##问题
这里我主要说一下,如果揍瞎了,怎么重新开始。
在主服务器上的操作没什么大问题。
在从服务器上操作的时候,很容易出问题:
1.开始在主服务器上创建数据库,删除数据库,创建表,删除表、、进行了很多的操作,从服务器就是不好使,查看mysql.log发现,日志没有读取全,是从一个删除数据库的语句开始的,由于这时候从服务器上没有这个数据库,从服务器再执行这条sql语句的时候,就报错了,然后就不往下执行了。
2.于是我就删除了从服务器上/var/lib/mysql/目录下的relay开头的文件,开始只删除的从主服务器上读取的日志文件,也就是文件名类似relay-bin.000002这种格式的文件,发现不好使,而且从服务器上执行start slave的时候,报下面的错误
很显然是mysql继续读之前删除的文件,但是没找到。
在/var/lib/mysql/目录下还有relay-log.info和relay-bin.index这两个文件,都干掉,然后重启mysql,就跟一个新的slave差不多了,可以启动了。
##原理
这里简单描述一下主从复制的原理,方便配置的时候找原因。
基本原理就是,从服务器上有两个线程,一个IO线程,一个SQL线程,
上边的Slave_IO_Running和Slave_SQL_Running就是这两个线程的状态了,IO线程负责从主服务器上拉取日志,SQL线程负责解析执行日志中的内容。
我们是在执行下面的命令的时候,让从服务器连上主服务器的:
在从服务器上执行上边的命令,就可以将从服务器的IO流的源端指向主服务器指定日志文件的指定位置。
上边引用的博客的思路也很明确:
- 配置主服务器
- 配置从服务器
- 在主服务器上给从服务器开一个账号
- 配置从服务器用主服务器上开的账号连接上主服务器