Environment:
RHEL: 5.3
MySQL: 5.1.54
Master :
1. MySQL user and group
[codesyntax lang=”bash”]
$ groupadd mysql $ useradd -g mysql mysql
[/codesyntax]
2. Download and install MySQL
[codesyntax lang=”bash”]
$ wget http://mysql.ntu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.54.tar.gz $ tar xzf mysql-5.1.54.tar.gz $ cd mysql-5.1.54 $ ./configure --prefix=/usr/local/webserver/mysql-5.1.54-master --enable-assembler --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-extra-charsets=all --enable-thread-safe-client --with-big-tables --with-readline --with-ssl $ make $ make install
[/codesyntax]
3. Create database
[codesyntax lang=”bash”]
$ cd /usr/local/webserver/mysql-5.1.54-master/ # database data located at $ ./bin/mysql_install_db --datadir=/data/mysql-5.1.54/master
[/codesyntax]
4. Master config
[codesyntax lang=”bash”]
$ cp /data/soft_misc/mysql-5.1.54/support-files/my-huge.cnf /data/mysql-5.1.54/master/my.cnf $ vi /data/mysql-5.1.54/master/my.cnf port = 3406 socket = /tmp/mysql.sock datadir = /data/mysql-5.1.54/master # databases that need to backup binlog-do-db = appdb1 binlog-do-db = appdb2 binlog-ignore-db = mysql binlog-ignore-db = test
[/codesyntax]
5. Password for root
[codesyntax lang=”bash”]
$ /usr/local/webserver/mysql-5.1.54-master/bin/mysqladmin -uroot -hlocalhost -P3406 -p password root
[/codesyntax]
6. Launch master
[codesyntax lang=”bash”]
$ chown -R mysql.mysql /data/mysql-5.1.54/master/ $ /bin/sh /usr/local/webserver/mysql-5.1.54-master/bin/mysqld_safe --defaults-file=/data/mysql-5.1.54/master/my.cnf &
[/codesyntax]
7. Create account for replication
[codesyntax lang=”bash”]
$ mysql -hlocalhost -uroot -p mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysqlrepl'@'localhost' IDENTIFIED BY '123456'; mysql> FLUSH PRIVILEGES;
[/codesyntax]
Slave :
1. Copy master application and data as slave
[codesyntax lang=”bash”]
$ cd /usr/local/webserver/ $ cp -Rp mysql-5.1.54-master/ mysql-5.1.54-slave1/ $ cd /data/mysql-5.1.54/ $ cp -Rp master/ slave1/
[/codesyntax]
2. Slave Config
[codesyntax lang=”bash”]
$ vi /data/mysql-5.1.54/slave1/my.cnf port = 3416 socket = /tmp/mysql-slave1.sock datadir = /data/mysql-5.1.54/slave1 server-id = 11 master-host = localhost master-port = 3406 master-user = mysqlrepl master-password = 123456 # connection retry time # master-connect-retry = 60 # read only for slave if needed # read-only = 1 # databases which need to backup replicate-do-db = appdb1 replicate-do-db = appdb2 # databases ignored replicate-ignore-db = mysql replicate-ignore-db = test
[/codesyntax]
3. Launch Slave
[codesyntax lang=”bash”]
$ /bin/sh /usr/local/webserver/mysql-5.1.54-slave1/bin/mysqld_safe --defaults-file=/data/mysql-5.1.54/slave1/my.cnf &
[/codesyntax]
Test :
1. Check both master and slave were launched
[codesyntax lang=”bash”]
$ ps aux | grep mysql
[/codesyntax]
2. Try creating something in master
[codesyntax lang=”bash”]
# go to master $ mysql -hlocalhost -uroot -p mysql> SHOW MASTER STATUS; mysql> CREATE DATABASE IF NOT EXISTS appdb1; mysql> USE appdb1; mysql> CREATE TABLE abc (id int(4));
[/codesyntax]
3. Check slave to see table ‘abc’
[codesyntax lang=”bash”]
$ mysql -hlocalhost -uroot -P3416 -S /tmp/mysql-slave1.sock -p mysql> SHOW DATABASES; mysql> USE appdb1; mysql> SHOW TABLES;
[/codesyntax]