多數(shù)據(jù)庫(kù)中心方案避免命名沖突:數(shù)據(jù)中心A和數(shù)據(jù)中心B各自有自己的數(shù)據(jù)庫(kù),但為了避免命名沖突炸卑,一個(gè)中心的數(shù)據(jù)采用奇數(shù)編號(hào),另外一個(gè)采用偶數(shù)(或者等中心數(shù)大于2的時(shí)候,對(duì)某一大于中心總數(shù)的數(shù)字取模)巨坊。如果從MySQL以及絕大多數(shù)的數(shù)據(jù)庫(kù)角度,這個(gè)操作非常方便此改。簡(jiǎn)述如下:
假設(shè)A和B在初始時(shí)候的數(shù)據(jù)是一樣的趾撵,最大編號(hào)(auto_increment的上一次給出值)是401。這個(gè)時(shí)候共啃,只要簡(jiǎn)單的把兩個(gè)數(shù)據(jù)庫(kù)的auto_increment_increment設(shè)成2占调,
auto_increment_increment = 2
并且把A的數(shù)據(jù)庫(kù)的表的AUTO_INCREMENT值設(shè)成一個(gè)比現(xiàn)在大得多的一個(gè)奇數(shù),比如501移剪,B設(shè)成502就好了究珊。跳一下的好處是,可以不用停機(jī)纵苛,在一個(gè)機(jī)房操作完成的時(shí)候有足夠的時(shí)間去操作第二個(gè)機(jī)房(只要那個(gè)機(jī)房的ID增長(zhǎng)不要碰到502就好了)剿涮。從此A的id就按照503,505向上增長(zhǎng)攻人,而B(niǎo)的id開(kāi)始按照502取试,504增長(zhǎng)。
另外有一種直接使用GUID作為id的方案怀吻,個(gè)人覺(jué)得太重了瞬浓。
這個(gè)方案做ID切分以后,就為master-master replication做好了準(zhǔn)備蓬坡。之后兩個(gè)中心可以相互實(shí)時(shí)互相復(fù)制了猿棉。開(kāi)起來(lái)也很美。
但問(wèn)題是屑咳,在大型系統(tǒng)里面萨赁,就算有再成熟的技術(shù),簡(jiǎn)單的永遠(yuǎn)勝過(guò)復(fù)雜的方案兆龙。對(duì)于master-master的復(fù)制杖爽,我現(xiàn)在依然心有余悸。我的心理障礙就是因?yàn)橐郧凹夹g(shù)支持的時(shí)候做過(guò)一個(gè)case,就是因?yàn)閃indows 2000里面的Domain Controller可以master-master的復(fù)制掂林,原理上是一個(gè)有問(wèn)題臣缀,其他的可以把好的信息傳過(guò)來(lái),但實(shí)際上泻帮,一個(gè)小bug或者一個(gè)不小心的配置精置,可以讓一臺(tái)主域控制器的錯(cuò)誤拖垮其他的所有控制器。master-master的方案在多于2個(gè)節(jié)點(diǎn)的時(shí)候锣杂,也需要額外的設(shè)計(jì)脂倦。
以上內(nèi)容參見(jiàn):http://home.wangjianshuo.com/cn/cat_startup.html
方法一:
查看 auto_increment_increment和auto_increment_offset
mysql> SHOW VARIABLES LIKE 'auto_inc%';
設(shè)置auto_increment_increment自增步長(zhǎng)為n
mysql> SET @@auto_increment_increment=n;
設(shè)置auto_increment_offset自增開(kāi)始數(shù)字為m
mysql> SET @@auto_increment_offset=m;
以上方法不生效,或重啟mysql后元莫,又變回來(lái)赖阻。使用方法二更改全局變量
方法二:
用vi編輯器打開(kāi)配置文件:
$vi /etc/my.cnf
找到并設(shè)置
auto_increment_increment=1;