LSST-DB

From athena

Contents

[edit] Setting up MySQL database on the cluster

The database in question exists on my computer at /lsst/lib/mysql/stripe82. Its in the midst of ingesting, meaning I need to copy the database over, and then continue ingesting the data on the cluster, where it will reside at athena5.npl.washington.edu:/psfs/fc-data-1/data2/lsst/mysql/.

[edit] Copying over an existing database

If I have the same system architectures on both machines, I can actually just copy the files over instead of using mysqldump. It looks like both are x86_64 machines (avoiding byte swapping problems) running MySQL ver 14.7 distrib 4.1.20. So I will actually try copying the files over as a first step.

  • [root@darkstar mysql]# chmod -R o+rx stripe82
  • becker46: scp -r /lsst/lib/mysql/stripe82 root@athena5.npl.washington.edu:/psfs/fc-data-1/data2/lsst/mysql/.
  • [root@darkstar mysql]# chmod -R o+rx mysql
  • becker47: scp -r /lsst/lib/mysql/mysql root@athena5.npl.washington.edu:/psfs/fc-data-1/data2/lsst/mysql/.

This will take several hours (33G). Afterwards, undo my permissions hack

  • [root@darkstar mysql]# chmod -R o-rx stripe82
  • [root@p5 mysql]# chmod -R o-rx stripe82
  • [root@p5 mysql]# chown -R mysql.mysql stripe82
  • [root@darkstar mysql]# chmod -R o-rx mysql
  • [root@p5 mysql]# chmod -R o-rx mysql
  • [root@p5 mysql]# chown -R mysql.mysql mysql

[edit] Setting up MySQL on Athena5

I need to configure MySQL to point to /psfs/fc-data-1/data2/lsst/. The file to edit is /etc/my.cnf. The default file says

[root@p5 mysql]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

I change this to

[root@p5 mysql]# cat /etc/my.cnf
[mysqld]
datadir=/psfs/fc-data-1/data2/lsst/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
tmpdir=/psfs/fc-data-1/data2/lsst/mysql_tmp
max_connections = 1500

[mysql.server]
user=mysql
basedir=/psfs/fc-data-1/data2/lsst

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

To get this running, /etc/init.d/mysqld start. Now check out tables

Darkstar :
becker63: mysql -h localhost -u becker -D stripe82 -p
mysql> checksum table field;
+----------------+------------+
| Table          | Checksum   |
+----------------+------------+
| stripe82.field | 2317030981 |
+----------------+------------+
mysql> select count(*) from source;
+-----------+
| count(*)  |
+-----------+
| 162944307 |
+-----------+
mysql> select count(*) from object;
+----------+
| count(*) |
+----------+
|  2909275 |
+----------+
mysql> select * from source where objectID=2900000;
 ...
45 rows in set (18 min 25.46 sec)
Athena :
[root@p5 mysql]# mysql -h localhost -u becker -D stripe82 -p
mysql> checksum table field;
+----------------+------------+
| Table          | Checksum   |
+----------------+------------+
| stripe82.field | 2317030981 |
+----------------+------------+
mysql> select count(*) from source;
+-----------+
| count(*)  |
+-----------+
| 162944307 |
+-----------+
mysql> select count(*) from object;
+----------+
| count(*) |
+----------+
|  2909275 |
+----------+
mysql> select * from source where objectID=2900000;
 ...
45 rows in set (4 min 10.62 sec)

So it certainly looks faster. Which is nice...

Root Password
mysqld_safe --skip-grant-tables -u root
mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('XXXXX') WHERE User='root';
mysql> FLUSH PRIVILEGES;
Users and grants
mysql> select User,Host from mysql.user;
+----------+------------------------+
| User     | Host                   |
+----------+------------------------+
| stripe82 | %.astro.washington.edu |
| becker   | localhost              |
| root     | localhost              |
+----------+------------------------+

