我剛剛設置了這個。不應該有太多的工作要做。
在mysqladapter寶石它指定引擎InnoDB的,這顯然是不適合的聚類。您需要將其添加到初始化文件中:
ActiveRecord::ConnectionAdapters::Mysql2Adapter
class ActiveRecord::ConnectionAdapters::Mysql2Adapter
def create_table(table_name, options = {})
super(table_name, options.reverse_merge(:options => "ENGINE=NDB"))
end
end
這是適配器中的原件。
def create_table(table_name, options = {})
super(table_name, options.reverse_merge(:options => "ENGINE=InnoDB"))
end
另一個重要方面是你不想遷移發生在同一時間,以便在deploy.rb文件:
task :migrate, :max_hosts => 1 do
# sleep 0.5
run "cd #{release_path} && bundle exec rake db:migrate RAILS_ENV=#{rails_env}"
end
最大承載防止帽並行運行的遷移。這很重要,因爲您不希望羣集同時運行create table類型的事物。甚至可能值得推遲我已經評論過上面,只是爲了一點額外的安全。
另一個關鍵方面。不要忘記設置:
DataMemory =
IndexMemory =
默認值是極低的。通常索引大小是DataMemory值/ 5-10
還有一個陷阱到目前爲止,我所看到的是在你的mysqld節點請務必設置:
ndb_autoincrement_prefetch_sz
到至少100。否則批量插入會永遠佔用。默認值是1。
編輯:
ndb_autoincrement_prefetch_sz
離開這個變量完全孤獨。不要設置它。它可能會導致自動增量索引在集羣上變得不同步。調試是一場噩夢。
此外請確保您的NDB節點不會與NDB MGM節點在同一臺服務器上運行。
快樂編碼。
廣告
這是一個很好的https://github.com/taskrabbit/makara 它支持多主機,並具有故障轉移 –
@SamD感謝您的建議。我已經與馬卡拉搏鬥了兩天了,而且我還沒有成功完成多主設置。您是否真的在該場景中使用過它? – RonU
我從來沒有做過Makara tbh的高手。我做了主從。它在支持主 - 碩士的文檔中說過,因此我建議 –