• mysql数据库主从同步读写分离(一)主从同步


    1.mysql数据库主从同步读写分离

          1.1.主要解决的生产问题

           1.2.原理

        

      a、为什么需要读写分离?

      一台服务器满足不了访问需要。数据的访问基本都是2-8原则。

      b、怎么做?

        不往从服务器去写了,那就要主上写的操作都要同步到从(主从同步)

            (1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

            (2) slavemasterbinary log events拷贝到它的中继日志(relay log)

            (3) slave重做中继日志中的事件,将更改应用到自己的数据上。

        把读的请求同步到从,把写的请求分发的主。(读写分离) 技术选型,myproxy

    2.主从同步

      2.1.准备两台数据库服务器

            这里在一台计算机上模拟开启两台数据库服务,主从服务器配置好后如下图:

            

             1.准备主服务器,并输出日志(方便定位问题),步骤如下:

                 a.拷贝已经按装好的数据库安装文件,并改名为 MySQL Server 5.5_master,拷贝完成后

                   

                 b.找到my.ini文件修改端口号、安装路径、数据存储路径等

                 

        c.拷贝数据(如果不拷贝数据无法登录),登录用户等相关数据拷贝到b步骤中设置好的数据路径中,注意要在原始数据的my.ini中查看数据存放位置,当前查看情况如图所示:

        

             d.安装及启动:

       在该路径下D:MySQLMySQL Server 5.5_masterin,执行如下命令:

              mysqld --install MySQLXY --defaults-file="D:MySQLMySQL Server 5.5_mastermy.ini"   安装服务

             注意:MySQLXY是服务名称,可以任意取名称

                      defaults-file="D:MySQLMySQL Server 5.5_mastermy.ini"是主数据库配置文件地址

             net start MySQLXY 启动服务

             sc delete MySQLXY  删除服务

        安装成功后,可以在任务管理其中查看该服务:

      

          e.在客户端中连接该数据

          

         如可以正常连接,并使用则主数据看准备完成。当然在实际生产中主数据库就是我们平时正常的数据库。

          2.准备从服务器,并输出日志(方便定位问题),步骤如配置主服务器一样

     2.2.master服务器配置

       在2.1中我们已经准备好了两台数据库服务器,现在将其中一台配置成master服务器,及主服务器,步骤如下:

                 a. 修改master方的mysql.ini

                   log-bin=mysql-bin  #见备注

                   server-id=1  #服务id,一个集群中必须保证唯一

         innodb_flush_log_at_trx_commit=1 #暂时不配置

         sync_binlog=1 #暂时不配置

         binlog_ignore_db=mysql #暂时不配置

         binlog_checksum=none #暂时不配置

            备注: log-bin=mysql-bin,解释(来自百度):

      bin-log日志的定义和作用我就直接百度过来了,也很好理解的。

      基本定义:二进制日志,也成为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中;

      作用:可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、MySQL的复制(主主数据库的复制、主从数据库的复制)

      文件位置:默认存放位置为数据库文件所在目录下

      文件的命名方式: 名称为hostname-bin.xxxxx (重启mysql一次将会自动生成一个新的binlog)

      状态的查看:mysql> show variables like '%log_bin%';

      以上这些都是百度复制过来的,我们看完后也很好理解了,bin-log日志也就是二进制日志,只要数据发生改变(增删改),都是记录到日志里。所以我们可以通过bin-log日志进行数据恢复。

                 b.重启master服务,登录,查看data文件如下图说明配置成功

                  

                c.授权savle服务器的使用的账号及权限

                      假设:

                      master主服务器: 192.168.1.101

                      slave从服务器     :  192.168.1.102

                1) 授权给slave数据库服务器192.168.1.102(master用户,只对slave服务器开放)

                    语法为:GRANT REPLICATION SLAVE ON *.* to '用户名'@'192.168.0.102' identified

                            by ‘密码’;

                     Mysql>  GRANT REPLICATION SLAVE ON *.* to 's1'@'192.168.0.102'identified  by 'admin';

                             参数说明:

                                      s1:slave连接master使用的账号

                                      IDENTIFIED BY 'admin' :slave连接master使用的密码

                                      192.168.0.102:slave IP地址

                 2)查询主数据库状态

                Mysql> show master status;

             

                 记录 File  和 Position的值,在slave端使用。

    2.3.从数据库slave配置

       步骤如下:

      a.修改slave服务器的配置文件my.iniserver-id = 1修改为 server-id = 10,并确保这个 ID没有被别的MySQL服务所使用。

      b.启动slave服务器,登录

           c.slave,配置master链接信息 (执行语句)

               1) 配置

                Mysql>  change master to

                       master_host='192.168.1.101',   #master IP

                       master_user='s1',          #master数据库通过GRANT授权的账号

                       master_password='admin',         #master数据库通过GRANT授权的密码

                       master_port=3307,              #master数据库的端口号

                       master_log_file='mysql-bin.000001', #master数据库中通过show master status显示的File名称

                       master_log_pos=1144     #master数据库的通过show master status显示的Position的值,表示从1144操作的步骤开始执行同步

                2) (重启)连接

                       Mysql> start slave;

                3)主从同步检查

                show slave status

                其中Slave_IO_Running  Slave_SQL_Running 的值都必须为YES,才表明状态正常。

      d.测试

              1) 在master上,建库、建表、添加数据

              2) 刷新slave库,记录也存在

    由此,整个MySQL主从复制的过程就完成了,接下来,我们进行MySQL读写分离的安装与配置。

  • 相关阅读:
    eclipse下切换svn用户
    Netty实现服务端客户端长连接通讯及心跳检测
    Spring Batch系列总括(转载)
    SQL中的Null深入研究分析
    MySQL报错“1366
    Memcache学习php完整一例
    Memcache学习笔记
    递归和迭代区别
    解决textarea 输出有空格问题
    解决mysql安装出现error Nr.1045问题
  • 原文地址:https://www.cnblogs.com/newAndHui/p/8505490.html
Copyright © 2020-2023  润新知