grant create temporary tables on stripe82.* to 'stripe82'@'128.95.99.%' identified by 'XXXXXX';
Security
mysql> show grants for 'stripe82'@'%.astro.washington.edu';
| GRANT USAGE ON *.* TO 'stripe82'@'%.astro.washington.edu' IDENTIFIED BY PASSWORD 'XXXXXX' |
| GRANT SELECT ON `stripe82`.* TO 'stripe82'@'%.astro.washington.edu'                       |

mysql> show grants for 'becker'@'localhost';
| GRANT FILE ON *.* TO 'becker'@'localhost' IDENTIFIED BY PASSWORD 'XXXXX' |
| GRANT ALL PRIVILEGES ON `stripe82`.* TO 'becker'@'localhost'       |

mysql> show grants for 'root'@'localhost';
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD 'XXXXX' WITH GRANT OPTION |
Temporary space

This thing was occasionally filling up /tmp/. Redirect the temporary space.

cd /psfs/fc-data-1/data2/lsst/
mkdir mysql_tmp
chown -R mysql.mysql mysql_tmp

Now edit /etc/my.cnf and add under [mysqld]

tmpdir=/psfs/fc-data-1/data2/lsst/mysql_tmp
All configuration variables
[root@p5 B]# mysqladmin -p variables
Enter password:

