[Checkins] SVN: relstorage/trunk/repltest/ Adding a replication test that builds 2 MySQL servers

Shane Hathaway shane at hathawaymix.org
Sat Oct 3 18:23:31 EDT 2009


Log message for revision 104771:
  Adding a replication test that builds 2 MySQL servers
  

Changed:
  A   relstorage/trunk/repltest/
  A   relstorage/trunk/repltest/master/
  A   relstorage/trunk/repltest/master/buildout.cfg
  A   relstorage/trunk/repltest/master/replicas.conf
  A   relstorage/trunk/repltest/my.cnf.in
  A   relstorage/trunk/repltest/mysql-no-read-etc.patch
  A   relstorage/trunk/repltest/slave/
  A   relstorage/trunk/repltest/slave/buildout.cfg

-=-

Property changes on: relstorage/trunk/repltest/master
___________________________________________________________________
Added: svn:ignore
   + develop-eggs
include
eggs
lib
bin
var
fake-eggs
parts
.installed.cfg


Added: relstorage/trunk/repltest/master/buildout.cfg
===================================================================
--- relstorage/trunk/repltest/master/buildout.cfg	                        (rev 0)
+++ relstorage/trunk/repltest/master/buildout.cfg	2009-10-03 22:23:31 UTC (rev 104771)
@@ -0,0 +1,141 @@
+
+[buildout]
+develop = ../..
+parts =
+    mysqlconf
+    mysql
+    mysqlinit
+    MySQL-python
+    zope2
+    instance
+    zopepy
+    pidproxy
+    supervisor
+find-links =
+    http://dist.plone.org
+    http://download.zope.org/ppix/
+    http://download.zope.org/distribution/
+    http://effbot.org/downloads
+    http://packages.willowrise.org
+extends =
+    http://dist.plone.org/release/3.3.1/versions.cfg
+versions = versions
+
+[versions]
+zc.buildout = 1.4.1
+ZODB3 = 3.8.3-polling
+zope.proxy = 3.4.2
+
+[mysqlconf]
+recipe = collective.recipe.template
+input = ${buildout:directory}/../my.cnf.in
+output = ${buildout:directory}/parts/mysqlconf/my.cnf
+datadir = ${buildout:directory}/var/mysql
+logdir = ${buildout:directory}/var/log
+server-id = 1
+read-only = 0
+port = 23306
+
+[mysql]
+recipe = zc.recipe.cmmi
+url = http://mysql.mirrors.pair.com/Downloads/MySQL-5.1/mysql-5.1.39.tar.gz
+md5sum = 55a398daeb69a778fc46573623143268
+extra_options =
+    --localstatedir=${mysqlconf:datadir}
+    --sysconfdir=${buildout:directory}/parts/mysqlconf
+    --with-unix-socket-path=${mysqlconf:datadir}/mysqld.sock
+    --with-plugins=innobase,myisam
+# This MySQL instance should not load configuration from /etc
+patch = ${buildout:directory}/../mysql-no-read-etc.patch
+
+[mysqlinit]
+recipe = iw.recipe.cmd
+on_install = true
+on_update = true
+cmds =
+    test -e ${buildout:directory}/bin/mysql || \
+        ln -s ${mysql:location}/bin/mysql ${buildout:directory}/bin/mysql
+    test -e ${mysqlconf:datadir}/plone && exit 0
+    mkdir -p ${mysqlconf:datadir}
+    ${mysql:location}/bin/mysql_install_db
+    ${mysql:location}/bin/mysqld_safe &
+    sleep 5
+    ${buildout:directory}/bin/mysql -u root << EOF
+        SHOW MASTER STATUS;
+        CREATE DATABASE plone;
+        GRANT ALL ON plone.* TO 'plone'@'localhost' IDENTIFIED BY 'plonepass';
+        GRANT REPLICATION SLAVE ON *.* TO 'repl'@'localhost' IDENTIFIED BY 'slavepass';
+        FLUSH PRIVILEGES;
+    EOF
+    kill `cat ${mysqlconf:datadir}/mysqld.pid`
+
+[MySQL-python]
+recipe = zc.recipe.egg:custom
+environment = MySQL-python-env
+rpath = ${mysql:location}/lib/mysql
+
+[MySQL-python-env]
+# This is needed to help MySQL-python find the mysql_config script
+PATH=${mysql:location}/bin:%(PATH)s
+
+[zope2]
+recipe = plone.recipe.zope2install
+# update zope by updating this URL:
+url = ${versions:zope2-url}
+# fake eggs are required to satisfy Zope dependencies while
+# zope is not yet eggified.
+fake-zope-eggs = true
+additional-fake-eggs =
+    pytz
+skip-fake-eggs =
+    ZODB3
+    ZConfig
+    zope.proxy
+
+[instance]
+recipe = plone.recipe.zope2instance
+zope2-location = ${zope2:location}
+# The line below sets only the initial password. It will not change an
+# existing password.
+user = admin:123
+http-address = 18080
+rel-storage =
+    type mysql
+    db plone
+    user plone
+    passwd plonepass
+    keep-history false
+    replica-conf ${buildout:directory}/replicas.conf
+eggs =
+    PILwoTK
+    Plone
+    MySQL-python
+    RelStorage
+environment-vars =
+    PTS_LANGUAGES en
+
+# installs a python interpreter named "py" that runs with your
+# full Zope environment
+[zopepy]
+recipe = zc.recipe.egg
+eggs = ${instance:eggs}
+interpreter = py
+extra-paths = ${instance:zope2-location}/lib/python
+scripts = zopepy zodbconvert
+
+
+[pidproxy]
+recipe = zc.recipe.egg
+eggs = supervisor
+scripts = pidproxy
+
+[supervisor]
+recipe = collective.recipe.supervisor
+
+port = 127.0.0.1:29001
+serverurl = http://127.0.0.1:29001
+
+programs =
+    10 mysql ${buildout:directory}/bin/pidproxy [${mysqlconf:datadir}/mysqld.pid ${mysql:location}/bin/mysqld_safe] ${mysql:location} true
+    20 instance ${instance:location}/bin/runzope ${instance:location} true
+

