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]