windows:mysql主
linux:mysql從
安裝windows版mysql:
如果之前計(jì)算機(jī)中安裝過Mysql,要重新再安裝則需要:先卸載再安裝
先卸載:
通過電腦自帶卸載工具卸載Mysql(電腦管家也可以)
刪除一個(gè)mysql緩存文件C:\ProgramData\MySQL
刪除注冊(cè)表regedit中所有mysql相關(guān)配置
--重啟計(jì)算機(jī)
安裝MYSQL:
安裝時(shí)撞反,如果出現(xiàn)未響應(yīng):則重新打開D:\MySQL\MySQLServer5.5\bin\MySQLInstanceConfig.exe
圖形化客戶端:SQLyog,Navicat
如果要遠(yuǎn)程連接數(shù)據(jù)庫系冗,則需要授權(quán)遠(yuǎn)程訪問其兴。
授權(quán)遠(yuǎn)程訪問:(A->B,則再B計(jì)算機(jī)的Mysql中執(zhí)行以下命令)
GRANTALLPRIVILEGESON.TO'root'@'%'IDENTIFIEDBY'root'WITHGRANTOPTION;
FLUSHPRIVILEGES;
如果仍然報(bào)錯(cuò):可能是防火墻沒關(guān)閉:在B關(guān)閉防火墻serviceiptablesstop
實(shí)現(xiàn)主從同步(主從復(fù)制):
1.master將改變的數(shù)記錄在本地的二進(jìn)制日志中(binarylog)莺戒;該過程稱之為:二進(jìn)制日志件事
2.slave將master的binarylog拷貝到自己的relaylog(中繼日志文件)中
3.中繼日志事件,將數(shù)據(jù)讀取到自己的數(shù)據(jù)庫之中
MYSQL主從復(fù)制是異步的婉支,串行化的秉颗,有延遲
master:slave=1:n
配置:
windows(mysql:my.ini)
linux(mysql:my.cnf)
配置前痢毒,為了無誤,先將權(quán)限(遠(yuǎn)程訪問)蚕甥、防火墻等處理:
關(guān)閉windows/linux防火墻:windows:右鍵“網(wǎng)絡(luò)”,linux:serviceiptablesstop
Mysql允許遠(yuǎn)程連接(windowos/linux):
GRANTALLPRIVILEGESON.TO'root'@'%'IDENTIFIEDBY'root'WITHGRANTOPTION;
FLUSHPRIVILEGES;
主機(jī)(以下代碼和操作全部在主機(jī)windows中操作):
my.ini
[mysqld]
id
server-id=1
二進(jìn)制日志文件(注意是/不是\)
log-bin="D:/MySQL/MySQLServer5.5/data/mysql-bin"
錯(cuò)誤記錄文件
log-error="D:/MySQL/MySQLServer5.5/data/mysql-error"
主從同步時(shí)忽略的數(shù)據(jù)庫
binlog-ignore-db=mysql
(可選)指定主從同步時(shí)哪替,同步哪些數(shù)據(jù)庫
binlog-do-db=test
windows中的數(shù)據(jù)庫授權(quán)哪臺(tái)計(jì)算機(jī)中的數(shù)據(jù)庫是自己的從數(shù)據(jù)庫:
GRANTREPLICATIONslave,reload,superON.TO'root'@'192.168.2.%'IDENTIFIEDBY'root';
flushprivileges;
查看主數(shù)據(jù)庫的狀態(tài)(每次在左主從同步前,需要觀察主機(jī)狀態(tài)的最新值)
showmasterstatus;(mysql-bin.000001梢灭、107)
從機(jī)(以下代碼和操作全部在從機(jī)linux中操作):
my.cnf
[mysqld]
server-id=2
log-bin=mysql-bin
replicate-do-db=test
linux中的數(shù)據(jù)授權(quán)哪臺(tái)計(jì)算機(jī)中的數(shù)控是自己的主計(jì)算機(jī)
CHANGEMASTERTO
MASTER_HOST='192.168.2.2',
MASTER_USER='root',
MASTER_PASSWORD='root',
MASTER_PORT=3306,
master_log_file='mysql-bin.000001',
master_log_pos=107;
如果報(bào)錯(cuò):Thisoperationcannotbeperformedwitharunningslave;runSTOPSLAVEfirst
解決:STOPSLAVE;再次執(zhí)行上條授權(quán)語句
開啟主從同步:
從機(jī)linux:
startslave;
檢驗(yàn)showslavestatus\G主要觀察:Slave_IO_Running和Slave_SQL_Running夷家,確保二者都是yes;如果不都是yes敏释,則看下方的Last_IO_Error。
本次通過Last_IO_Error發(fā)現(xiàn)錯(cuò)誤的原因是主從使用了相同的server-id摸袁,檢查:在主從中分別查看serverid:showvariableslike'server_id';
可以發(fā)現(xiàn)钥顽,在Linux中的my.cnf中設(shè)置了server-id=2,但實(shí)際執(zhí)行時(shí)確實(shí)server-id=1靠汁,原因:可能是linux版Mysql的一個(gè)bug蜂大,也可能是windows和Linux版本不一致造成的兼容性問題。
解決改bug:setglobalserver_id=2;
stopslave;
setglobalserver_id=2;
startslave;
showslavestatus\G
演示:
主windows=>從
windows:
將表蝶怔,插入數(shù)據(jù)
觀察從數(shù)據(jù)庫中該表的數(shù)據(jù)