zoukankan      html  css  js  c++  java
  • 主从同步

    mysql 主从 同步原理及配置
    一、在mssql 里头实现同步镜像,只能主库用而镜像库不能同时用,而mysql 主从同步可以实现 数据库的读写分离,主库负责 update insert delete ,从库负责select 这样一来具有相应的优点:
    (1) 数据分布 (Data distribution )
    (2) 负载平衡(load balancing)
    (3) 备份(Backups)
    (4) 高可用性和容错行 High availability and failover

    二、mysql 数据库同步的实现原理:
    (1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
    (2) slave将master的binary log events拷贝到它的中继日志(relay log);
    (3) slave重做中继日志中的事件,将改变反映它自己的数据。

     
    image

    三、mysql主从同步复制的实现配置过程
    1、 条件
    两台服务器分别为
    A:192.168.1.230 【master】
    B: 192.168.1.122 【slave】
    2、步骤
    1)、 在masert 里 mysql数据库建立wei slave用来取数据库的账号密码
    账号为: net
    密码为: 123456
    权限: 赋予需要同步的数据相应权限
    2)、 把需要同步的数据库 从 主库拷贝到 从服务器里头建立(意思就是保证同步的数据库一致)
    3)、主库上面做如下操作(window 打开 my.ini 文件 liunx 系统 my.conf 数据库配置文件)
    A. 在mysqld 下添加以下代码

                   [mysqld]    
                            port=3306         
                            server-id=1       # master端ID号        
                            log-bin=log          #日志路径及文件名         
                            binlog-do-db=test         #需要同步的数据库         
                            binlog-ignore-db=mysql              #不需要同步的数据库       
                   B. 在master上位slave添加一个同步账号          
                            grant replication slave on *.* to 'net'@'192.168.1.122' identified by '123456';        
                   C. 重启mysql服务         
                      运行 show master status         
                      File  Position(同步位置)  Binlog_Do_DB(同步库)  Binlog_Ignore_DB(不需要同步的库)           
                      log.000001  424   test          mysql        
         4)、从服务器上 做如下操作 slave          
                     拷贝如下代码到 my.ini 文件 mysqld 下面         
                   server-id=2        
                   master-host=192.168.1.230          
                   master-user= net         
                   master-password= 123456        
                   master-port= 3306        
                   master-connect-retry=60        
                   replicate-do-db=test     #同步的数据库          
                   replicate-ignore-db=mysql  #被忽略的数据库       
                   B.在mysql里头执行        
                    stop slave          
                    change master to          
                    master_log_file='log.000001',          
                    master_log_pos=424          
                    改变和添加相应的配置项 注意这个地方就是主库的文件 和 位置      
                   c. start slave; 开启同步 让从库去主库里头去数据      
                   D. show slave status 查看同步配置项目状态        
    

    到此大功告成,可以修改或者插入 主库test里头的数据从库就会有相关的实时变化

    四、附加 python代码简单实现读写库分离
    import MySqldb

    读取数据库

    def selectDb(sqlStr):
        conn=MySQLdb.connect(host='192.168.1.122',user='root',passwd='',port=3306)
        conn.select_db("test")
        cur=conn.cursor()
        cur.execute(sqlStr)
        conn.commit()
        return cur
    

    执行 插入 修改 更新操作

    def executeDb(sqlStr):
        conn=MySQLdb.connect(host='192.168.1.230',user='root',passwd='',port=3306)
        conn.select_db("test")
        cur=conn.cursor()
        cur.execute(sqlStr)
        conn.commit()
        cur.close()
    cur = selectDb("select * from user")
    executeDb("insert into user(name,content) values('user','内容') ")
    for r in cur.fetchall():
        print r[1]
    

    参考:
    MySQL
    http://www.cnblogs.com/echosong/p/3540783.html
    SQL Server
    http://www.cnblogs.com/webapi/p/5283866.html

  • 相关阅读:
    商业数据分析第七记
    商务数据分析第六记
    商业数据分析第五记
    学英语
    商业数据分析第四记
    商业数据分析第三记
    商业数据分析第二记
    SQL 存储过程笔记
    Java(Android)线程池
    android ImageView 宽度设定,高度自适应
  • 原文地址:https://www.cnblogs.com/Lulus/p/7874362.html
Copyright © 2011-2022 走看看