I starting trying to set up a test environment for feeling out master-master replication with mysql. I can do all this on one machine by running 2 mysqld processes from different configurations, on different ports, sockets, data directories, users etcetera.
All the stuff for the “A” side will be “-a” and “B” “-b”
cp /etc/my.cnf /etc/my-a.cnf /etc/my-b.cnf mkdir /var/lib/mysql-a mkdir /var/lib/mysql-b
Then edit your cnf files for each side.
# Note this is not meant to be pasted in as you whole conf file! These are the params you need to find and change. user = mysql socket = /var/run/mysqld/mysqld-a.sock port = 3310 basedir = /usr datadir = /var/lib/mysql-a tmpdir = /tmp/mysql-a
Before we get into setting up the actual replication lets that we can run these 2 mysqlds at the same time. Try to start one side.
mysqld --defaults-file=/etc/mysql/my-a-side.cnf &
Apparmor! Arg. Add this for a and b sides:
/var/lib/mysql-a/ r, /var/lib/mysql-a/** rwk, /var/run/mysqld/mysqld-a.pid w, /var/run/mysqld/mysqld-a.sock w,
Try to start up both. Wrap that exec up into a script and make one for the b side too.
./start-a-sides.sh && ./start-b-sides.sh
and to shut them down
mysqladmin -u root -P 3310 -h 127.0.0.1 shutdown
We’ll need to setups the datadirs - or if you have a data to start with you can put it in the data dir. Or else something like this for each of your $DATADIRs.
mysql_install_db --user=mysql --datadir=$DATADIR