linux mysql主主复制_MySQL主从复制与主主复制
1、簡(jiǎn)介
MySQL作為世界上使用最為廣泛的數(shù)據(jù)庫(kù)之一,免費(fèi)是其原因之一。但不可忽略的是它本身的功能的確很強(qiáng)大。隨著技術(shù)的發(fā)展,在實(shí)際的生產(chǎn)環(huán)境中,由單臺(tái)MySQL數(shù)據(jù)庫(kù)服務(wù)器不能滿足實(shí)際的需求。此時(shí)數(shù)據(jù)庫(kù)集群就很好的解決了這個(gè)問(wèn)題了。采用MySQL分布式集群,能夠搭建一個(gè)高并發(fā)、負(fù)載均衡的集群服務(wù)器(這篇文章暫時(shí)不涉及)。在此之前我們必須要保證每臺(tái)MySQL服務(wù)器里的數(shù)據(jù)同步。數(shù)據(jù)同步我們可以通過(guò)MySQL內(nèi)部配置就可以輕松完成,主要有主從復(fù)制和主主復(fù)制。
2、環(huán)境說(shuō)明
兩臺(tái)Linux虛擬主機(jī)
Linux版本CentOS 6.6、MySQL 5.5
ip:192.168.95.11、192.168.95.12
3、主從復(fù)制
3.1、MySQL
已經(jīng)安裝好,并且沒有任何數(shù)據(jù)
3.2、配置文件
一般Linux中的MySQL配置文件都在/etc/my.cnf(windows中的配置文件為mysql.ini)
log-bin=mysql-bin 開啟二進(jìn)制日志
注意:二進(jìn)制日志必須開啟,因?yàn)閿?shù)據(jù)的同步實(shí)質(zhì)上就是其他的MySQL數(shù)據(jù)庫(kù)服務(wù)器將這個(gè)數(shù)據(jù)變更的二進(jìn)制日志在本機(jī)上再執(zhí)行一遍。
192.168.95.11? 為主數(shù)據(jù)庫(kù)服務(wù)器
192.168.95.12? 為從數(shù)據(jù)庫(kù)服務(wù)器
3.3、開始構(gòu)建主從復(fù)制
第一步:
在192.168.95.11中創(chuàng)建一個(gè)192.168.95.12主機(jī)中可以登錄的MySQL用戶
用戶:mysql12
密碼:mysql12
mysql>GRANT REPLICATION SLAVE ON *.* TO ‘mysql12’@’192.168.95.12’ IDENTIFIED BY ‘mysql12’;
mysql>FLUSH PRIVILEGES;
第二步:
查看192.168.95.11MySQL服務(wù)器二進(jìn)制文件名與位置
mysql>SHOW MASTER STATUS;
第三步:
告知二進(jìn)制文件名與位置
在192.168.95.12中執(zhí)行:
mysql>CHANGE MASTER TO
>MASTER_HOST=’192.168.95.11’,
>MASTER_USER=’mysql12’,
>MASTER_PASSWORD=’mysql12’,
>MASTER_LOG_FILE=’mysql-bin.000048’,
>MASTER_LOG_POS=432;
完成主從復(fù)制配置
3.4、測(cè)試主從復(fù)制
在192.168.95.12中
mysql>SLAVE START;? #開啟復(fù)制
mysql>SHOW SLAVE STATUS\G? #查看主從復(fù)制是否配置成功
當(dāng)看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明狀態(tài)正常
實(shí)際測(cè)試:
--登陸192.168.95.11主MySQL
mysql>SHOW DATABASES;
--登陸192.168.95.12從MySQL
mysql>SHOW DATABASES;
-----------------------------------------------------
192.168.95.11主MySQL操作:
mysql>create database aa;
mysql>use aa;
mysql>create table tab1(id int auto_increment,name varchar(10),primary key(id));
mysql>show databases;
mysql>show tables;
192.168.95.12從MySQL操作:
mysql>show databases;
mysql>show tables;
由上面兩個(gè)結(jié)果圖可得知,兩主機(jī)達(dá)到了數(shù)據(jù)同步。主從復(fù)制的配置就是如此的簡(jiǎn)單。
4、MySql主主復(fù)制
4.1、實(shí)現(xiàn)原理
主主復(fù)制即在兩臺(tái)MySQL主機(jī)內(nèi)都可以變更數(shù)據(jù),而且另外一臺(tái)主機(jī)也會(huì)做出相應(yīng)的變更。聰明的你也許已經(jīng)想到該怎么實(shí)現(xiàn)了。對(duì),就是將兩個(gè)主從復(fù)制有機(jī)合并起來(lái)就好了。只不過(guò)在配置的時(shí)候我們需要注意一些問(wèn)題,例如,主鍵重復(fù),server-id不能重復(fù)等等。
4.2、配置文件
--192.168.95.11
server-id=11? #任意自然數(shù)n,只要保證兩臺(tái)MySQL主機(jī)不重復(fù)就可以了。
log-bin=mysql-bin? #開啟二進(jìn)制日志
auto_increment_increment=2? #步進(jìn)值auto_imcrement。一般有n臺(tái)主MySQL就填n
auto_increment_offset=1? #起始值。一般填第n臺(tái)主MySQL。此時(shí)為第一臺(tái)主MySQL
binlog-ignore=mysql? #忽略mysql庫(kù)【我一般都不寫】
binlog-ignore=information_schema? #忽略information_schema庫(kù)【我一般都不寫】
replicate-do-db=aa? #要同步的數(shù)據(jù)庫(kù),默認(rèn)所有庫(kù)
--192.168.95.12
server-id=12
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=aa
配置好后重啟MySQL
4.3、開始構(gòu)建主主復(fù)制
因?yàn)橹髦鲝?fù)制是兩個(gè)主從復(fù)制組合一起,所以我就接著上面主從復(fù)制接著配置。
第一步:
在192.168.95.12中創(chuàng)建一個(gè)192.168.95.11主機(jī)中可以登錄的MySQL用戶
用戶:mysql11
密碼:mysql11
mysql>GRANT REPLICATION SLAVE ON *.* TO ‘mysql11’@’192.168.95.12’ IDENTIFIED BY ‘mysql11’;
mysql>FLUSH PRIVILEGES;
第二步:
在192.168.95.12查看二進(jìn)制日志名和位置
mysql>show master status;
第三步:
告知二進(jìn)制文件名與位置
在192.168.95.11中執(zhí)行:
mysql>CHANGE MASTER TO
MASTER_HOST=’192.168.95.12’,
MASTER_USER=’mysql11’,
MASTER_PASSWORD=’mysql11’,
MASTER_LOG_FILE=’mysql-bin.000084’,
MASTER_LOG_POS=107;
完成主主復(fù)制配置
4.4、測(cè)試主主復(fù)制
分別開啟slave start;
mysql>SHOW SLAVE STATUS\G? #查看主從復(fù)制是否配置成功
192.168.95.11
192.168.95.12
當(dāng)看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明狀態(tài)正常
測(cè)試:
--192.168.95.11
mysql>use aa;
mysql>select*from tab1;
tab1無(wú)數(shù)據(jù)
--192.168.95.12
mysql>use aa;
mysql>select*from tab1;
tab1無(wú)數(shù)據(jù)
--192.168.95.11插入數(shù)據(jù)
mysql>insert into tab1 (name) value(‘11’),(‘11’),(‘11’);
--192.168.95.12插入數(shù)據(jù)
mysql>insert into tab1 (name) value(‘22’),(‘22’),(‘22’);
查看數(shù)據(jù):
兩個(gè)主機(jī)數(shù)據(jù)結(jié)果一樣!
主主復(fù)制配置成功!
5、注意事項(xiàng)
1、主主復(fù)制配置文件中auto_increment_increment和auto_increment_offset只能保證主鍵不重復(fù),卻不能保證主鍵有序。
2、當(dāng)配置完成Slave_IO_Running、Slave_SQL_Running不全為YES時(shí),show slave status\G信息中有錯(cuò)誤提示,可根據(jù)錯(cuò)誤提示進(jìn)行更正。
3、Slave_IO_Running、Slave_SQL_Running不全為YES時(shí),大多數(shù)問(wèn)題都是數(shù)據(jù)不統(tǒng)一導(dǎo)致。
常見出錯(cuò)點(diǎn):
1、兩臺(tái)數(shù)據(jù)庫(kù)都存在db數(shù)據(jù)庫(kù),而第一臺(tái)MySQL db中有tab1,第二臺(tái)MySQL db中沒有tab1,那肯定不能成功。
2、已經(jīng)獲取了數(shù)據(jù)的二進(jìn)制日志名和位置,又進(jìn)行了數(shù)據(jù)操作,導(dǎo)致POS發(fā)生變更。在配置CHANGE MASTER時(shí)還是用到之前的POS。
3、stop slave后,數(shù)據(jù)變更,再start slave。出錯(cuò)。
終極更正法:重新執(zhí)行一遍CHANGE MASTER就好了。
總結(jié)
以上是生活随笔為你收集整理的linux mysql主主复制_MySQL主从复制与主主复制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: as工程放到源码编译_关于AS高版本SD
- 下一篇: mysql没法安装_mysql没法使用、