您的位置:首页 > 数据库 > MySQL

探讨学习MySQL主从复制

2018-03-14 15:21 246 查看
作为一名PHP开发工程师,我想不管是在面试中还是在实际工作当中,我们不仅仅每天只是增删改查,if....else...那一套,我们应更深层的去学习PHP,学习MySQL,学习nginx ..........
    那么在此仅作为学习MySQL主从复制分享一点点心得吧(往往我们听起来很高大上的东西,动手做起来其实简单的很,难则难在基本功)
   首先我们应该在学习之前应掌握其原理所在,那么主从复制的原理,通俗来理解就是MySQL主服务器做什么事的同时从服务器也做该同样的事,两者保持一致,例如说:主服务说1加1等于2,那从服务就要同样说1加1等于2,但是与此同时呢,二者还需要建立一定的联系,才能进行握手通信,进行主从复制,也就是需要打开MySQL的二进制日志 binlog ,主服务器每次执行都会在binlog产生日志,从服务器相当于把主服务器的binlog读取过来,转化为自己可用的文件在自己的机器上执行一遍,(主从的执行间隔大约几十毫秒的样子,如果超过一秒基本是不能忍的),这样主从复制就完成了
  下面就配置主服务器binlog; 
   一,  
  找到自己的数据库配置文件(一般是/etc/my.cnf ,当然要结合自己搭建环境的实际情况),
  并开启二进制日志
  log-bin=mysql-bin ,
接下来就是,二台服务器要建立起来联系,互相通信,那么就要为从服务器设置一个登陆主服务器的用户密码:

进入MySQL命令行执行:    
mysql>grant replication slave on *.* to‘用户名’@’从服务器ip’  identified by ‘密码’;
刷新权限:     mysql>flush privileges;
二,
 查看主服务器二进制文件名与位置   
mysql>show master status;



在从服务器告知主服务器二进制文件名与位置,故在从服务器执行 mysql>change master to >master_host=’xxx.xxx.xx.xx’,>master_user=’用户名’,>master_password=’密码’,>master_log_file=’二进制binlog文件名’,>master_log_pos=xxx;                    #binlog文件位置偏移处
至此,就完成了主从配置
三,接下来就是测试是否成功,mysql>slave start;   #开启复制mysql>show slave status\g   #查看主从复制是否配置成功


(若有异常,此处会抛出),在我实验过程中,抛出了权限拒绝(root用户),解决方法是因为MySQL用户表中每个用户的权限是不一样的,故此指定MySQL登录用户,问题解决,当看到Slave_IO_Running: YES、Slave_SQL_Running: YES 时,严重祝贺你一切顺利完成四,进行实际测试,先登陆主MySQL            mysql>show databases;            

            再登陆从MySQL            mysql>show databases;            

            -----------------------------------------------------            然后在主MySQL操作sql:            mysql>create database aa;            mysql>use aa;            mysql>create table tab1(id int auto_increment,name varchar(10),primary key(id));            mysql>show databases;            mysql>show tables;            

            在从服务器MySQL操作查看:            mysql>show databases;            mysql>show tables;            


果然多了,一个aa库,并且在aa中有一张tab1表,与主MySQL保持了一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MySQL 数据库 编程 PHP