Ubuntu A(192.168.220.130)
Ubuntu B(192.168.220.132)
安裝與設定步驟如下(為方便起見,我是使用root帳號去做)
如果還沒安裝mysql的話,在Ubuntu A與B上安裝mysql
$ sudo apt-get install mysql-server mysql-client
安裝mysql
在Ubuntu A建立複寫用帳號
$ mysql -p
進入mysql
mysql> create database testdb;
建立測試用的DB
mysql> GRANT REPLICATION SLAVE ON *.* TO [email protected] IDENTIFIED BY 'password';
建立一個有複寫權限的帳號repl,可從192.168.220.132連來,密碼為password
將兩台機器上的mysql資料統一
$ service mysql stop
將兩台的mysql停下
$ cd /var/lib/mysql
在Ubuntu A上切到mysql資料夾
$ tar -vxf /root/mysqldb.tar ./
將mysql下的資料全部壓縮起來
$ scp /root/mysqldb.tar [email protected]:/var/lib/mysql
mysqldb.tar 100% 21MB 10.4MB/s 00:02
將壓縮檔丟到Ubuntu B
到Ubuntu B
$ cd /var/lib/mysql
切到mysql資料夾
$ tar -xvf mysqldb.tar
將壓縮檔解壓,完成資料同步
修改設定檔
$ vi /etc/mysql/my.cnf
修改兩台的my.cnf設定檔
Ubuntu A,在[mysqld]下面修改這些,如果沒有則新增
server-id = 1 (隨意設,兩台要不一樣)
log_bin = /var/log/mysql/mysql-bin.log (我只有將#拿掉,路徑用預設的)
binlog_do_db = testdb (需要同步的database)
#binlog_ignore_db = include_database_name (不需要同步的database)
Ubuntu B,在[mysqld]下面修改這些,如果沒有則新增
server-id = 2 (隨意設,兩台要不一樣)
log_bin = /var/log/mysql/mysql-bin.log (我只有將#拿掉,路徑用預設的)
binlog_do_db = testdb (需要同步的database)
#binlog_ignore_db = include_database_name (不需要同步的database)
master-host =192.168.220.130 (Master的ip)
master-user =repl (Master 給replication的帳號)
master-password =password (該帳號的密碼)
master-port =3306 (Master mysql使用的port)
master-connect-retry =60 (多久retry一次)
啟動複寫
$ service mysql start
將兩台的mysql啟動
mysql> show master status;
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 106 | testdb | | +------------------+----------+--------------+------------------+
顯示master的資訊,File與Position這兩個欄位是等等要使用的
到Ubuntu B
$ mysql -p
進入mysql
mysql> slave stop;
將 slave 停下
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.220.130',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=106;
將Master的資訊設給Slave
mysql> slave start;
啟動slave
mysql> show slave status\G;
顯示salve資訊,下面這兩項都是Yes的話就表示設成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
測試資料同步
在Ubuntu A
mysql> use testdb;
指定testdb;
mysql> create table tbl_test(si int) engine=InnoDB;
創一個測試table
mysql> insert into tbl_test (si) values(1);
塞入一筆資料
到Ubuntu B
mysql> use testdb;
指定testdb;
mysql> select * from tbl_test;
+------+ | si | +------+ | 1 | +------+
1 row in set (0.05 sec)
如果有資料表示同步測試成功。
No comments:
Post a Comment