Machine/Discovery One/Node

From Sugar Labs
< Machine‎ | Discovery One
Revision as of 18:28, 19 February 2010 by Dfarning (talk | contribs) (add standard db)
Jump to navigation Jump to search

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 
}