MySql5.7配置主从复制

来源:互联网 发布:淘宝网无线话筒 编辑:程序博客网 时间:2024/04/30 07:27

我是按照下面博客中的步骤来的,最后成功了。
http://blog.csdn.net/tanweii163/article/details/50245609

问题

这里我主要说一下,如果揍瞎了,怎么重新开始。
在主服务器上的操作没什么大问题。
在从服务器上操作的时候,很容易出问题:
1.开始在主服务器上创建数据库,删除数据库,创建表,删除表、、进行了很多的操作,从服务器就是不好使,查看mysql.log发现,日志没有读取全,是从一个删除数据库的语句开始的,由于这时候从服务器上没有这个数据库,从服务器再执行这条sql语句的时候,就报错了,然后就不往下执行了。
2.于是我就删除了从服务器上/var/lib/mysql/目录下的relay开头的文件,开始只删除的从主服务器上读取的日志文件,也就是文件名类似relay-bin.000002这种格式的文件,发现不好使,而且从服务器上执行start slave的时候,报下面的错误

ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

很显然是mysql继续读之前删除的文件,但是没找到。
在/var/lib/mysql/目录下还有relay-log.info和relay-bin.index这两个文件,都干掉,然后重启mysql,就跟一个新的slave差不多了,可以启动了。

原理

这里简单描述一下主从复制的原理,方便配置的时候找原因。
基本原理就是,从服务器上有两个线程,一个IO线程,一个SQL线程,

mysql> show slave status \G;*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.232.132                  Master_User: userbyslave                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-bin.000001          Read_Master_Log_Pos: 316               Relay_Log_File: relay-bin.000002                Relay_Log_Pos: 320        Relay_Master_Log_File: mysql-bin.000001             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              Replicate_Do_DB:           Replicate_Ignore_DB: 

上边的Slave_IO_Running和Slave_SQL_Running就是这两个线程的状态了,IO线程负责从主服务器上拉取日志,SQL线程负责解析执行日志中的内容。

我们是在执行下面的命令的时候,让从服务器连上主服务器的:

CHANGE MASTER TOMASTER_HOST='192.168.31.84',MASTER_USER='repl',MASTER_PASSWORD='slavepass',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=154;

在从服务器上执行上边的命令,就可以将从服务器的IO流的源端指向主服务器指定日志文件的指定位置。

上边引用的博客的思路也很明确:
1. 配置主服务器
2. 配置从服务器
3. 在主服务器上给从服务器开一个账号
4. 配置从服务器用主服务器上开的账号连接上主服务器

0 0
原创粉丝点击