一.主库的要求:
1.打开binlog日志
2.创建主从复制账号
3.server id=1
二.从库要求
1.开启中继日志----relay log=relay-bin
2.主从复制验证信息录入
3.激活主从复制
4.从的server id不能跟主一样
主从复制原理
1.mysql主会有两个进程,mysql主进程和IO线程
2.从库有三个线程mysql主进程、SQL线程和IO线程 主库的IO线程是记录数据库改变的SQL语句,把它写到binlog日志中。从库不需要打开binlog日志当它 开启复制式会自动生成IO线程,从库的IO线程是监控主库的binlog日志,一旦发现主库binlog日志有更 新,从库的IO线程会向主库的IO线程申请验证,然后把它记录在中继日志中,主库的SQL线程会把中继 日志中的SQL语句翻译过来执行到从库的数据库中既然要验证,那都验证些什么???
1.主库IP
2.主库socket进程的端口
3.主库的复制账号和密码
4.复制哪个二进制文件的名字
5.二进制文件中position具体位置 从库中记录验证信息和二进制文件位置信息的文件是:master.info
注意主从复制之前要保证主库和从库的数据是一致的 怎么去保证一致:把主库的数据全备,然后在从库上导入,这样就保证了主从数据库的内容是一致的
搭建主从复制
1.主库配置文件(/etc/my.cnf)
开启binlog日志
修改server-id(不能与从库一致)
2.从库配置文件
开启中继日志 relay-log=relay-log-bin
3.在主库创建账号
grant replication slave on *.* to 'mysql'@'192.168.200.%' identified by '666666''
4.查看主库的binlog日志以及master
show master status;
5.在从库进行身份录入
change master to master_host='192.168.200.133',master_user='myslave',master_password='666666',master_log_file='mysql-bin.000001',master_log_pos=781;
6.从库激活主从复制
start slave
show slave status \G 查看状态(IO和SQL都必须是yes)才算成功
如果IO是NO,可能的原因:
1.身份录入错误
2.主服务器开启了防火墙
SQL是NO,可能的原因:
sql语句出错(从库被写入数据)
MySQL主从复制延迟问题的原因及解决方案
1.主库的从库太多,导致复制延迟
2.从库硬件比主库差,导致复制延迟
3.慢SQL语句太多
4.主从复制的设置问题
5.网络延迟问题
6.主库读写压力大,导致复制延迟
主从复制的上线过程