kasno ali bolje ikad nego nikad ... gips sisao sa ruke, jos uvek sam sporokucajuci ali ....
ovo je kako je startovan proxy, dakle kaze mo mu da na 127.0.0.1:3306 imamo "read/write" a na 192.168.89.1:3306 imamo read only bazu
Code:
[root@luckey mysql-proxy-0.8.1-linux-glibc2.3-x86-64bit]# bin/mysql-proxy --proxy-backend-addresses=127.0.0.1:3306 --proxy-read-only-backend-addresses=192.168.89.1:3306 --proxy-lua-script=share/doc/mysql-proxy/rw-splitting.lua --admin-address=127.0.0.1:3308 --admin-password=admin --admin-username=admin --admin-lua-script=share/doc/mysql-proxy/admin-sql.lua --proxy-skip-profiling --proxy-address=127.0.0.1:3333 &
na obe baze imamo izvrseno:
Code:
mysql> create table pera (a int) engine=myisam;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> grant all privileges on *.* to 'pera'@'%' identified by 'pera';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on *.* to 'pera'@'localhost' identified by 'pera';
Query OK, 0 rows affected (0.00 sec)
dakle imamo na obe baze praznu tabelu pera.
sada se kacimo na proxy:
Code:
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "insert into pera values (1),(2),(3),(4),(5),(6);"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "insert into pera values (1), (2);"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "insert into pera values (1), (2);"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "insert into pera values (1), (2);"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "insert into pera values (1), (2);"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "insert into pera values (1), (2);"
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "select * from pera;"
kao sto vidis ma koliko smo mi radili insert (i taj insert se izvrsavao bez greske) svaki select nam vraca nista.
Ako pogledamo sada sta se nalazi u bazi na 127.0.0.1 (to je ona koju smo rekli da je rw):
Code:
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3306 -upera -ppera test -e "select * from pera;"
+------+
| a |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 1 |
| 2 |
| 1 |
| 2 |
| 1 |
| 2 |
| 1 |
| 2 |
| 1 |
| 2 |
+------+
a kad pogledamo direktno onu na 192.168.89.1:3306 (ona je ro):
Code:
[arhimed@luckey ~]$ mysql --protocol=tcp --host=192.168.89.1 --port=3306 -upera -ppera test -e "select * from pera;"
dakle kao sto vidis, pravilno je write otisao uvek na jedan a read na ovaj drugi server.
sada ako malo zakomplikujemo:
Code:
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "insert into pera values (1), (2); select * from pera; "
kao sto vidis cak i ovako jedna za drugom, rw-split je razdvojio to kako treba, ali, ako imamo transakciju onda nema razdvajanja:
Code:
[arhimed@luckey ~]$ mysql --protocol=tcp --host=127.0.0.1 --port=3333 -upera -ppera test -e "begin; insert into pera values (1), (2); select * from pera; commit; "
+------+
| a |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 1 |
| 2 |
| 1 |
| 2 |
| 1 |
| 2 |
| 1 |
| 2 |
| 1 |
| 2 |
| 1 |
| 2 |
| 1 |
| 2 |
+------+
[arhimed@luckey ~]$
eto, nadam se da je jasno :)