mysql 集群分区_mysql 集群与分区
一、主從集群配置
原理:主服務(wù)器建立二進(jìn)制日志,每產(chǎn)生語句或磁盤變化,寫進(jìn)日志;從服務(wù)器讀取主服務(wù)器的二進(jìn)制日志從而建立relaylog日志;然而主服務(wù)器需要授權(quán)復(fù)制賬號給從服務(wù)器來監(jiān)聽二進(jìn)制日志。
a)?建立主服務(wù)器二進(jìn)制日志:log-bin = mysql-bin (my.cnf中配置)
b)?主服務(wù)器二進(jìn)制日志的格式:binlog-format = mixed (statement|row|mixed: 可監(jiān)聽語句或行變化或混合的)
c)?建立從服務(wù)器relay日志:relay-log = mysql-relay (my.cnf中配置)
d)?為服務(wù)器建立唯一標(biāo)識符:server-id = ...199|200|201... (不同服務(wù)器ID不同,使用int類型)
e)?通過命令建立主服務(wù)器賬號密碼:grant replication client,replication slave on *.* to ‘repl’@’192.168.%.%’?identified by ‘repl’; ??(‘repl’@’192.168.%.%’為授權(quán)賬號,‘repl’為密碼)
f)?通過命令為從服務(wù)器建立連接:change master to
master_host = ‘192.168.0.199’ (主服務(wù)器IP),
master_user = ‘repl’,
master_password = ‘repl’,
master_log_file = ‘mysql-bin.000001’,
master_log_pos = 278; (show master status; 查看)
g)?命令開啟slave:start slave;
h)?查看從服務(wù)器連接詳情:show slave status;
i)?重置slave:reset slave;
j)?關(guān)閉slave:stop slave;
二、主主復(fù)制(可參考主從復(fù)制)
三、主主復(fù)制的主鍵沖突解決(兩臺服務(wù)器)
a)?一臺服務(wù)器設(shè)置(奇數(shù)):
i.?set session auto_increment_increment = 2; (自增2)
ii.?set session auto_increment_offset = 1;?(從1開始自增)
iii.?set global auto_increment_increment = 2;
iv.?set global auto_increment_offset = 1;
b)?另一臺服務(wù)器設(shè)置(偶數(shù)):
i.?set session auto_increment_increment = 2; (自增2)
ii.?set session auto_increment_offset = 2; (從2開始自增)
iii.?set global auto_increment_increment = 2;
iv.?set global auto_increment_offset = 2;
四、mysql-proxy完成負(fù)載均衡與讀寫分離
注意:均衡不是指sql語句為單位的均衡,而是以mysql連接節(jié)點(diǎn)來均衡;
a)?下載安裝mysql-proxy
b)?建立mysql代理服務(wù)器:./bin/mysql-proxy -P192.168.0.199:4040 --proxy-backend-addresses=192.168.0.199:3306 --proxy-backend-addresses=192.168.0.200:3306
c)?代理服務(wù)器連接: mysql -h 192.168.0.199 -P 4040 -uroot -p
d)?配置讀寫分離連接: ./bin/mysql-proxy
-b 192.168.0.199:3306 ?(寫)
-r 192.168.0.200:3306?(讀)
-s /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua(讀寫腳本)
五、partition分區(qū)
a)?range分區(qū):
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITION BY RANGE (id) #?使用ID來劃分范圍
(PARTITION t0 VALUES LESS THAN (1000),
PARTITION t1 VALUES LESS THAN (2000),
PARTITION t2 VALUES LESS THAN (maxvalue)) ;
#MAXVALUE?表示最大的可能的整數(shù)值
b)?list分區(qū):
CREATE TABLE?`user ` (
`id`int(11),
`name` varchar(11),
`addr_id` int(11)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITION BY LIST(addr_id) (
PARTITION beijing VALUES IN(1,2),
PARTITION hebei VALUES IN(3,4,5),
PARTITION guangdong VALUES IN(6,7),
...
);
c)?hash分區(qū)
六、事務(wù)
特性:原子性、一致性、隔離性、持久性。
a)?原子性:指某幾個(gè)sql語句的影響,要么都發(fā)生,要么都不發(fā)生。
b)?一致性:事務(wù)前后的數(shù)據(jù),保持業(yè)務(wù)上的合理一致。
c)?隔離性:在事務(wù)進(jìn)行過程中,其他事務(wù)看不到此事務(wù)的任何效果。
d)?持久性:事務(wù)一旦發(fā)生則不能取消,只能通過補(bǔ)償性事務(wù)來抵消效果。
原文:https://www.cnblogs.com/zgxblog/p/13220470.html
總結(jié)
以上是生活随笔為你收集整理的mysql 集群分区_mysql 集群与分区的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: controller中执行main方法报
- 下一篇: mysql分页查询报错,及解决