{"id":447,"date":"2005-08-08T17:47:04","date_gmt":"2005-08-08T07:47:04","guid":{"rendered":"http:\/\/www.flamingspork.com\/blog\/?p=447"},"modified":"2005-08-08T17:47:04","modified_gmt":"2005-08-08T07:47:04","slug":"ndb_mgmd-restart","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2005\/08\/08\/ndb_mgmd-restart\/","title":{"rendered":"ndb_mgmd restart"},"content":{"rendered":"<p>One of the things I&#8217;m working on is adding the ability to use ndb_mgm to issue a restart command to ndb_mgmd (i.e. from a management client, get management servers to restart). At the moment, you have to go and shut it down then start it yourself.<\/p>\n<p>So why would you ever want to restart a management server? Well, bugs aren&#8217;t really a reason &#8211; I&#8217;ve never heard of anyone having to restart the management server &#8220;just to get something to work again&#8221;.<\/p>\n<p>The reason is online configuration upgrades.<\/p>\n<p>There are a bunch of parameters you can change without having to restart your cluster. We call it a &#8220;rolling upgrade&#8221; as it&#8217;s the same procedure as upgrading one compatible version to another.<\/p>\n<p>The whole procedure would be really easy if we only ever had one management server (which is what a lot of people have anyway &#8211; you only ever need a mgm server to have a node join the cluster).<\/p>\n<p>It&#8217;s also tricky because you don&#8217;t want management servers up and serving different configurations. This would tend to be bad and never lead to hugs and puppies.<\/p>\n<p>For supporting more dramatic configuration changes (e.g. add\/drop node) we&#8217;ll be needing configuration locks and enforcing that everyone agrees on the config they&#8217;re serving out.<\/p>\n<p>There exists some code from a previous effort a few years ago. So I&#8217;m having a look through it and trying to work out the state of everything. There seems to be a bit of bitrot and I&#8217;m trying to work ouf if anything is worth using.<\/p>\n<p>The approach that I&#8217;ve come up with is to have a &#8220;single user mode&#8221; for the mgm server &#8211; i.e. nobody but one connection can do anything. This is where we&#8217;d do updates and changes before unlocking.<\/p>\n<p>I wasn&#8217;t really caring about notifying ndbd about changes as the way you do things atm is to restart each ndbd and they then pick up the changes.<\/p>\n<p>Otherwise, we really want a &#8220;this parameter changed&#8221; rather than &#8220;there&#8217;s a new configuration&#8221;.<\/p>\n<p>So, the &#8216;mgm restart&#8217; thing is really going to be implemented as &#8220;config reload&#8221; &#8211; getting the mgmds to stop and restart in the right order and so there is never more than one version of the configuration is being served at a time.<\/p>\n<p>hrrm&#8230; back to the code to figure out what&#8217;s going on with this older stuff.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the things I&#8217;m working on is adding the ability to use ndb_mgm to issue a restart command to ndb_mgmd (i.e. from a management client, get management servers to restart). At the moment, you have to go and shut &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2005\/08\/08\/ndb_mgmd-restart\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[14],"tags":[],"class_list":["post-447","post","type-post","status-publish","format-standard","hentry","category-mysql"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-7d","jetpack-related-posts":[{"id":894,"url":"https:\/\/www.flamingspork.com\/blog\/2007\/09\/20\/ndb_mgmd-on-win32-an-alpha\/","url_meta":{"origin":447,"position":0},"title":"ndb_mgmd on Win32 (an Alpha)","author":"Stewart Smith","date":"2007-09-20","format":false,"excerpt":"So, here is an Alpha quality port of the MySQL Cluster management server to Win32 based on the current MySQL 5.0 tree. This isn't going into 5.0, so don't expect to ever have that. This isn't going into 5.1 either, so don't expect it there. It'll go into some future\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":712,"url":"https:\/\/www.flamingspork.com\/blog\/2006\/06\/09\/matt-on-ruby-resource-management-and-why-you-can-do-it-elsewhere\/","url_meta":{"origin":447,"position":1},"title":"Matt on Ruby resource management (and why you can do it elsewhere)","author":"Stewart Smith","date":"2006-06-09","format":false,"excerpt":"ERROR: The requested URL could not be retrieved (yeah, site didn't work when i clicked on it from RSS). Matt uses this bit of ruby code to demonstrate that here you can't ever not close the file handle: File.open('something.txt') do |fd| # Manipulate the file through 'fd' end # File\u2026","rel":"","context":"In &quot;General&quot;","block_context":{"text":"General","link":"https:\/\/www.flamingspork.com\/blog\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":718,"url":"https:\/\/www.flamingspork.com\/blog\/2006\/06\/22\/unintelligent-design-of-evolution\/","url_meta":{"origin":447,"position":2},"title":"Unintelligent Design of Evolution","author":"Stewart Smith","date":"2006-06-22","format":false,"excerpt":"let's see... evolution-2.6 process 383MB RES, evolution-data-server, 130MB RES... That's\u00c2\u00a0 513MB. WHY OH WHY DOES EVOLUTION HATE ME? (and this is on a good day) Currently I have to quit and restart evolution every day. it just eats too much memory.","rel":"","context":"In &quot;GNOME&quot;","block_context":{"text":"GNOME","link":"https:\/\/www.flamingspork.com\/blog\/category\/gnome\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":805,"url":"https:\/\/www.flamingspork.com\/blog\/2007\/03\/17\/ndb-online-add-node-progress-or-rather-testing-it\/","url_meta":{"origin":447,"position":3},"title":"NDB Online Add Node Progress (or rather, testing it)","author":"Stewart Smith","date":"2007-03-17","format":false,"excerpt":"So, the sitch as of today: Added ndb_mgm_set_configuration() call to the mgmapi - which is not-so-casually evil API call that sends a packed ndb_mgm_configuration object (like what you get from ndb_mgm_get_configuration) to the management server, who then resets its lists of nodes for event reporting and for ClusterMgr and starts\u2026","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2229,"url":"https:\/\/www.flamingspork.com\/blog\/2010\/12\/13\/persistent-index-statistics-for-innodb\/","url_meta":{"origin":447,"position":4},"title":"Persistent index statistics for InnoDB","author":"Stewart Smith","date":"2010-12-13","format":false,"excerpt":"In browsing the BZR tree for lp:mysql-server, I noticed some rather exciting code had been merged into the Innobase code. You may be aware that InnoDB will do some index dives when opening a table to get some statistics about the indexes that can help the optimiser make good query\u2026","rel":"","context":"In &quot;drizzle&quot;","block_context":{"text":"drizzle","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/drizzle-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1309,"url":"https:\/\/www.flamingspork.com\/blog\/2008\/12\/12\/debian-about-1234533-times-easier-to-install-than-solaris\/","url_meta":{"origin":447,"position":5},"title":"Debian about 1234533 times easier to install than Solaris","author":"Stewart Smith","date":"2008-12-12","format":false,"excerpt":"After what many hours trying to netboot the T1000 to install Solaris Express, I wondered \"how hard is it for debian?\". Easy. get the sparc64 boot.img, put it on TFTP server, add \"filename \"boot.img\";\" or similar to dhcp, boot the T1000 from the service console something like this \"bootmode bootscript=\"boot\u2026","rel":"","context":"In &quot;drizzle&quot;","block_context":{"text":"drizzle","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/drizzle-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=447"}],"version-history":[{"count":0,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/447\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=447"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}