def METHOD_NAME(self):
    if MySQLdb is None:
        self.log.error('Unable to import MySQLdb')
        return False
    for host in self.config['hosts']:
        matches = re.search(
            '^([^:]*):([^@]*)@([^:]*):?([^/]*)/([^/]*)/?(.*)', host)
        if not matches:
            self.log.error(
                'Connection string not in required format, skipping: %s',
                host)
            continue
        params = {}
        params['host'] = matches.group(3)
        try:
            params['port'] = int(matches.group(4))
        except ValueError:
            params['port'] = 3306
        params['db'] = matches.group(5)
        params['user'] = matches.group(1)
        params['passwd'] = matches.group(2)
        nickname = matches.group(6)
        if len(nickname):
            nickname += '.'
        if params['db'] == 'None':
            del params['db']
        try:
            metrics = self.get_stats(params=params)
        except Exception, e:
            try:
                self.disconnect()
            except MySQLdb.ProgrammingError:
                pass
            self.log.error('Collection failed for %s %s', nickname, e)
            continue
        # Warn if publish contains an unknown variable
        if 'publish' in self.config and metrics['status']:
            for k in self.config['publish'].split():
                if k not in metrics['status']:
                    self.log.error("No such key '%s' available, issue " +
                                   "'show global status' for a full " +
                                   "list", k)
        self._publish_stats(nickname, metrics)