+---------------------------------+--------------------------------------------------------+
| Variable_name                   | Value                                                  |
+---------------------------------+--------------------------------------------------------+
| back_log                        | 50                                                     |
| basedir                         | /usr/                                                  |
| bdb_cache_size                  | 8388600                                                |
| bdb_home                        | /psfs/fc-data-1/data2/lsst/mysql/                      |
| bdb_log_buffer_size             | 32768                                                  |
| bdb_logdir                      |                                                        |
| bdb_max_lock                    | 10000                                                  |
| bdb_shared_data                 | OFF                                                    |
| bdb_tmpdir                      | /psfs/fc-data-1/data2/lsst/mysql_tmp/                  |
| binlog_cache_size               | 32768                                                  |
| bulk_insert_buffer_size         | 8388608                                                |
| character_set_client            | latin1                                                 |
| character_set_connection        | latin1                                                 |
| character_set_database          | latin1                                                 |
| character_set_results           | latin1                                                 |
| character_set_server            | latin1                                                 |
| character_set_system            | utf8                                                   |
| character_sets_dir              | /usr/share/mysql/charsets/                             |
| collation_connection            | latin1_swedish_ci                                      |
| collation_database              | latin1_swedish_ci                                      |
| collation_server                | latin1_swedish_ci                                      |
| concurrent_insert               | ON                                                     |
| connect_timeout                 | 5                                                      |
| datadir                         | /psfs/fc-data-1/data2/lsst/mysql/                      |
| date_format                     | %Y-%m-%d                                               |
| datetime_format                 | %Y-%m-%d %H:%i:%s                                      |
| default_week_format             | 0                                                      |
| delay_key_write                 | ON                                                     |
| delayed_insert_limit            | 100                                                    |
| delayed_insert_timeout          | 300                                                    |
| delayed_queue_size              | 1000                                                   |
| expire_logs_days                | 0                                                      |
| flush                           | OFF                                                    |
| flush_time                      | 0                                                      |
| ft_boolean_syntax               | + -><()~*:""&|                                         |
| ft_max_word_len                 | 84                                                     |
| ft_min_word_len                 | 4                                                      |
| ft_query_expansion_limit        | 20                                                     |
| ft_stopword_file                | (built-in)                                             |
| group_concat_max_len            | 1024                                                   |
| have_archive                    | NO                                                     |
| have_bdb                        | YES                                                    |
| have_blackhole_engine           | NO                                                     |
| have_compress                   | YES                                                    |
| have_crypt                      | YES                                                    |
| have_csv                        | NO                                                     |
| have_example_engine             | NO                                                     |
| have_geometry                   | YES                                                    |
| have_innodb                     | YES                                                    |
| have_isam                       | YES                                                    |
| have_ndbcluster                 | NO                                                     |
| have_openssl                    | YES                                                    |
| have_query_cache                | YES                                                    |
| have_raid                       | NO                                                     |
| have_rtree_keys                 | YES                                                    |
| have_symlink                    | YES                                                    |
| init_connect                    |                                                        |
| init_file                       |                                                        |
| init_slave                      |                                                        |
| innodb_additional_mem_pool_size | 1048576                                                |
| innodb_autoextend_increment     | 8                                                      |
| innodb_buffer_pool_awe_mem_mb   | 0                                                      |
| innodb_buffer_pool_size         | 8388608                                                |
| innodb_data_file_path           | ibdata1:10M:autoextend                                 |
| innodb_data_home_dir            |                                                        |
| innodb_fast_shutdown            | ON                                                     |
| innodb_file_io_threads          | 4                                                      |
| innodb_file_per_table           | OFF                                                    |
| innodb_flush_log_at_trx_commit  | 1                                                      |
| innodb_flush_method             |                                                        |
| innodb_force_recovery           | 0                                                      |
| innodb_lock_wait_timeout        | 50                                                     |
| innodb_locks_unsafe_for_binlog  | OFF                                                    |
| innodb_log_arch_dir             |                                                        |
| innodb_log_archive              | OFF                                                    |
| innodb_log_buffer_size          | 1048576                                                |
| innodb_log_file_size            | 5242880                                                |
| innodb_log_files_in_group       | 2                                                      |
| innodb_log_group_home_dir       | ./                                                     |
| innodb_max_dirty_pages_pct      | 90                                                     |
| innodb_max_purge_lag            | 0                                                      |
| innodb_mirrored_log_groups      | 1                                                      |
| innodb_open_files               | 300                                                    |
| innodb_table_locks              | ON                                                     |
| innodb_thread_concurrency       | 8                                                      |
| interactive_timeout             | 28800                                                  |
| join_buffer_size                | 131072                                                 |
| key_buffer_size                 | 8388600                                                |
| key_cache_age_threshold         | 300                                                    |
| key_cache_block_size            | 1024                                                   |
| key_cache_division_limit        | 100                                                    |
| language                        | /usr/share/mysql/english/                              |
| large_files_support             | ON                                                     |
| license                         | GPL                                                    |
| local_infile                    | ON                                                     |
| locked_in_memory                | OFF                                                    |
| log                             | OFF                                                    |
| log_bin                         | OFF                                                    |
| log_error                       |                                                        |
| log_slave_updates               | OFF                                                    |
| log_slow_queries                | OFF                                                    |
| log_update                      | OFF                                                    |
| log_warnings                    | 1                                                      |
| long_query_time                 | 10                                                     |
| low_priority_updates            | OFF                                                    |
| lower_case_file_system          | OFF                                                    |
| lower_case_table_names          | 0                                                      |
| max_allowed_packet              | 1048576                                                |
| max_binlog_cache_size           | 18446744073709551615                                   |
| max_binlog_size                 | 1073741824                                             |
| max_connect_errors              | 10                                                     |
| max_connections                 | 100                                                    |
| max_delayed_threads             | 20                                                     |
| max_error_count                 | 64                                                     |
| max_heap_table_size             | 16777216                                               |
| max_insert_delayed_threads      | 20                                                     |
| max_join_size                   | 18446744073709551615                                   |
| max_length_for_sort_data        | 1024                                                   |
| max_prepared_stmt_count         | 16382                                                  |
| max_relay_log_size              | 0                                                      |
| max_seeks_for_key               | 18446744073709551615                                   |
| max_sort_length                 | 1024                                                   |
| max_tmp_tables                  | 32                                                     |
| max_user_connections            | 0                                                      |
| max_write_lock_count            | 18446744073709551615                                   |
| myisam_data_pointer_size        | 4                                                      |
| myisam_max_extra_sort_file_size | 2147483648                                             |
| myisam_max_sort_file_size       | 9223372036854775807                                    |
| myisam_recover_options          | OFF                                                    |
| myisam_repair_threads           | 1                                                      |
| myisam_sort_buffer_size         | 8388608                                                |
| myisam_stats_method             | nulls_unequal                                          |
| net_buffer_length               | 16384                                                  |
| net_read_timeout                | 30                                                     |
| net_retry_count                 | 10                                                     |
| net_write_timeout               | 60                                                     |
| new                             | OFF                                                    |
| old_passwords                   | ON                                                     |
| open_files_limit                | 1024                                                   |
| pid_file                        | /var/run/mysqld/mysqld.pid                             |
| port                            | 3306                                                   |
| preload_buffer_size             | 32768                                                  |
| prepared_stmt_count             | 0                                                      |
| protocol_version                | 10                                                     |
| query_alloc_block_size          | 8192                                                   |
| query_cache_limit               | 1048576                                                |
| query_cache_min_res_unit        | 4096                                                   |
| query_cache_size                | 0                                                      |
| query_cache_type                | ON                                                     |
| query_cache_wlock_invalidate    | OFF                                                    |
| query_prealloc_size             | 8192                                                   |
| range_alloc_block_size          | 2048                                                   |
| read_buffer_size                | 131072                                                 |
| read_only                       | OFF                                                    |
| read_rnd_buffer_size            | 262144                                                 |
| relay_log_purge                 | ON                                                     |
| relay_log_space_limit           | 0                                                      |
| rpl_recovery_rank               | 0                                                      |
| secure_auth                     | OFF                                                    |
| server_id                       | 0                                                      |
| skip_external_locking           | ON                                                     |
| skip_networking                 | OFF                                                    |
| skip_show_database              | OFF                                                    |
| slave_net_timeout               | 3600                                                   |
| slave_transaction_retries       | 0                                                      |
| slow_launch_time                | 2                                                      |
| socket                          | /var/lib/mysql/mysql.sock                              |
| sort_buffer_size                | 2097144                                                |
| sql_mode                        |                                                        |
| sql_notes                       | ON                                                     |
| sql_warnings                    | ON                                                     |
| storage_engine                  | MyISAM                                                 |
| sync_binlog                     | 0                                                      |
| sync_frm                        | ON                                                     |
| sync_replication                | 0                                                      |
| sync_replication_slave_id       | 0                                                      |
| sync_replication_timeout        | 0                                                      |
| system_time_zone                | PDT                                                    |
| table_cache                     | 64                                                     |
| table_type                      | MyISAM                                                 |
| thread_cache_size               | 0                                                      |
| thread_stack                    | 196608                                                 |
| time_format                     | %H:%i:%s                                               |
| time_zone                       | SYSTEM                                                 |
| tmp_table_size                  | 33554432                                               |
| tmpdir                          | /psfs/fc-data-1/data2/lsst/mysql_tmp                   |
| transaction_alloc_block_size    | 8192                                                   |
| transaction_prealloc_size       | 4096                                                   |
| tx_isolation                    | REPEATABLE-READ                                        |
| version                         | 4.1.20                                                 |
| version_bdb                     | Sleepycat Software: Berkeley DB 4.1.24: (May 24, 2006) |
| version_comment                 | Source distribution                                    |
| version_compile_machine         | x86_64                                                 |
| version_compile_os              | redhat-linux-gnu                                       |
| wait_timeout                    | 28800                                                  |
+---------------------------------+--------------------------------------------------------+

