Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

Trove upgrade source code reading

2025-01-17 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >

Share

Shulou(Shulou.com)06/01 Report--

Trove upgrade is used to update the database from one version to another, such as changing mysql5.5 to mysql5.6

Trove/taskmanager/manager.py line 368

Def upgrade (self, context, instance_id, datastore_version_id): instance_tasks = models.BuiltInstanceTasks.load (context, instance_id) datastore_version = DatastoreVersion.load_by_uuid (datastore_version_id) with EndNotification (context): instance_tasks.upgrade (datastore_version)

Instance_tasks.upgrade (datastore_version) call

Trove/taskmanager/models.py 1501 lines

Def upgrade (self, datastore_version):... Try: upgrade_info = self.guest.pre_upgrade ()... Self.server.rebuild (datastore_version.p_w_picpath_id, files=injected_files)... If volume: upgrade_info ['device'] = volume_device self.guest.post_upgrade (upgrade_info) self.reset_task_status ()...

Upgrade instance is mainly completed in the following steps:

Self.guest.pre_upgrade: some actions before updating, mainly to save the configuration file of mysql in cinder volume

Self.server.rebuild: rebuilds the nova instance of trove with the new database base mirror

Self.guest.post_upgrade: some actions after rebuilding the nova instance, the main operation is to restore the mysql configuration file from the cinder volume and start the mysql

Self.guest.pre_upgrade,self.guest.post_upgrade calls the corresponding method of trove-guestagent running on nova instance through rcp.

Trove/guestagent/datastore/mysql/_common/manager.py 245 Lin

Def pre_upgrade (self, context): app = self.mysql_app (self.mysql_app_status.get ()) data_dir = app.get_data_dir () mount_point _ data = os.path.split (data_dir) save_dir = "% s/etc_mysql"% mount_point save_etc_dir = "% s/etc"% mount_point home_save = "% s/trove_user"% mount_point app.status.begin_restart () app.stop_db () if operating_system.exists ("/ etc/my.cnf" As_root=True): operating_system.create_directory (save_etc_dir, as_root=True) operating_system.copy ("/ etc/my.cnf", save_etc_dir, preserve=True, as_root=True) operating_system.copy ("/ etc/mysql/.", save_dir, preserve=True As_root=True) operating_system.copy ("% mount_point': mount_point."% os.path.expanduser ('~'), home_save, preserve=True, as_root=True) self.unmount_volume (context, mount_point=data_dir) return {'mount_point': mount_point,' save_dir': save_dir 'save_etc_dir': save_etc_dir, 'home_save': home_save}

Pre_upgrade backup database configuration file, guestagent configuration information located in the trove home directory, and returns a dictionary containing backup information

Trove/guestagent/datastore/mysql/_common/manager.py 275 lines

Def post_upgrade (self, context, upgrade_info): app = self.mysql_app (self.mysql_app_status.get ()) app.stop_db () if 'device' in upgrade_info: self.mount_volume (context, mount_point=upgrade_info [' mount_point'], device_path=upgrade_info ['device'] Write_to_fstab=True) if operating_system.exists (upgrade_info ['save_etc_dir'], is_directory=True, as_root=True): operating_system.copy ("% s etc."% upgrade_info [' save_etc_dir'], "/ etc", preserve=True As_root=True) operating_system.copy ("% s home_save'."% upgrade_info ['save_dir'], "/ etc/mysql", preserve=True, as_root=True) operating_system.copy ("% s as_root=True."% upgrade_info [' home_save'], os.path.expanduser ('~') Preserve=True, as_root=True) self.configuration_manager.refresh_cache () app.start_mysql ()

Post_upgrade restores the configuration files in the backup, does not modify any files of the old database, and directly uses the configuration files and data files of the old database to start the database.

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Database

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report