Machine/Discovery One/Node: Difference between revisions
Appearance
< Machine | Discovery One
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
}