[edit] Using MySQL on Athena5

Ingest
  • [root@p5 mysql]# mkdir /psfs/fc-data-1/data2/becker
  • becker64: scp Cluster_ingest2aa_cut Cluster_ingest2?? root@athena5.npl.washington.edu:/psfs/fc-data-1/data2/becker/.
  • [root@p5 becker]# mysql -h localhost --local_infile=1 -u becker -D stripe82 --password=XXXXX < Cluster_ingest2aa_cut
Remote querying

Hmmm, I get "Host '128.95.99.45' is not allowed to connect to this MySQL server". Even though I have granted access to *.astro.washington.edu. So maybe there is a problem with DNS? Let me try this.

  • mysql> grant select on stripe82.* TO 'stripe82'@'128.95.99.%' IDENTIFIED BY 'XXXXX';

Works!

[edit] Setting up a whole new MySQL for MOPS

MOPS requires enough functionality that it seems to make sense to create a whole new MySQL Server for it. To do this we need to give it a particular

* MYSQL_UNIX_PORT
* MYSQL_TCP_PORT 

Doing this robustly means creating different configuration files, including

* /etc/init.d/mysqld; call it /etc/init.d/mysqld_MOPS
* /etc/my.cnf; call it /etc/my_MOPS.cnf

/etc/my_MOPS.cnf

