Difference between revisions of "Machine/Discovery One/Node"
< Machine | Discovery One
Jump to navigation
Jump to search
m (create page) |
m (add standard db) |
||
Line 4: | Line 4: | ||
== Components == | == Components == | ||
+ | |||
+ | === Web === | ||
=== Database === | === Database === | ||
+ | ===Install needed packages=== | ||
+ | apt-get install mysql-client-5.0 mysql-server-5.0 | ||
+ | |||
+ | ===Create database and set permissions=== | ||
+ | mysqladmin -u root -p create activities | ||
+ | mysql -u root -p | ||
+ | |||
+ | GRANT ALL ON *.* TO 'activities'@'xxx.xxx.xxx' IDENTIFIED BY 'XXXX'; | ||
+ | exit; | ||
+ | |||
+ | ===Configuring database=== | ||
+ | /etc/mysql/my.cnf | ||
+ | |||
+ | <pre> | ||
+ | [mysqld_safe] | ||
+ | socket = /var/run/mysqld/mysqld.sock | ||
+ | nice = 0 | ||
+ | |||
+ | [mysqld] | ||
+ | # * IMPORTANT | ||
+ | # If you make changes to these settings and your system uses apparmor, you may | ||
+ | # also need to also adjust /etc/apparmor.d/usr.sbin.mysqld. | ||
+ | |||
+ | user = mysql | ||
+ | pid-file = /var/run/mysqld/mysqld.pid | ||
+ | socket = /var/run/mysqld/mysqld.sock | ||
+ | port = 3306 | ||
+ | basedir = /usr | ||
+ | datadir = /var/lib/mysql | ||
+ | tmpdir = /tmp | ||
+ | skip-external-locking | ||
+ | |||
+ | |||
+ | # Instead of skip-networking the default is now to listen only on | ||
+ | # localhost which is more compatible and is not less secure. | ||
+ | # bind-address = 127.0.0.1 | ||
+ | |||
+ | # * Tuning | ||
+ | # | ||
+ | |||
+ | tmp_table_size = 16M | ||
+ | |||
+ | innodb_buffer_pool_size = 1024M | ||
+ | |||
+ | key_buffer = 64M | ||
+ | |||
+ | max_allowed_packet = 16M | ||
+ | thread_stack = 128K | ||
+ | thread_cache_size = 8 | ||
+ | # This replaces the startup script and checks MyISAM tables if needed | ||
+ | # the first time they are touched | ||
+ | myisam-recover = BACKUP | ||
+ | |||
+ | max_connections = 151 | ||
+ | |||
+ | table_cache = 128 | ||
+ | #thread_concurrency = 10 | ||
+ | |||
+ | query_cache_limit = 2M | ||
+ | query_cache_size = 32M | ||
+ | |||
+ | # * Logging and Replication | ||
+ | # | ||
+ | # Both location gets rotated by the cronjob. | ||
+ | # Be aware that this log type is a performance killer. | ||
+ | #log = /var/log/mysql/mysql.log | ||
+ | # | ||
+ | # Error logging goes to syslog. This is a Debian improvement :) | ||
+ | # | ||
+ | # Here you can see queries with especially long duration | ||
+ | log_slow_queries = /var/log/mysql/mysql-slow.log | ||
+ | long_query_time = 1 | ||
+ | #log-queries-not-using-indexes | ||
+ | # | ||
+ | # The following can be used as easy to replay backup logs or for replication. | ||
+ | # note: if you are setting up a replication slave, see README.Debian about | ||
+ | # other settings you may need to change. | ||
+ | #server-id = 1 | ||
+ | #log_bin = /var/log/mysql/mysql-bin.log | ||
+ | expire_logs_days = 10 | ||
+ | max_binlog_size = 100M | ||
+ | #binlog_do_db = include_database_name | ||
+ | #binlog_ignore_db = include_database_name | ||
+ | # | ||
+ | # * InnoDB | ||
+ | # | ||
+ | # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. | ||
+ | # Read the manual for more InnoDB related options. There are many! | ||
+ | # You might want to disable InnoDB to shrink the mysqld process by circa 100MB. | ||
+ | #skip-innodb | ||
+ | # | ||
+ | # * Federated | ||
+ | # | ||
+ | # The FEDERATED storage engine is disabled since 5.0.67 by default in the .cnf files | ||
+ | # shipped with MySQL distributions (my-huge.cnf, my-medium.cnf, and so forth). | ||
+ | # | ||
+ | |||
+ | # | ||
+ | # Read the manual, too, if you want chroot! | ||
+ | # chroot = /var/lib/mysql/ | ||
+ | # | ||
+ | # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". | ||
+ | # | ||
+ | # ssl-ca=/etc/mysql/cacert.pem | ||
+ | # ssl-cert=/etc/mysql/server-cert.pem | ||
+ | # ssl-key=/etc/mysql/server-key.pem | ||
+ | |||
+ | [mysqldump] | ||
+ | quick | ||
+ | quote-names | ||
+ | max_allowed_packet = 16M | ||
+ | |||
+ | [mysql] | ||
+ | #no-auto-rehash # faster start of mysql but no tab completition | ||
+ | |||
+ | [isamchk] | ||
+ | key_buffer = 16M | ||
+ | |||
+ | # | ||
+ | # * NDB Cluster | ||
+ | # | ||
+ | # See /usr/share/doc/mysql-server-*/README.Debian for more information. | ||
+ | # | ||
+ | # The following configuration is read by the NDB Data Nodes (ndbd processes) | ||
+ | # not from the NDB Management Nodes (ndb_mgmd processes). | ||
+ | # | ||
+ | # [MYSQL_CLUSTER] | ||
+ | # ndb-connectstring=127.0.0.1 | ||
+ | |||
+ | |||
+ | # | ||
+ | # * IMPORTANT: Additional settings that can override those from this file! | ||
+ | # The files must end with '.cnf', otherwise they'll be ignored. | ||
+ | # | ||
+ | !includedir /etc/mysql/conf.d/ | ||
+ | </pre> | ||
+ | |||
+ | ===Log Rotate=== | ||
+ | /etc/logrotate.d/mysql-server | ||
+ | <pre> | ||
+ | # - I put everything in one block and added sharedscripts, so that mysql gets | ||
+ | # flush-logs'd only once. | ||
+ | # Else the binary logs would automatically increase by n times every day. | ||
+ | # - The error log is obsolete, messages go to syslog now. | ||
+ | /var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log { | ||
+ | daily | ||
+ | rotate 7 | ||
+ | missingok | ||
+ | create 640 mysql adm | ||
+ | compress | ||
+ | sharedscripts | ||
+ | postrotate | ||
+ | test -x /usr/bin/mysqladmin || exit 0 | ||
+ | |||
+ | # If this fails, check debian.conf! | ||
+ | MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" | ||
+ | if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then | ||
+ | # Really no mysqld or rather a missing debian-sys-maint user? | ||
+ | # If this occurs and is not a error please report a bug. | ||
+ | if ps cax | grep -q mysqld; then | ||
+ | exit 1 | ||
+ | fi | ||
+ | else | ||
+ | $MYADMIN flush-logs | ||
+ | fi | ||
+ | endscript | ||
+ | } | ||
+ | </pre> |
Revision as of 17:28, 19 February 2010
ASLO Node
While discussing activities.sugarlabs.org maintainability with Dogi this afternoon, he suggested that instead of thinking about web, proxy, and database nodes we create a standard ALSO node which we can adopt and tune via configs.
Components
Web
Database
Install needed packages
apt-get install mysql-client-5.0 mysql-server-5.0
Create database and set permissions
mysqladmin -u root -p create activities mysql -u root -p
GRANT ALL ON *.* TO 'activities'@'xxx.xxx.xxx' IDENTIFIED BY 'XXXX'; exit;
Configuring database
/etc/mysql/my.cnf
[mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] # * IMPORTANT # If you make changes to these settings and your system uses apparmor, you may # also need to also adjust /etc/apparmor.d/usr.sbin.mysqld. user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp skip-external-locking # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. # bind-address = 127.0.0.1 # * Tuning # tmp_table_size = 16M innodb_buffer_pool_size = 1024M key_buffer = 64M max_allowed_packet = 16M thread_stack = 128K thread_cache_size = 8 # This replaces the startup script and checks MyISAM tables if needed # the first time they are touched myisam-recover = BACKUP max_connections = 151 table_cache = 128 #thread_concurrency = 10 query_cache_limit = 2M query_cache_size = 32M # * Logging and Replication # # Both location gets rotated by the cronjob. # Be aware that this log type is a performance killer. #log = /var/log/mysql/mysql.log # # Error logging goes to syslog. This is a Debian improvement :) # # Here you can see queries with especially long duration log_slow_queries = /var/log/mysql/mysql-slow.log long_query_time = 1 #log-queries-not-using-indexes # # The following can be used as easy to replay backup logs or for replication. # note: if you are setting up a replication slave, see README.Debian about # other settings you may need to change. #server-id = 1 #log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M #binlog_do_db = include_database_name #binlog_ignore_db = include_database_name # # * InnoDB # # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. # Read the manual for more InnoDB related options. There are many! # You might want to disable InnoDB to shrink the mysqld process by circa 100MB. #skip-innodb # # * Federated # # The FEDERATED storage engine is disabled since 5.0.67 by default in the .cnf files # shipped with MySQL distributions (my-huge.cnf, my-medium.cnf, and so forth). # # # Read the manual, too, if you want chroot! # chroot = /var/lib/mysql/ # # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". # # ssl-ca=/etc/mysql/cacert.pem # ssl-cert=/etc/mysql/server-cert.pem # ssl-key=/etc/mysql/server-key.pem [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] key_buffer = 16M # # * NDB Cluster # # See /usr/share/doc/mysql-server-*/README.Debian for more information. # # The following configuration is read by the NDB Data Nodes (ndbd processes) # not from the NDB Management Nodes (ndb_mgmd processes). # # [MYSQL_CLUSTER] # ndb-connectstring=127.0.0.1 # # * IMPORTANT: Additional settings that can override those from this file! # The files must end with '.cnf', otherwise they'll be ignored. # !includedir /etc/mysql/conf.d/
Log Rotate
/etc/logrotate.d/mysql-server
# - I put everything in one block and added sharedscripts, so that mysql gets # flush-logs'd only once. # Else the binary logs would automatically increase by n times every day. # - The error log is obsolete, messages go to syslog now. /var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log { daily rotate 7 missingok create 640 mysql adm compress sharedscripts postrotate test -x /usr/bin/mysqladmin || exit 0 # If this fails, check debian.conf! MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then # Really no mysqld or rather a missing debian-sys-maint user? # If this occurs and is not a error please report a bug. if ps cax | grep -q mysqld; then exit 1 fi else $MYADMIN flush-logs fi endscript }