MySQL优化---主从复制

 1、主从复制概念

  

  影响MySQL-A数据库的操做,在数据库执行后,都会写入本地的日志系统A中。假设,实时的将变化了的日志系统中的数据库事件操做,在MYSQL-A的3306端口,经过网络发给MYSQL-B。MYSQL-B收到后,写入本地日志系统B,而后一条条的将数据库事件在数据库中完成。 那么,MYSQL-A的变化,MYSQL-B也会变化,这样就是所谓的MYSQL的复制,即MYSQL replication。node

   在上面的模型中,MYSQL-A就是主服务器,即master,MYSQL-B就是从服务器,即slave。mysql

  日志系统A,其实它是MYSQL的日志类型中的二进制日志,也就是专门用来保存修改数据库表的全部动做,即bin log。【注意MYSQL会在执行语句以后,释放锁以前,写入二进制日志,确保事务安全】linux

     日志系统B,并非二进制日志,因为它是从MYSQL-A的二进制日志复制过来的,并非本身的数据库变化产生的,有点接力的感受,称为中继日志,即relay log。sql

  能够发现,经过上面的机制,能够保证MYSQL-A和MYSQL-B的数据库数据一致,可是时间上确定有延迟,即MYSQL-B的数据是滞后的。数据库

   【即使不考虑什么网络的因素,MYSQL-A的数据库操做是能够并发的执行的,可是MYSQL-B只能从relay log中读一条,执行下。所以MYSQL-A的写操做很频繁,MYSQL-B极可能跟不上。】安全

2、解决问题

  数据如何不被丢失服务器

  备份网络

  读写分离并发

  数据库负载均衡负载均衡

  高可用

3、主从复制原理

   依赖于二进制日志,binary-log.

   二进制日志中记录引发数据库发生改变的语句

   Insert 、delete、update、create table

 

主机全部写的数据都会生成二进制SQL日志执行文件,从机只须要将SQL日志执行文件获取到,而后进行数据同步便可

4、MySQL环境搭建(一主一从相同操做

  MySQL-master:192.168.33.135

  MySQL-slave:192.168.33.136

一、 链接到虚拟机,在/usr/local下新建一个文件夹为mysql,将tar包上传到此目录当中

  

二、切换到/usr/local/mysql目录,进行拆包   tar -xvf MySQL-5.5.44-1.linux2.6.x86_64.rpm-bundle.tar

  

三、 安装mysql客户端

  rpm -ivh MySQL-client-5.5.44-1.linux2.6.x86_64.rpm   此命令会报错

  

  rpm -ivh MySQL-client-5.5.44-1.linux2.6.x86_64.rpm --nodeps

  

四、 安装服务端    rpm -ivh MySQL-server-5.5.44-1.linux2.6.x86_64.rpm --nodeps

  

  安装服务端,若是当前虚拟机有mysql报错,出现版本冲突  yum remove mysql-libs  而后从新安装服务端

  

五、 检测是否安装客户端和服务器    rpm -qa|grep -i mysql

  

六、 启动mysql服务   service mysql start

  中止服务:service mysql stop

  重启服务:service mysql restart

  

七、 mysql默认安装完毕后是没有密码的 更改密码mysqladmin -uroot -p password '新密码'

  

八、 登录mysql服务器    mysql -uroot -p 

  

九、 SQLyog去链接虚拟机mysql  

  链接报1130错误,没有权限进行远程链接,更改权限为%

  

  ①登录mysql服务器   

    

  ②切换到mysql数据库下   use mysql;

    

  ③查询当前用户表中用户名和host信息,select user,host from user;  

  发现host为127.0.0.1表明只能本机使用root ,外界用不了 

    

  ④更改权限,将host改成%       update user set host='%' where user='root'; 

  若是报ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY’ 不用理会  

    

  ⑤再次查看 权限已更改   select user,host from user;   

    

  ⑥刷新权限 flush privileges;  

    

  ⑦退出客户端,重启mysql   service mysql restart

    

  ⑧使用SQLyog去链接

    

5、搭建主从复制

一、 配置节点信息

  找到my.cnf配置文件,rpm方式安装在/etc下没有该文件,mysql默认启动的时候会加载/usr/share/mysql/my-medium.cnf,只须要将这个文件复制到/etc下更名为my.cnf便可

二、配置主节点

  ①执行 cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

    

  ②编辑 vi /etc/my.cnf文件

  server-id = 保证惟一,建议配置成ip地址第四位
  log-bin=mysql-bin 为了让主机生成二进制SQL日志执行文件

    

  ③重启mysql服务器      service mysql restart

    

  ④查看当前server-id是否生效,使用sqlyog工具查看,若是返回值为0或者1表明是默认的   SHOW VARIABLES LIKE 'server_id'

    

  ⑤查看当前主服务器状态,若是看到的不是null表明成功~   SHOW MASTER STATUS

    

三、配置从节点

  ①执行 cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

    

  ②编辑 vi /etc/my.cnf文件

  server-id = 22
  log-bin=mysql-bin
  binlog_do_db=test

    

  ③重启mysql服务器   service mysql restart

    

  ④查看当前server-id是否生效,使用sqlyog工具查看,若是返回值为0或者1表明是默认的       SHOW VARIABLES LIKE 'server_id'

    

四、设置服务器读取权限

  主服务器建立一个帐号,将帐号分配从服务器,从服务器拿到该帐号而后才能够执行同步数据操做
  GRANT REPLICATION SLAVE ON *.* TO 'zheng'@'%' IDENTIFIED BY 'zheng';

  

五、 从服务器执行同步

  从服务器执行同步操做,使用主服务器生成的权限帐号,将二进制文件同步

   ①设置同步

  根据主服务器ip地址,生成的权限帐号的用户名和密码以及二进制文件名称还有文件大小进行同步
  CHANGE MASTER TO MASTER_HOST='192.168.33.135',MASTER_USER='zheng',MASTER_PASSWORD='zheng',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=241;

    

  ②开启同步  START SLAVE

    

六、 mysql环境卸载

  rpm -qa|grep -i mysql   查看安装状况

  

  卸载命令:  

    rpm -e MySQL-server-版本号
    rpm -e MySQL-client-版本号

  查找mysql目录:find / -name mysql

    

  删除 rm -rf xxx/mysql

相关文章
相关标签/搜索