一、在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重做中继日志中的事件,将改变反映它自己的数据。

  

三、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]

最新文章

  1. css中vw,vh单位对于UC的兼容性问题
  2. 问题:https与http有什么区别啊?
  3. Visual Studio 创建WebServer
  4. Django基础,Day10 - template 模板引擎与路径设置
  5. powerDesigner 报Unable to connect SQLState=08004 解决方法
  6. jQuery基础之(三)jQuery功能函数前缀及与window.onload冲突
  7. 【Android代码片段之六】Toast工具类(实现带图片的Toast消息提示)
  8. PHP代码加密 -- php_strip_whitespace函数,去掉源代码所有注释和空格并显示在一行
  9. [置顶] asp.net(c#)中相对路径(虚拟路径)和物理磁盘路径的转换
  10. JS 获取网页的宽高
  11. 201521123084 《Java程序设计》第2周学习总结
  12. metasploit无法连接postgresql
  13. 20165314 [第二届构建之法论坛] 预培训心得(Java版)
  14. iOS设置截图背景图片透明
  15. Docker学习系列之一——安装篇
  16. skynet记录2:模块简介
  17. 昨天看了一个大神的fix类,清晰了然
  18. GitHub 代码上传
  19. f5单台安装配置
  20. 在Scrapy项目【内外】使用scrapy shell命令抓取 某网站首页的初步情况

热门文章

  1. Ubuntu 14.04 64bit下Caffe + Cuda6.5/Cuda7.0 安装配置教程
  2. 手脱ASProtect v1.23 RC1(无Stolen Code)
  3. [解决] Error Code: 1044. Access denied for user 'root'@'%' to database
  4. 什么叫TLD、gTLD、nTLD、ccTLD、iTLD 以及几者之间的关系
  5. [洛谷P2051] [AHOI2009]中国象棋
  6. Linux 文件编码问题及iconv命令
  7. spoj104 highways 生成树计数(矩阵树定理)
  8. 高精度模板_C++
  9. JQuery-Ajax后台提交数据与获取数据 Java代码
  10. LeetCode 19 Valid Parentheses