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