[mysqld]
datadir=/psfs/fc-data-1/data2/lsst/MOPS/mysql
tmpdir=/psfs/fc-data-1/data2/lsst/MOPS/mysql_tmp
socket=/var/lib/mysql/mysql_MOPS.sock
port=3307
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
max_connections = 1500

[mysql.server]
user=mysql
basedir=/psfs/fc-data-1/data2/lsst/MOPS

[mysqld_safe]
err-log=/var/log/mysqld_MOPS.log
pid-file=/var/run/mysqld/mysqld_MOPS.pid

I need to make the directories as well

mkdir /psfs/fc-data-1/data2/lsst/MOPS
mkdir /psfs/fc-data-1/data2/lsst/MOPS/mysql
mkdir /psfs/fc-data-1/data2/lsst/MOPS/mysql_tmp
chown -R mysql.mysql /psfs/fc-data-1/data2/lsst/MOPS/mysql*

/etc/init.d/mysqld_MOPS

/etc/my.cnf -> /etc/my_MOPS.cnf
/var/lock/subsys/mysqld -> /var/lock/subsys/mysqld_MOPS
status mysqld -> status mysqld_MOPS
/usr/bin/mysqladmin -> /usr/bin/mysqladmin --port=3307 --protocol=TCP

Try running both concurrently...

[root@p5 ~]# /etc/init.d/mysqld_MOPS start
Initializing MySQL database:                               [  OK  ]
Timeout error occurred trying to start MySQL Daemon.
Starting MySQL:                                            [FAILED]

Needed to "install" a database using

[root@p5 MOPS]$ mysql_install_db --defaults-file=/etc/my_MOPS.cnf --user=mysql --verbose
[root@p5 MOPS]$ /etc/init.d/mysqld_MOPS start
Starting MySQL:                                            [  OK  ]
[root@p5 ~]# /etc/init.d/mysqld_MOPS stop
Stopping MySQL:                                            [  OK  ]

Set root password

[root@p5 ~]# mysqld_safe --defaults-file=/etc/my_MOPS.cnf --skip-grant-tables -u root
Starting mysqld daemon with databases from /psfs/fc-data-1/data2/lsst/MOPS/
[root@p5 lsst]# mysql -u root --port=3307 --protocol=TCP
mysql> UPDATE mysql.user SET Password=PASSWORD('XXXXX') WHERE User='root';
mysql> FLUSH PRIVILEGES;

And start up the server for real.

[root@p5 MOPS]# /etc/init.d/mysqld_MOPS start
# CRAP THIS DOES NOT WORK!!!!
Timeout error occurred trying to start MySQL Daemon.
Starting MySQL:                                            [FAILED]

Wait it a minute, it does seem to work..!

[root@p5 lsst]# mysql -u root --port=3307 --protocol=TCP -p

So maybe its the form of the test in /etc/init.d/mysqld_MOPS. Indeed, I had to change the mysqladmin command to include --port=3307 --protocol=TCP.

Need to open up port 3307 too!

[root@p5 lsst]# nmap localhost
...
3306/tcp open  mysql

Does not show port 3307


Not sure if this is necessary, but edit /etc/services and add

mysql           3307/tcp                        # MySQL
mysql           3307/udp                        # MySQL


[edit] Using secondary MySQL server on Athena5

Some notes:

  • added a mops user
  • The port used is 3307 (-P 3307 --protocol=TCP is necessary at the moment)
  • mops can log in from athena0 and athena5 only (because athena5 doesn't know about the names of cluster computers)
  • mysql -h athena5.npl.washington.edu -u mops -p -P 3307 --protocol=TCP