1、在mssql 里头实现同步镜像,只能主库用而镜像库不能同时用,而mysql 主从同步能够实现 数据库的读写分离,主库负责 update insert delete ,从库负责select 这样一来具备相应的优势:
(1) 数据分布 (Data distribution )
(2) 负载平衡(load balancing)
(3) 备份(Backups)
(4) 高可用性和容错行 High availability and failoverpython
(1) master将改变记录到二进制日志(binary log)中(这些记录叫作二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重作中继日志中的事件,将改变反映它本身的数据。mysql
两台服务器分别为web
A:192.168.1.230 【master】sql
B: 192.168.1.122 【slave】数据库
1)、 在masert 里 mysql数据库创建wei slave用来取数据库的帐号密码服务器
帐号为: netide
密码为: 123456fetch
权限: 赋予须要同步的数据相应权限spa
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里头的数据从库就会有相关的实时变化
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]