数据库开发

网络新概念,云计算、大数据、O2O、电商。。。。

一、mysql主从复制的作用:

1、可以当做是一种备份,基本实时,算是热备份;

2、可以做读写分离缓解数据库压力。

二、mysql主从复制的基本过程:

1、Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;

2、Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave的IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置;

3、Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的高速Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”;

4、Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行

三、使用配置过程:

这里主要是在windows环境中测试使用的!

1、主从两个mysql服务器版本一致

2、在主mysql服务器增加专用用户slave 密码123456

3、停止两个mysql服务,从主服务器copy要复制的数据库ecshop到从服务器;

4、配置主mysql服务器的my.ini配置,在[mysqld]下面增加

#add by master copy to slave
server-id=1
log-bin=mysql-log-bin
binlog-do-db=ecshop
#binlog-ignore-db=mysql

5、配置从mysql服务器的my.ini配置,在[mysqld]下面增加

log-error="D:/MySQL/logs/error.log"  #这里记录同步错误的日志,用于排查不同步的原因
log="D:/MySQL/logs/mysql.log"
long_query_time=1
log-slow-queries="D:/MySQL/logs/slowquery.log"

#add by master copy to slave
server-id=2
master-host=172.16.0.85
master-port=3306
master-user=slave
master-password=123456
replicate-do-db=ecshop
master-connect-retry=10
read-only=1

6、设置防火墙3306端口列外,保证日志文件目录存在

7、启动主mysql服务器,然后启动从mysql服务器

8、修改主mysql中ecshop某一表数据,然后查看从mysql数据库中数据,同步成功;

四、问题处理:

中间碰到ecshop数据不一致导致插入重复主键的错误,解决方法是保证起始状态两个数据库一致;

主从复制使用的命令:

show master status;  查看master状态

show slave status; 查看slave状态

start slave; 开始slave

stop slave ;停止slave

reset slave; 初始化slave

reset master;初始化master

参考:http://www.111cn.net/database/mysql/117219.htm


Last_Error: Last_SQL_Error:等错误

这个是从 slave上,运行 show slave status; 得到的。出现这个问题,最根本的原因是,slave 没有与当前的master的binlog 和binlog的position对应上,也就是说,slave传输的master binlog 不与当前master正使用的binlog以及binlog的行数对应。


[ERROR] Slave I/O: error connecting to master 'admin@172.29.141.112:3306' - retry-time: 60 retries: 86400, Error_code: 2003   这个就是因为防火墙的问题。


遇到ERROR 2013 (HY000): Lost connection to MySQL server during query错误。

在my.ini的[mysqld]中添加skip-name-resolve


主从mysql复制数据延迟或不一致参考如下文章:
http://www.cnblogs.com/kevingrace/p/5685511.html