Added: relstorage/trunk/repltest/master/replicas.conf
===================================================================
--- relstorage/trunk/repltest/master/replicas.conf	                        (rev 0)
+++ relstorage/trunk/repltest/master/replicas.conf	2009-10-03 22:23:31 UTC (rev 104771)
@@ -0,0 +1,6 @@
+# The list of replicas for RelStorage to contact.
+# Note that MySQL interprets "localhost" specially.  We have to
+# use "127.0.0.1" instead.
+localhost
+127.0.0.1:23306
+127.0.0.1:23307

Added: relstorage/trunk/repltest/my.cnf.in
===================================================================
--- relstorage/trunk/repltest/my.cnf.in	                        (rev 0)
+++ relstorage/trunk/repltest/my.cnf.in	2009-10-03 22:23:31 UTC (rev 104771)
@@ -0,0 +1,90 @@
+#
+# The MySQL database server configuration file.
+#
+[client]
+socket          = ${datadir}/mysqld.sock
+port            = ${port}
+
+[mysqld_safe]
+socket          = ${datadir}/mysqld.sock
+nice            = 0
+
+[mysqld]
+#
+# * Basic Settings
+#
+
+socket          = ${datadir}/mysqld.sock
+port            = ${port}
+pid-file        = ${datadir}/mysqld.pid
+basedir         = ${mysql:location}
+datadir         = ${datadir}
+tmpdir          = /tmp
+skip-external-locking
+bind-address            = 127.0.0.1
+
+#
+# * Fine Tuning
+#
+key_buffer              = 16M
+max_allowed_packet      = 32M
+thread_stack            = 128K
+thread_cache_size       = 8
+myisam-recover          = BACKUP
+#max_connections        = 100
+#table_cache            = 64
+#thread_concurrency     = 10
+
+#
+# * Query Cache Configuration
+#
+query_cache_limit       = 1M
+query_cache_size        = 16M
+
+#
+# * Logging and Replication
+#
+# Both location gets rotated by the cronjob.
+# Be aware that this log type is a performance killer.
+#log            = ${logdir}/mysql.log
+#
+# Error logging goes to syslog. This is a Debian improvement :)
+#
+# Here you can see queries with especially long duration
+#log_slow_queries       = ${logdir}/mysql-slow.log
+#long_query_time = 2
+#log-queries-not-using-indexes
+#
+# The following can be used as easy to replay backup logs or for replication.
+server-id               = ${server-id}
+log_bin                 = ${datadir}/mysql-bin.log
+binlog_format           = ROW
+read_only               = ${read-only}
+expire_logs_days        = 10
+max_binlog_size         = 100M
+sync_binlog             = 1
+#binlog_do_db           = include_database_name
+#binlog_ignore_db       = include_database_name
+
+#
+# * InnoDB
+#
+innodb_data_file_path = ibdata1:10M:autoextend
+innodb_buffer_pool_size=64M
+innodb_log_file_size=16M
+innodb_log_buffer_size=8M
+innodb_flush_log_at_trx_commit=1
+innodb_file_per_table
+innodb_locks_unsafe_for_binlog=1
+
+
+[mysqldump]
+quick
+quote-names
+max_allowed_packet      = 32M
+
+[mysql]
+#no-auto-rehash # faster start of mysql but no tab completion
+
+[isamchk]
+key_buffer              = 16M

Added: relstorage/trunk/repltest/mysql-no-read-etc.patch
===================================================================
--- relstorage/trunk/repltest/mysql-no-read-etc.patch	                        (rev 0)
+++ relstorage/trunk/repltest/mysql-no-read-etc.patch	2009-10-03 22:23:31 UTC (rev 104771)
@@ -0,0 +1,12 @@
+--- mysys/default.c.orig        2009-09-28 15:44:21.000000000 -0600
++++ mysys/default.c     2009-09-28 15:44:57.000000000 -0600
+@@ -1123,9 +1123,6 @@
+
+ #else
+
+-  errors += add_directory(alloc, "/etc/", dirs);
+-  errors += add_directory(alloc, "/etc/mysql/", dirs);
+-
+ #if defined(DEFAULT_SYSCONFDIR)
+   if (DEFAULT_SYSCONFDIR[0])
+     errors += add_directory(alloc, DEFAULT_SYSCONFDIR, dirs);


Property changes on: relstorage/trunk/repltest/slave
___________________________________________________________________
Added: svn:ignore
   + develop-eggs
include
eggs
lib
bin
var
parts
.installed.cfg


Added: relstorage/trunk/repltest/slave/buildout.cfg
===================================================================
--- relstorage/trunk/repltest/slave/buildout.cfg	                        (rev 0)
+++ relstorage/trunk/repltest/slave/buildout.cfg	2009-10-03 22:23:31 UTC (rev 104771)
@@ -0,0 +1,56 @@
+
+[buildout]
+parts =
+    mysqlconf
+    mysql
+    mysqlinit
+    pidproxy
+    supervisor
+
+[mysqlconf]
+recipe = collective.recipe.template
+input = ${buildout:directory}/../my.cnf.in
+output = ${buildout:directory}/parts/mysqlconf/my.cnf
+datadir = ${buildout:directory}/var/mysql
+logdir = ${buildout:directory}/var/log
+server-id = 2
+read-only = 1
+port = 23307
+
+[mysql]
+recipe = zc.recipe.cmmi
+url = http://mysql.mirrors.pair.com/Downloads/MySQL-5.1/mysql-5.1.39.tar.gz
+md5sum = 55a398daeb69a778fc46573623143268
+extra_options =
+    --localstatedir=${mysqlconf:datadir}
+    --sysconfdir=${buildout:directory}/parts/mysqlconf
+    --with-unix-socket-path=${mysqlconf:datadir}/mysqld.sock
+    --with-plugins=innobase,myisam
+# This MySQL instance should not load configuration from /etc
+patch = ${buildout:directory}/../mysql-no-read-etc.patch
+
+[mysqlinit]
+recipe = iw.recipe.cmd
+on_install = true
+on_update = true
+cmds =
+    test -e ${buildout:directory}/bin/mysql || \
+        ln -s ${mysql:location}/bin/mysql ${buildout:directory}/bin/mysql
+    test -e ${mysqlconf:datadir}/mysql && exit 0
+    mkdir -p ${mysqlconf:datadir}
+    ${mysql:location}/bin/mysql_install_db
+
+[pidproxy]
+recipe = zc.recipe.egg
+eggs = supervisor
+scripts = pidproxy
+
+[supervisor]
+recipe = collective.recipe.supervisor
+
+port = 127.0.0.1:29002
+serverurl = http://127.0.0.1:29002
+
+programs =
+    10 mysql ${buildout:directory}/bin/pidproxy [${mysqlconf:datadir}/mysqld.pid ${mysql:location}/bin/mysqld_safe] ${mysql:location} true
+



More information about the checkins mailing list